feat: shit shit

This commit is contained in:
2025-08-15 11:10:28 +03:00
parent 0c86228095
commit 38acc4a443
1402 changed files with 453050 additions and 111 deletions

3
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "api/proto/v1"] [submodule "api/proto/v1"]
path = api/proto/v1 path = api/proto/v1
url = https://git.denco.store/fakz9/Sipro-Marketplaces-Protos.git url = https://git.denco.store/fakz9/Sipro-Marketplaces-Protos.git
[submodule "pkg/api/yandex/raw"]
path = pkg/api/yandex/raw
url = https://github.com/yandex-market/yandex-market-partner-api.git

View File

@@ -10,6 +10,7 @@ import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl" protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect" reflect "reflect"
sync "sync"
unsafe "unsafe" unsafe "unsafe"
) )
@@ -20,20 +21,931 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
type CalculateProductTariffsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
MarketplaceId int64 `protobuf:"varint,1,opt,name=marketplace_id,json=marketplaceId,proto3" json:"marketplace_id,omitempty"`
Parameters *CalculateProductTariffsRequest_Parameters `protobuf:"bytes,2,opt,name=parameters,proto3" json:"parameters,omitempty"`
Offers []*CalculateProductTariffsRequest_Offers `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsRequest) Reset() {
*x = CalculateProductTariffsRequest{}
mi := &file_yandexmarket_products_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsRequest) ProtoMessage() {}
func (x *CalculateProductTariffsRequest) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsRequest.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsRequest) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{0}
}
func (x *CalculateProductTariffsRequest) GetMarketplaceId() int64 {
if x != nil {
return x.MarketplaceId
}
return 0
}
func (x *CalculateProductTariffsRequest) GetParameters() *CalculateProductTariffsRequest_Parameters {
if x != nil {
return x.Parameters
}
return nil
}
func (x *CalculateProductTariffsRequest) GetOffers() []*CalculateProductTariffsRequest_Offers {
if x != nil {
return x.Offers
}
return nil
}
type CalculateProductTariffsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Offers []*CalculateProductTariffsResponse_Offers `protobuf:"bytes,1,rep,name=offers,proto3" json:"offers,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsResponse) Reset() {
*x = CalculateProductTariffsResponse{}
mi := &file_yandexmarket_products_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsResponse) ProtoMessage() {}
func (x *CalculateProductTariffsResponse) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsResponse.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsResponse) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{1}
}
func (x *CalculateProductTariffsResponse) GetOffers() []*CalculateProductTariffsResponse_Offers {
if x != nil {
return x.Offers
}
return nil
}
type GetProductsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
MarketplaceId int64 `protobuf:"varint,1,opt,name=marketplace_id,json=marketplaceId,proto3" json:"marketplace_id,omitempty"`
OfferIds []string `protobuf:"bytes,2,rep,name=offer_ids,json=offerIds,proto3" json:"offer_ids,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetProductsRequest) Reset() {
*x = GetProductsRequest{}
mi := &file_yandexmarket_products_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetProductsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProductsRequest) ProtoMessage() {}
func (x *GetProductsRequest) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetProductsRequest.ProtoReflect.Descriptor instead.
func (*GetProductsRequest) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{2}
}
func (x *GetProductsRequest) GetMarketplaceId() int64 {
if x != nil {
return x.MarketplaceId
}
return 0
}
func (x *GetProductsRequest) GetOfferIds() []string {
if x != nil {
return x.OfferIds
}
return nil
}
type GetProductsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Offers []*GetProductsResponse_Offer `protobuf:"bytes,1,rep,name=offers,proto3" json:"offers,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetProductsResponse) Reset() {
*x = GetProductsResponse{}
mi := &file_yandexmarket_products_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetProductsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProductsResponse) ProtoMessage() {}
func (x *GetProductsResponse) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetProductsResponse.ProtoReflect.Descriptor instead.
func (*GetProductsResponse) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{3}
}
func (x *GetProductsResponse) GetOffers() []*GetProductsResponse_Offer {
if x != nil {
return x.Offers
}
return nil
}
type CalculateProductTariffsRequest_Offers struct {
state protoimpl.MessageState `protogen:"open.v1"`
CategoryId int64 `protobuf:"varint,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"`
Price int64 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"`
Length int64 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"`
Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"`
Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
Weight int64 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"`
Quantity int64 `protobuf:"varint,7,opt,name=quantity,proto3" json:"quantity,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsRequest_Offers) Reset() {
*x = CalculateProductTariffsRequest_Offers{}
mi := &file_yandexmarket_products_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsRequest_Offers) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsRequest_Offers) ProtoMessage() {}
func (x *CalculateProductTariffsRequest_Offers) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsRequest_Offers.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsRequest_Offers) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{0, 0}
}
func (x *CalculateProductTariffsRequest_Offers) GetCategoryId() int64 {
if x != nil {
return x.CategoryId
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetLength() int64 {
if x != nil {
return x.Length
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetWidth() int64 {
if x != nil {
return x.Width
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetHeight() int64 {
if x != nil {
return x.Height
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetWeight() int64 {
if x != nil {
return x.Weight
}
return 0
}
func (x *CalculateProductTariffsRequest_Offers) GetQuantity() int64 {
if x != nil {
return x.Quantity
}
return 0
}
type CalculateProductTariffsRequest_Parameters struct {
state protoimpl.MessageState `protogen:"open.v1"`
CampaignId int64 `protobuf:"varint,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"`
SellingProgram string `protobuf:"bytes,2,opt,name=selling_program,json=sellingProgram,proto3" json:"selling_program,omitempty"`
Frequency string `protobuf:"bytes,3,opt,name=frequency,proto3" json:"frequency,omitempty"`
Currency string `protobuf:"bytes,4,opt,name=currency,proto3" json:"currency,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsRequest_Parameters) Reset() {
*x = CalculateProductTariffsRequest_Parameters{}
mi := &file_yandexmarket_products_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsRequest_Parameters) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsRequest_Parameters) ProtoMessage() {}
func (x *CalculateProductTariffsRequest_Parameters) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsRequest_Parameters.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsRequest_Parameters) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{0, 1}
}
func (x *CalculateProductTariffsRequest_Parameters) GetCampaignId() int64 {
if x != nil {
return x.CampaignId
}
return 0
}
func (x *CalculateProductTariffsRequest_Parameters) GetSellingProgram() string {
if x != nil {
return x.SellingProgram
}
return ""
}
func (x *CalculateProductTariffsRequest_Parameters) GetFrequency() string {
if x != nil {
return x.Frequency
}
return ""
}
func (x *CalculateProductTariffsRequest_Parameters) GetCurrency() string {
if x != nil {
return x.Currency
}
return ""
}
type CalculateProductTariffsResponse_Offer struct {
state protoimpl.MessageState `protogen:"open.v1"`
CategoryId int64 `protobuf:"varint,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"`
Price int64 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"`
Length int64 `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"`
Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"`
Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
Weight int64 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"`
Quantity int64 `protobuf:"varint,7,opt,name=quantity,proto3" json:"quantity,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsResponse_Offer) Reset() {
*x = CalculateProductTariffsResponse_Offer{}
mi := &file_yandexmarket_products_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsResponse_Offer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsResponse_Offer) ProtoMessage() {}
func (x *CalculateProductTariffsResponse_Offer) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsResponse_Offer.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsResponse_Offer) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{1, 0}
}
func (x *CalculateProductTariffsResponse_Offer) GetCategoryId() int64 {
if x != nil {
return x.CategoryId
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetLength() int64 {
if x != nil {
return x.Length
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetWidth() int64 {
if x != nil {
return x.Width
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetHeight() int64 {
if x != nil {
return x.Height
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetWeight() int64 {
if x != nil {
return x.Weight
}
return 0
}
func (x *CalculateProductTariffsResponse_Offer) GetQuantity() int64 {
if x != nil {
return x.Quantity
}
return 0
}
type CalculateProductTariffsResponse_Parameter struct {
state protoimpl.MessageState `protogen:"open.v1"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsResponse_Parameter) Reset() {
*x = CalculateProductTariffsResponse_Parameter{}
mi := &file_yandexmarket_products_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsResponse_Parameter) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsResponse_Parameter) ProtoMessage() {}
func (x *CalculateProductTariffsResponse_Parameter) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsResponse_Parameter.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsResponse_Parameter) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{1, 1}
}
func (x *CalculateProductTariffsResponse_Parameter) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CalculateProductTariffsResponse_Parameter) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
type CalculateProductTariffsResponse_Tariff struct {
state protoimpl.MessageState `protogen:"open.v1"`
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
Currency string `protobuf:"bytes,3,opt,name=currency,proto3" json:"currency,omitempty"`
Parameters []*CalculateProductTariffsResponse_Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsResponse_Tariff) Reset() {
*x = CalculateProductTariffsResponse_Tariff{}
mi := &file_yandexmarket_products_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsResponse_Tariff) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsResponse_Tariff) ProtoMessage() {}
func (x *CalculateProductTariffsResponse_Tariff) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsResponse_Tariff.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsResponse_Tariff) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{1, 2}
}
func (x *CalculateProductTariffsResponse_Tariff) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *CalculateProductTariffsResponse_Tariff) GetAmount() int64 {
if x != nil {
return x.Amount
}
return 0
}
func (x *CalculateProductTariffsResponse_Tariff) GetCurrency() string {
if x != nil {
return x.Currency
}
return ""
}
func (x *CalculateProductTariffsResponse_Tariff) GetParameters() []*CalculateProductTariffsResponse_Parameter {
if x != nil {
return x.Parameters
}
return nil
}
type CalculateProductTariffsResponse_Offers struct {
state protoimpl.MessageState `protogen:"open.v1"`
Offer *CalculateProductTariffsResponse_Offer `protobuf:"bytes,1,opt,name=offer,proto3" json:"offer,omitempty"`
Tariffs []*CalculateProductTariffsResponse_Tariff `protobuf:"bytes,2,rep,name=tariffs,proto3" json:"tariffs,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CalculateProductTariffsResponse_Offers) Reset() {
*x = CalculateProductTariffsResponse_Offers{}
mi := &file_yandexmarket_products_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CalculateProductTariffsResponse_Offers) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CalculateProductTariffsResponse_Offers) ProtoMessage() {}
func (x *CalculateProductTariffsResponse_Offers) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CalculateProductTariffsResponse_Offers.ProtoReflect.Descriptor instead.
func (*CalculateProductTariffsResponse_Offers) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{1, 3}
}
func (x *CalculateProductTariffsResponse_Offers) GetOffer() *CalculateProductTariffsResponse_Offer {
if x != nil {
return x.Offer
}
return nil
}
func (x *CalculateProductTariffsResponse_Offers) GetTariffs() []*CalculateProductTariffsResponse_Tariff {
if x != nil {
return x.Tariffs
}
return nil
}
type GetProductsResponse_Offer struct {
state protoimpl.MessageState `protogen:"open.v1"`
MarketCategoryId int64 `protobuf:"varint,1,opt,name=market_category_id,json=marketCategoryId,proto3" json:"market_category_id,omitempty"`
WeightDimensions *GetProductsResponse_Offer_WeightDimensions `protobuf:"bytes,2,opt,name=weight_dimensions,json=weightDimensions,proto3" json:"weight_dimensions,omitempty"`
BasicPrice *GetProductsResponse_Offer_BasicPrice `protobuf:"bytes,3,opt,name=basic_price,json=basicPrice,proto3" json:"basic_price,omitempty"`
OfferId string `protobuf:"bytes,4,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetProductsResponse_Offer) Reset() {
*x = GetProductsResponse_Offer{}
mi := &file_yandexmarket_products_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetProductsResponse_Offer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProductsResponse_Offer) ProtoMessage() {}
func (x *GetProductsResponse_Offer) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetProductsResponse_Offer.ProtoReflect.Descriptor instead.
func (*GetProductsResponse_Offer) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{3, 0}
}
func (x *GetProductsResponse_Offer) GetMarketCategoryId() int64 {
if x != nil {
return x.MarketCategoryId
}
return 0
}
func (x *GetProductsResponse_Offer) GetWeightDimensions() *GetProductsResponse_Offer_WeightDimensions {
if x != nil {
return x.WeightDimensions
}
return nil
}
func (x *GetProductsResponse_Offer) GetBasicPrice() *GetProductsResponse_Offer_BasicPrice {
if x != nil {
return x.BasicPrice
}
return nil
}
func (x *GetProductsResponse_Offer) GetOfferId() string {
if x != nil {
return x.OfferId
}
return ""
}
type GetProductsResponse_Offer_WeightDimensions struct {
state protoimpl.MessageState `protogen:"open.v1"`
Length float32 `protobuf:"fixed32,1,opt,name=length,proto3" json:"length,omitempty"`
Width float32 `protobuf:"fixed32,2,opt,name=width,proto3" json:"width,omitempty"`
Height float32 `protobuf:"fixed32,3,opt,name=height,proto3" json:"height,omitempty"`
Weight float32 `protobuf:"fixed32,4,opt,name=weight,proto3" json:"weight,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetProductsResponse_Offer_WeightDimensions) Reset() {
*x = GetProductsResponse_Offer_WeightDimensions{}
mi := &file_yandexmarket_products_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetProductsResponse_Offer_WeightDimensions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProductsResponse_Offer_WeightDimensions) ProtoMessage() {}
func (x *GetProductsResponse_Offer_WeightDimensions) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetProductsResponse_Offer_WeightDimensions.ProtoReflect.Descriptor instead.
func (*GetProductsResponse_Offer_WeightDimensions) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{3, 0, 0}
}
func (x *GetProductsResponse_Offer_WeightDimensions) GetLength() float32 {
if x != nil {
return x.Length
}
return 0
}
func (x *GetProductsResponse_Offer_WeightDimensions) GetWidth() float32 {
if x != nil {
return x.Width
}
return 0
}
func (x *GetProductsResponse_Offer_WeightDimensions) GetHeight() float32 {
if x != nil {
return x.Height
}
return 0
}
func (x *GetProductsResponse_Offer_WeightDimensions) GetWeight() float32 {
if x != nil {
return x.Weight
}
return 0
}
type GetProductsResponse_Offer_BasicPrice struct {
state protoimpl.MessageState `protogen:"open.v1"`
Value float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetProductsResponse_Offer_BasicPrice) Reset() {
*x = GetProductsResponse_Offer_BasicPrice{}
mi := &file_yandexmarket_products_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetProductsResponse_Offer_BasicPrice) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProductsResponse_Offer_BasicPrice) ProtoMessage() {}
func (x *GetProductsResponse_Offer_BasicPrice) ProtoReflect() protoreflect.Message {
mi := &file_yandexmarket_products_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetProductsResponse_Offer_BasicPrice.ProtoReflect.Descriptor instead.
func (*GetProductsResponse_Offer_BasicPrice) Descriptor() ([]byte, []int) {
return file_yandexmarket_products_proto_rawDescGZIP(), []int{3, 0, 1}
}
func (x *GetProductsResponse_Offer_BasicPrice) GetValue() float32 {
if x != nil {
return x.Value
}
return 0
}
var File_yandexmarket_products_proto protoreflect.FileDescriptor var File_yandexmarket_products_proto protoreflect.FileDescriptor
const file_yandexmarket_products_proto_rawDesc = "" + const file_yandexmarket_products_proto_rawDesc = "" +
"\n" + "\n" +
"\x1byandexmarket/products.proto\x12\x15yandexmarket.products2\x11\n" + "\x1byandexmarket/products.proto\x12\x15yandexmarket.products\"\xce\x04\n" +
"\x0fProductsServiceB\x19Z\x17./yandexmarket/productsb\x06proto3" "\x1eCalculateProductTariffsRequest\x12%\n" +
"\x0emarketplace_id\x18\x01 \x01(\x03R\rmarketplaceId\x12`\n" +
"\n" +
"parameters\x18\x02 \x01(\v2@.yandexmarket.products.CalculateProductTariffsRequest.ParametersR\n" +
"parameters\x12T\n" +
"\x06offers\x18\x03 \x03(\v2<.yandexmarket.products.CalculateProductTariffsRequest.OffersR\x06offers\x1a\xb9\x01\n" +
"\x06Offers\x12\x1f\n" +
"\vcategory_id\x18\x01 \x01(\x03R\n" +
"categoryId\x12\x14\n" +
"\x05price\x18\x02 \x01(\x03R\x05price\x12\x16\n" +
"\x06length\x18\x03 \x01(\x03R\x06length\x12\x14\n" +
"\x05width\x18\x04 \x01(\x03R\x05width\x12\x16\n" +
"\x06height\x18\x05 \x01(\x03R\x06height\x12\x16\n" +
"\x06weight\x18\x06 \x01(\x03R\x06weight\x12\x1a\n" +
"\bquantity\x18\a \x01(\x03R\bquantity\x1a\x90\x01\n" +
"\n" +
"Parameters\x12\x1f\n" +
"\vcampaign_id\x18\x01 \x01(\x03R\n" +
"campaignId\x12'\n" +
"\x0fselling_program\x18\x02 \x01(\tR\x0esellingProgram\x12\x1c\n" +
"\tfrequency\x18\x03 \x01(\tR\tfrequency\x12\x1a\n" +
"\bcurrency\x18\x04 \x01(\tR\bcurrency\"\xd7\x05\n" +
"\x1fCalculateProductTariffsResponse\x12U\n" +
"\x06offers\x18\x01 \x03(\v2=.yandexmarket.products.CalculateProductTariffsResponse.OffersR\x06offers\x1a\xb8\x01\n" +
"\x05Offer\x12\x1f\n" +
"\vcategory_id\x18\x01 \x01(\x03R\n" +
"categoryId\x12\x14\n" +
"\x05price\x18\x02 \x01(\x03R\x05price\x12\x16\n" +
"\x06length\x18\x03 \x01(\x03R\x06length\x12\x14\n" +
"\x05width\x18\x04 \x01(\x03R\x05width\x12\x16\n" +
"\x06height\x18\x05 \x01(\x03R\x06height\x12\x16\n" +
"\x06weight\x18\x06 \x01(\x03R\x06weight\x12\x1a\n" +
"\bquantity\x18\a \x01(\x03R\bquantity\x1a5\n" +
"\tParameter\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value\x1a\xb2\x01\n" +
"\x06Tariff\x12\x12\n" +
"\x04type\x18\x01 \x01(\tR\x04type\x12\x16\n" +
"\x06amount\x18\x02 \x01(\x03R\x06amount\x12\x1a\n" +
"\bcurrency\x18\x03 \x01(\tR\bcurrency\x12`\n" +
"\n" +
"parameters\x18\x04 \x03(\v2@.yandexmarket.products.CalculateProductTariffsResponse.ParameterR\n" +
"parameters\x1a\xb5\x01\n" +
"\x06Offers\x12R\n" +
"\x05offer\x18\x01 \x01(\v2<.yandexmarket.products.CalculateProductTariffsResponse.OfferR\x05offer\x12W\n" +
"\atariffs\x18\x02 \x03(\v2=.yandexmarket.products.CalculateProductTariffsResponse.TariffR\atariffs\"X\n" +
"\x12GetProductsRequest\x12%\n" +
"\x0emarketplace_id\x18\x01 \x01(\x03R\rmarketplaceId\x12\x1b\n" +
"\toffer_ids\x18\x02 \x03(\tR\bofferIds\"\x96\x04\n" +
"\x13GetProductsResponse\x12H\n" +
"\x06offers\x18\x01 \x03(\v20.yandexmarket.products.GetProductsResponse.OfferR\x06offers\x1a\xb4\x03\n" +
"\x05Offer\x12,\n" +
"\x12market_category_id\x18\x01 \x01(\x03R\x10marketCategoryId\x12n\n" +
"\x11weight_dimensions\x18\x02 \x01(\v2A.yandexmarket.products.GetProductsResponse.Offer.WeightDimensionsR\x10weightDimensions\x12\\\n" +
"\vbasic_price\x18\x03 \x01(\v2;.yandexmarket.products.GetProductsResponse.Offer.BasicPriceR\n" +
"basicPrice\x12\x19\n" +
"\boffer_id\x18\x04 \x01(\tR\aofferId\x1ap\n" +
"\x10WeightDimensions\x12\x16\n" +
"\x06length\x18\x01 \x01(\x02R\x06length\x12\x14\n" +
"\x05width\x18\x02 \x01(\x02R\x05width\x12\x16\n" +
"\x06height\x18\x03 \x01(\x02R\x06height\x12\x16\n" +
"\x06weight\x18\x04 \x01(\x02R\x06weight\x1a\"\n" +
"\n" +
"BasicPrice\x12\x14\n" +
"\x05value\x18\x01 \x01(\x02R\x05value2\x86\x02\n" +
"\x0fProductsService\x12\x8a\x01\n" +
"\x17CalculateProductTariffs\x125.yandexmarket.products.CalculateProductTariffsRequest\x1a6.yandexmarket.products.CalculateProductTariffsResponse0\x01\x12f\n" +
"\vGetProducts\x12).yandexmarket.products.GetProductsRequest\x1a*.yandexmarket.products.GetProductsResponse0\x01B\x19Z\x17./yandexmarket/productsb\x06proto3"
var file_yandexmarket_products_proto_goTypes = []any{} var (
file_yandexmarket_products_proto_rawDescOnce sync.Once
file_yandexmarket_products_proto_rawDescData []byte
)
func file_yandexmarket_products_proto_rawDescGZIP() []byte {
file_yandexmarket_products_proto_rawDescOnce.Do(func() {
file_yandexmarket_products_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandexmarket_products_proto_rawDesc), len(file_yandexmarket_products_proto_rawDesc)))
})
return file_yandexmarket_products_proto_rawDescData
}
var file_yandexmarket_products_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_yandexmarket_products_proto_goTypes = []any{
(*CalculateProductTariffsRequest)(nil), // 0: yandexmarket.products.CalculateProductTariffsRequest
(*CalculateProductTariffsResponse)(nil), // 1: yandexmarket.products.CalculateProductTariffsResponse
(*GetProductsRequest)(nil), // 2: yandexmarket.products.GetProductsRequest
(*GetProductsResponse)(nil), // 3: yandexmarket.products.GetProductsResponse
(*CalculateProductTariffsRequest_Offers)(nil), // 4: yandexmarket.products.CalculateProductTariffsRequest.Offers
(*CalculateProductTariffsRequest_Parameters)(nil), // 5: yandexmarket.products.CalculateProductTariffsRequest.Parameters
(*CalculateProductTariffsResponse_Offer)(nil), // 6: yandexmarket.products.CalculateProductTariffsResponse.Offer
(*CalculateProductTariffsResponse_Parameter)(nil), // 7: yandexmarket.products.CalculateProductTariffsResponse.Parameter
(*CalculateProductTariffsResponse_Tariff)(nil), // 8: yandexmarket.products.CalculateProductTariffsResponse.Tariff
(*CalculateProductTariffsResponse_Offers)(nil), // 9: yandexmarket.products.CalculateProductTariffsResponse.Offers
(*GetProductsResponse_Offer)(nil), // 10: yandexmarket.products.GetProductsResponse.Offer
(*GetProductsResponse_Offer_WeightDimensions)(nil), // 11: yandexmarket.products.GetProductsResponse.Offer.WeightDimensions
(*GetProductsResponse_Offer_BasicPrice)(nil), // 12: yandexmarket.products.GetProductsResponse.Offer.BasicPrice
}
var file_yandexmarket_products_proto_depIdxs = []int32{ var file_yandexmarket_products_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type 5, // 0: yandexmarket.products.CalculateProductTariffsRequest.parameters:type_name -> yandexmarket.products.CalculateProductTariffsRequest.Parameters
0, // [0:0] is the sub-list for method input_type 4, // 1: yandexmarket.products.CalculateProductTariffsRequest.offers:type_name -> yandexmarket.products.CalculateProductTariffsRequest.Offers
0, // [0:0] is the sub-list for extension type_name 9, // 2: yandexmarket.products.CalculateProductTariffsResponse.offers:type_name -> yandexmarket.products.CalculateProductTariffsResponse.Offers
0, // [0:0] is the sub-list for extension extendee 10, // 3: yandexmarket.products.GetProductsResponse.offers:type_name -> yandexmarket.products.GetProductsResponse.Offer
0, // [0:0] is the sub-list for field type_name 7, // 4: yandexmarket.products.CalculateProductTariffsResponse.Tariff.parameters:type_name -> yandexmarket.products.CalculateProductTariffsResponse.Parameter
6, // 5: yandexmarket.products.CalculateProductTariffsResponse.Offers.offer:type_name -> yandexmarket.products.CalculateProductTariffsResponse.Offer
8, // 6: yandexmarket.products.CalculateProductTariffsResponse.Offers.tariffs:type_name -> yandexmarket.products.CalculateProductTariffsResponse.Tariff
11, // 7: yandexmarket.products.GetProductsResponse.Offer.weight_dimensions:type_name -> yandexmarket.products.GetProductsResponse.Offer.WeightDimensions
12, // 8: yandexmarket.products.GetProductsResponse.Offer.basic_price:type_name -> yandexmarket.products.GetProductsResponse.Offer.BasicPrice
0, // 9: yandexmarket.products.ProductsService.CalculateProductTariffs:input_type -> yandexmarket.products.CalculateProductTariffsRequest
2, // 10: yandexmarket.products.ProductsService.GetProducts:input_type -> yandexmarket.products.GetProductsRequest
1, // 11: yandexmarket.products.ProductsService.CalculateProductTariffs:output_type -> yandexmarket.products.CalculateProductTariffsResponse
3, // 12: yandexmarket.products.ProductsService.GetProducts:output_type -> yandexmarket.products.GetProductsResponse
11, // [11:13] is the sub-list for method output_type
9, // [9:11] is the sub-list for method input_type
9, // [9:9] is the sub-list for extension type_name
9, // [9:9] is the sub-list for extension extendee
0, // [0:9] is the sub-list for field type_name
} }
func init() { file_yandexmarket_products_proto_init() } func init() { file_yandexmarket_products_proto_init() }
@@ -47,12 +959,13 @@ func file_yandexmarket_products_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandexmarket_products_proto_rawDesc), len(file_yandexmarket_products_proto_rawDesc)), RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandexmarket_products_proto_rawDesc), len(file_yandexmarket_products_proto_rawDesc)),
NumEnums: 0, NumEnums: 0,
NumMessages: 0, NumMessages: 13,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
GoTypes: file_yandexmarket_products_proto_goTypes, GoTypes: file_yandexmarket_products_proto_goTypes,
DependencyIndexes: file_yandexmarket_products_proto_depIdxs, DependencyIndexes: file_yandexmarket_products_proto_depIdxs,
MessageInfos: file_yandexmarket_products_proto_msgTypes,
}.Build() }.Build()
File_yandexmarket_products_proto = out.File File_yandexmarket_products_proto = out.File
file_yandexmarket_products_proto_goTypes = nil file_yandexmarket_products_proto_goTypes = nil

View File

@@ -7,7 +7,10 @@
package products package products
import ( import (
context "context"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
) )
// This is a compile-time assertion to ensure that this generated file // This is a compile-time assertion to ensure that this generated file
@@ -15,10 +18,17 @@ import (
// Requires gRPC-Go v1.64.0 or later. // Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9 const _ = grpc.SupportPackageIsVersion9
const (
ProductsService_CalculateProductTariffs_FullMethodName = "/yandexmarket.products.ProductsService/CalculateProductTariffs"
ProductsService_GetProducts_FullMethodName = "/yandexmarket.products.ProductsService/GetProducts"
)
// ProductsServiceClient is the client API for ProductsService service. // ProductsServiceClient is the client API for ProductsService service.
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type ProductsServiceClient interface { type ProductsServiceClient interface {
CalculateProductTariffs(ctx context.Context, in *CalculateProductTariffsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[CalculateProductTariffsResponse], error)
GetProducts(ctx context.Context, in *GetProductsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetProductsResponse], error)
} }
type productsServiceClient struct { type productsServiceClient struct {
@@ -29,10 +39,50 @@ func NewProductsServiceClient(cc grpc.ClientConnInterface) ProductsServiceClient
return &productsServiceClient{cc} return &productsServiceClient{cc}
} }
func (c *productsServiceClient) CalculateProductTariffs(ctx context.Context, in *CalculateProductTariffsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[CalculateProductTariffsResponse], error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
stream, err := c.cc.NewStream(ctx, &ProductsService_ServiceDesc.Streams[0], ProductsService_CalculateProductTariffs_FullMethodName, cOpts...)
if err != nil {
return nil, err
}
x := &grpc.GenericClientStream[CalculateProductTariffsRequest, CalculateProductTariffsResponse]{ClientStream: stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProductsService_CalculateProductTariffsClient = grpc.ServerStreamingClient[CalculateProductTariffsResponse]
func (c *productsServiceClient) GetProducts(ctx context.Context, in *GetProductsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetProductsResponse], error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
stream, err := c.cc.NewStream(ctx, &ProductsService_ServiceDesc.Streams[1], ProductsService_GetProducts_FullMethodName, cOpts...)
if err != nil {
return nil, err
}
x := &grpc.GenericClientStream[GetProductsRequest, GetProductsResponse]{ClientStream: stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProductsService_GetProductsClient = grpc.ServerStreamingClient[GetProductsResponse]
// ProductsServiceServer is the server API for ProductsService service. // ProductsServiceServer is the server API for ProductsService service.
// All implementations must embed UnimplementedProductsServiceServer // All implementations must embed UnimplementedProductsServiceServer
// for forward compatibility. // for forward compatibility.
type ProductsServiceServer interface { type ProductsServiceServer interface {
CalculateProductTariffs(*CalculateProductTariffsRequest, grpc.ServerStreamingServer[CalculateProductTariffsResponse]) error
GetProducts(*GetProductsRequest, grpc.ServerStreamingServer[GetProductsResponse]) error
mustEmbedUnimplementedProductsServiceServer() mustEmbedUnimplementedProductsServiceServer()
} }
@@ -43,6 +93,12 @@ type ProductsServiceServer interface {
// pointer dereference when methods are called. // pointer dereference when methods are called.
type UnimplementedProductsServiceServer struct{} type UnimplementedProductsServiceServer struct{}
func (UnimplementedProductsServiceServer) CalculateProductTariffs(*CalculateProductTariffsRequest, grpc.ServerStreamingServer[CalculateProductTariffsResponse]) error {
return status.Errorf(codes.Unimplemented, "method CalculateProductTariffs not implemented")
}
func (UnimplementedProductsServiceServer) GetProducts(*GetProductsRequest, grpc.ServerStreamingServer[GetProductsResponse]) error {
return status.Errorf(codes.Unimplemented, "method GetProducts not implemented")
}
func (UnimplementedProductsServiceServer) mustEmbedUnimplementedProductsServiceServer() {} func (UnimplementedProductsServiceServer) mustEmbedUnimplementedProductsServiceServer() {}
func (UnimplementedProductsServiceServer) testEmbeddedByValue() {} func (UnimplementedProductsServiceServer) testEmbeddedByValue() {}
@@ -64,6 +120,28 @@ func RegisterProductsServiceServer(s grpc.ServiceRegistrar, srv ProductsServiceS
s.RegisterService(&ProductsService_ServiceDesc, srv) s.RegisterService(&ProductsService_ServiceDesc, srv)
} }
func _ProductsService_CalculateProductTariffs_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(CalculateProductTariffsRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ProductsServiceServer).CalculateProductTariffs(m, &grpc.GenericServerStream[CalculateProductTariffsRequest, CalculateProductTariffsResponse]{ServerStream: stream})
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProductsService_CalculateProductTariffsServer = grpc.ServerStreamingServer[CalculateProductTariffsResponse]
func _ProductsService_GetProducts_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(GetProductsRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ProductsServiceServer).GetProducts(m, &grpc.GenericServerStream[GetProductsRequest, GetProductsResponse]{ServerStream: stream})
}
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ProductsService_GetProductsServer = grpc.ServerStreamingServer[GetProductsResponse]
// ProductsService_ServiceDesc is the grpc.ServiceDesc for ProductsService service. // ProductsService_ServiceDesc is the grpc.ServiceDesc for ProductsService service.
// It's only intended for direct use with grpc.RegisterService, // It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy) // and not to be introspected or modified (even as a copy)
@@ -71,6 +149,17 @@ var ProductsService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "yandexmarket.products.ProductsService", ServiceName: "yandexmarket.products.ProductsService",
HandlerType: (*ProductsServiceServer)(nil), HandlerType: (*ProductsServiceServer)(nil),
Methods: []grpc.MethodDesc{}, Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{
Metadata: "yandexmarket/products.proto", {
StreamName: "CalculateProductTariffs",
Handler: _ProductsService_CalculateProductTariffs_Handler,
ServerStreams: true,
},
{
StreamName: "GetProducts",
Handler: _ProductsService_GetProducts_Handler,
ServerStreams: true,
},
},
Metadata: "yandexmarket/products.proto",
} }

BIN
cmd/server/main Executable file

Binary file not shown.

View File

@@ -3,9 +3,6 @@ package main
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/joho/godotenv"
"google.golang.org/grpc"
"net" "net"
"os" "os"
"sipro-mps/internal/config" "sipro-mps/internal/config"
@@ -14,6 +11,11 @@ import (
"sipro-mps/internal/redis" "sipro-mps/internal/redis"
"sipro-mps/internal/tasks/client" "sipro-mps/internal/tasks/client"
wb "sipro-mps/internal/wb/products" wb "sipro-mps/internal/wb/products"
ym "sipro-mps/internal/ym/products"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/joho/godotenv"
"google.golang.org/grpc"
) )
func logMessage(level string, format string, a ...interface{}) { func logMessage(level string, format string, a ...interface{}) {
@@ -58,6 +60,14 @@ func createGrpcServer(pool *pgxpool.Pool) {
fmt.Printf("failed to register Wildberries Products gRPC server: %v\n", err) fmt.Printf("failed to register Wildberries Products gRPC server: %v\n", err)
return return
} }
_, err = ym.RegisterAdapterGRPC(grpcServer, *repo)
if err != nil {
fmt.Printf("failed to register Yandex Market Products gRPC server: %v\n", err)
return
}
fmt.Println("gRPC server registered successfully.") fmt.Println("gRPC server registered successfully.")
// Start serving gRPC requests // Start serving gRPC requests
fmt.Println("gRPC server is starting on port 8080...") fmt.Println("gRPC server is starting on port 8080...")

BIN
cmd/tasks_server/main Executable file

Binary file not shown.

View File

@@ -1,32 +1,24 @@
package main package main
import ( import (
"github.com/hibiken/asynq" "context"
"github.com/joho/godotenv" "fmt"
"sipro-mps/internal/config" "sipro-mps/internal/wb/products/mapping/generated"
"sipro-mps/internal/tasks/types" "strings"
pb "sipro-mps/api/generated/v1/wb/products"
"sipro-mps/pkg/api/wb/client"
"github.com/deliveryhero/pipeline/v2"
) )
func main() { func main() {
godotenv.Load()
cfg, err := config.LoadConfig() input := "1,2,3,4,5"
if err != nil {
panic(err) for out := range pipeline.Process(context.Background(), apply, pipeline.Emit(input)) {
} for j := range out {
client := asynq.NewClient(asynq.RedisClientOpt{Addr: cfg.Redis.Host + ":" + cfg.Redis.Port, Password: cfg.Redis.Password}) fmt.Printf("process: %s\n", out[j])
defer func(client *asynq.Client) {
err := client.Close()
if err != nil {
panic(err)
} }
}(client)
task, err := types.NewFetchProductsTask(types.TypeOzonFetchProducts, 930)
if err != nil {
panic(err)
} }
info, err := client.Enqueue(task)
if err != nil {
panic(err)
}
println("Task enqueued successfully:", info.ID, "with queue name:", info.Queue, "and payload size:", len(info.Payload), "bytes")
} }

3
go.mod
View File

@@ -26,6 +26,8 @@ require (
require ( require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/dave/jennifer v1.6.0 // indirect github.com/dave/jennifer v1.6.0 // indirect
github.com/deliveryhero/pipeline v1.0.0 // indirect
github.com/deliveryhero/pipeline/v2 v2.2.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dlclark/regexp2 v1.11.5 // indirect
github.com/fatih/color v1.18.0 // indirect github.com/fatih/color v1.18.0 // indirect
@@ -52,6 +54,7 @@ require (
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect
golang.org/x/mod v0.26.0 // indirect golang.org/x/mod v0.26.0 // indirect
golang.org/x/net v0.42.0 // indirect golang.org/x/net v0.42.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sync v0.16.0 // indirect golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.34.0 // indirect golang.org/x/sys v0.34.0 // indirect
golang.org/x/text v0.27.0 // indirect golang.org/x/text v0.27.0 // indirect

6
go.sum
View File

@@ -17,6 +17,10 @@ github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+Egvsz
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deliveryhero/pipeline v1.0.0 h1:Le+s0kCQdTzpPlkkRE17jtD+b1NsTWCEcIl77RORuxo=
github.com/deliveryhero/pipeline v1.0.0/go.mod h1:78CQfQT2DONSGPktr7X71xu333ZMPdrcYuV/gY/Mnkg=
github.com/deliveryhero/pipeline/v2 v2.2.0 h1:l9F+e4Q3qMu0zw7fi0JVg2FilgnGyohnwJ5d1oBqoYs=
github.com/deliveryhero/pipeline/v2 v2.2.0/go.mod h1:GghgCAlOoG8IdwybJpe2E3LBTuR+o5wgTdm0kPv3GPU=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
@@ -155,6 +159,8 @@ golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=

View File

@@ -15,4 +15,5 @@ type Marketplace struct {
AuthData pgtype.Text AuthData pgtype.Text
WarehouseID pgtype.Text WarehouseID pgtype.Text
AuthDataJson []byte AuthDataJson []byte
CampaignID pgtype.Text
} }

View File

@@ -10,7 +10,7 @@ import (
) )
const getMarketplaceByID = `-- name: GetMarketplaceByID :one const getMarketplaceByID = `-- name: GetMarketplaceByID :one
SELECT id, base_marketplace, name, auth_data, warehouse_id, auth_data_json FROM marketplaces SELECT id, base_marketplace, name, auth_data, warehouse_id, auth_data_json, campaign_id FROM marketplaces
WHERE id = $1 LIMIT 1 WHERE id = $1 LIMIT 1
` `
@@ -24,6 +24,7 @@ func (q *Queries) GetMarketplaceByID(ctx context.Context, id int32) (Marketplace
&i.AuthData, &i.AuthData,
&i.WarehouseID, &i.WarehouseID,
&i.AuthDataJson, &i.AuthDataJson,
&i.CampaignID,
) )
return i, err return i, err
} }

View File

@@ -10,5 +10,6 @@ create table marketplaces
CASE CASE
WHEN ((auth_data)::text IS JSON) THEN (auth_data)::jsonb WHEN ((auth_data)::text IS JSON) THEN (auth_data)::jsonb
ELSE NULL::jsonb ELSE NULL::jsonb
END) stored END) stored,
campaign_id varchar
); );

View File

@@ -2,8 +2,9 @@ package marketplace
import ( import (
"encoding/json" "encoding/json"
"github.com/go-faster/errors"
"sipro-mps/pkg/utils" "sipro-mps/pkg/utils"
"github.com/go-faster/errors"
) )
const ( const (
@@ -18,6 +19,7 @@ type Marketplace struct {
AuthData string `json:"auth_data"` AuthData string `json:"auth_data"`
WarehouseID string `json:"warehouse_id"` WarehouseID string `json:"warehouse_id"`
AuthDataJson []byte `json:"auth_data_json,omitempty"` AuthDataJson []byte `json:"auth_data_json,omitempty"`
CampaignID string `json:"campaign_id,omitempty"`
} }
func (m *Marketplace) getIdentifierWildberries() (string, error) { func (m *Marketplace) getIdentifierWildberries() (string, error) {

View File

@@ -25,5 +25,6 @@ func (r *dbRepository) GetMarketplaceByID(ctx context.Context, id int) (*Marketp
AuthData: marketplace.AuthData.String, AuthData: marketplace.AuthData.String,
WarehouseID: marketplace.WarehouseID.String, WarehouseID: marketplace.WarehouseID.String,
AuthDataJson: marketplace.AuthDataJson, AuthDataJson: marketplace.AuthDataJson,
CampaignID: marketplace.CampaignID.String,
}, nil }, nil
} }

View File

@@ -2,20 +2,16 @@ package products
import ( import (
"context" "context"
"encoding/json"
"fmt" "fmt"
"github.com/go-faster/errors"
"github.com/redis/rueidis"
"github.com/samber/lo"
pb "sipro-mps/api/generated/v1/wb/products" pb "sipro-mps/api/generated/v1/wb/products"
"sipro-mps/internal/marketplace" "sipro-mps/internal/marketplace"
"sipro-mps/internal/redis"
"sipro-mps/internal/tasks/client"
"sipro-mps/internal/tasks/types"
"sipro-mps/internal/wb" "sipro-mps/internal/wb"
"sipro-mps/internal/wb/products/mapping/generated" "sipro-mps/internal/wb/products/mapping/generated"
wbapi "sipro-mps/pkg/api/wb/client" wbapi "sipro-mps/pkg/api/wb/client"
"sipro-mps/pkg/utils" "sipro-mps/pkg/utils"
"github.com/deliveryhero/pipeline/v2"
"github.com/samber/lo"
) )
const ( const (
@@ -97,79 +93,99 @@ func fetchProducts(
} }
func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId int, resultChan chan<- []pb.Product, errChan chan<- error) { func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId int, resultChan chan<- []pb.Product, errChan chan<- error) {
defer close(resultChan) // DO NOT close channels here - WithCache will handle it (caller/creator owns them)
defer close(errChan) mp, err := a.marketplaceRepository.GetMarketplaceByID(ctx, marketplaceId)
_, sellerId, err := a.ParseMarketplace(ctx, marketplaceId)
if err != nil { if err != nil {
errChan <- err errChan <- fmt.Errorf("getting marketplace by ID: %w", err)
return return
} }
c := *redis.Client identifier, err := mp.GetIdentifier()
key := fmt.Sprintf("wb:products:%s", sellerId) if err != nil {
jsonString, err := c.Do(ctx, c.B().Get().Key(key).Build()).ToString() errChan <- fmt.Errorf("getting marketplace identifier: %w", err)
if err == nil && jsonString != "null" {
var result []pb.Product
err = json.Unmarshal([]byte(jsonString), &result)
if err != nil {
errChan <- fmt.Errorf("unmarshalling products from cache: %w", err)
return
}
task, err := types.NewFetchProductsTask(types.TypeWbFetchProducts, marketplaceId)
if err != nil {
errChan <- fmt.Errorf("creating fetch products task: %w", err)
return
}
_, err = client.Client.Enqueue(task)
if err != nil {
errChan <- fmt.Errorf("enqueueing fetch products task: %w", err)
return
}
resultChan <- result
return return
} }
if !errors.As(err, &rueidis.Nil) && err != nil { client, err := wb.GetClientFromMarketplace(mp)
errChan <- fmt.Errorf("fetching products from cache: %w", err) if err != nil {
return return
} }
converter := generated.ConverterImpl{} converter := generated.ConverterImpl{}
transform := pipeline.NewProcessor(func(_ context.Context, products []WbProduct) ([]pb.Product, error) {
innerResultChan := make(chan []WbProduct) return lo.Map(products, func(item WbProduct, _ int) pb.Product {
innerErrChan := make(chan error) return *converter.ToProto(&item)
go a.StreamAllProducts(ctx, marketplaceId, innerResultChan, innerErrChan) }), nil
var allProducts []pb.Product }, nil)
defer func() { inputChan := make(chan []WbProduct)
jsonData, err := json.Marshal(allProducts) fetchProducts(ctx, client, identifier, inputChan, nil)
if err != nil { for out := range pipeline.Process(ctx, transform, inputChan) {
errChan <- fmt.Errorf("marshalling products to cache: %w", err) resultChan <- out
return
}
err = c.Do(ctx, c.B().Set().Key(key).Value(string(jsonData)).Build()).Error()
if err != nil {
errChan <- fmt.Errorf("setting products to cache: %w", err)
return
}
}()
for {
select {
case err, ok := <-innerErrChan:
if !ok {
return
}
errChan <- fmt.Errorf("streaming products: %w", err)
return
case products, ok := <-innerResultChan:
if !ok {
return
}
pbProducts := lo.Map(products, func(p WbProduct, _ int) pb.Product {
return *converter.ToProto(&p)
})
allProducts = append(allProducts, pbProducts...)
resultChan <- pbProducts
}
} }
//c := *redis.Client
//key := fmt.Sprintf("wb:products:%s", sellerId)
//jsonString, err := c.Do(ctx, c.B().Get().Key(key).Build()).ToString()
//if err == nil && jsonString != "null" {
// var result []pb.Product
// err = json.Unmarshal([]byte(jsonString), &result)
// if err != nil {
// errChan <- fmt.Errorf("unmarshalling products from cache: %w", err)
// return
// }
// task, err := types.NewFetchProductsTask(types.TypeWbFetchProducts, marketplaceId)
// if err != nil {
// errChan <- fmt.Errorf("creating fetch products task: %w", err)
// return
// }
// _, err = client.Client.Enqueue(task)
// if err != nil {
// errChan <- fmt.Errorf("enqueueing fetch products task: %w", err)
// return
// }
//
// resultChan <- result
// return
//}
//if !errors.As(err, &rueidis.Nil) && err != nil {
// errChan <- fmt.Errorf("fetching products from cache: %w", err)
// return
//}
//converter := generated.ConverterImpl{}
//
//innerResultChan := make(chan []WbProduct)
//innerErrChan := make(chan error)
//go a.StreamAllProducts(ctx, marketplaceId, innerResultChan, innerErrChan)
//var allProducts []pb.Product
//defer func() {
// jsonData, err := json.Marshal(allProducts)
// if err != nil {
// errChan <- fmt.Errorf("marshalling products to cache: %w", err)
// return
// }
// err = c.Do(ctx, c.B().Set().Key(key).Value(string(jsonData)).Build()).Error()
// if err != nil {
// errChan <- fmt.Errorf("setting products to cache: %w", err)
// return
// }
//}()
//for {
// select {
// case err, ok := <-innerErrChan:
// if !ok {
// return
// }
// errChan <- fmt.Errorf("streaming products: %w", err)
// return
// case products, ok := <-innerResultChan:
// if !ok {
// return
// }
// pbProducts := lo.Map(products, func(p WbProduct, _ int) pb.Product {
// return *converter.ToProto(&p)
// })
// allProducts = append(allProducts, pbProducts...)
// resultChan <- pbProducts
// }
//}
} }
func (a apiRepository) GetAllProducts(ctx context.Context, marketplaceId int) ([]WbProduct, error) { func (a apiRepository) GetAllProducts(ctx context.Context, marketplaceId int) ([]WbProduct, error) {
marketplaceByID, sellerId, err := a.ParseMarketplace(ctx, marketplaceId) marketplaceByID, sellerId, err := a.ParseMarketplace(ctx, marketplaceId)

36
internal/ym/common.go Normal file
View File

@@ -0,0 +1,36 @@
package ym
import (
"errors"
"net/http"
"sipro-mps/internal/marketplace"
"sipro-mps/pkg/api/yandex/ymclient"
"strings"
"github.com/tidwall/gjson"
)
func GetClientFromMarketplace(mp *marketplace.Marketplace) (*ymclient.APIClient, error) {
authDataParsed := gjson.Parse(mp.AuthData)
apiKeyResult := authDataParsed.Get("apiKey")
if !apiKeyResult.Exists() {
return nil, errors.New("API key not found in marketplace auth data")
}
apiKey := apiKeyResult.String()
if apiKey == "" {
return nil, errors.New("API key is empty")
}
if !strings.HasPrefix(apiKey, "ACMA") {
return nil, errors.New("API key does not start with 'ACMA'")
}
// Create HTTP client with rate limiting
httpClient := &http.Client{
Transport: NewRateLimitTransport(),
}
cfg := ymclient.NewConfiguration()
cfg.AddDefaultHeader("Api-Key", apiKey)
cfg.HTTPClient = httpClient
client := ymclient.NewAPIClient(cfg)
return client, nil
}

View File

@@ -0,0 +1,103 @@
package products
import (
"fmt"
pb "sipro-mps/api/generated/v1/yandexmarket/products"
"sipro-mps/internal/marketplace"
"google.golang.org/grpc"
)
type AdapterGRPC struct {
pb.UnimplementedProductsServiceServer
repo Repository
}
func NewAdapterGRPC(repo Repository) *AdapterGRPC {
return &AdapterGRPC{
repo: repo,
}
}
func RegisterAdapterGRPC(server *grpc.Server, marketplacesRepository marketplace.Repository) (*Repository, error) {
repo := NewAPIRepository(marketplacesRepository)
adapter := NewAdapterGRPC(repo)
pb.RegisterProductsServiceServer(server, adapter)
return &repo, nil
}
func (a *AdapterGRPC) GetProducts(req *pb.GetProductsRequest, stream pb.ProductsService_GetProductsServer) error {
ctx := stream.Context()
fmt.Printf("GetProducts called with marketplace_id: %d, offer_ids count: %d\n", req.MarketplaceId, len(req.OfferIds))
resultChan := make(chan []*pb.GetProductsResponse_Offer, 10)
errChan := make(chan error)
go a.repo.GetProducts(ctx, int(req.MarketplaceId), req, resultChan, errChan)
for {
select {
case <-ctx.Done():
fmt.Println("GetProducts: context cancelled or deadline exceeded:", ctx.Err())
return ctx.Err()
case offers, ok := <-resultChan:
if !ok {
fmt.Println("GetProducts: result channel closed")
return nil
}
// Send offers in response
response := &pb.GetProductsResponse{
Offers: offers,
}
if err := stream.Send(response); err != nil {
fmt.Println("GetProducts: error sending response:", err)
return err
}
case err, ok := <-errChan:
if !ok {
return nil
}
if err != nil {
fmt.Println("GetProducts: error received from channel:", err)
return err
}
}
}
}
func (a *AdapterGRPC) CalculateProductTariffs(req *pb.CalculateProductTariffsRequest, stream pb.ProductsService_CalculateProductTariffsServer) error {
ctx := stream.Context()
fmt.Printf("CalculateProductTariffs called with marketplace_id: %d, offers count: %d\n", req.MarketplaceId, len(req.Offers))
resultChan := make(chan []*pb.CalculateProductTariffsResponse, 10)
errChan := make(chan error)
go a.repo.CalculateProductTariffs(ctx, int(req.MarketplaceId), req, resultChan, errChan)
for {
select {
case <-ctx.Done():
fmt.Println("CalculateProductTariffs: context cancelled or deadline exceeded:", ctx.Err())
return ctx.Err()
case responses, ok := <-resultChan:
if !ok {
fmt.Println("CalculateProductTariffs: result channel closed")
return nil
}
for _, response := range responses {
if err := stream.Send(response); err != nil {
fmt.Println("CalculateProductTariffs: error sending response:", err)
return err
}
}
case err, ok := <-errChan:
if !ok {
return nil
}
if err != nil {
fmt.Println("CalculateProductTariffs: error received from channel:", err)
return err
}
}
}
}

View File

@@ -0,0 +1,13 @@
package products
import (
pb "sipro-mps/api/generated/v1/yandexmarket/products"
)
type PbCalculateProductTariffsRequest = pb.CalculateProductTariffsRequest
type PbCalculateProductTariffsResponse = pb.CalculateProductTariffsResponse
type PbOffer = pb.CalculateProductTariffsRequest_Offers
type PbResponseOffer = pb.CalculateProductTariffsResponse_Offers
type PbParameters = pb.CalculateProductTariffsRequest_Parameters
type PbGetProductsOffer = pb.GetProductsResponse_Offer
type PbGetProductsRequest = pb.GetProductsRequest

View File

@@ -0,0 +1,46 @@
package mapping
import (
proto "sipro-mps/api/generated/v1/yandexmarket/products"
"sipro-mps/pkg/api/yandex/ymclient"
)
//go:generate go run github.com/jmattheis/goverter/cmd/goverter gen .
// goverter:converter
// goverter:output:file ./generated/generated.go
// goverter:output:package generated
// goverter:ignoreUnexported yes
// goverter:matchIgnoreCase yes
// goverter:useZeroValueOnPointerInconsistency yes
// goverter:extend Int64ToFloat32 Int64ToInt32 Float32ToInt64 Int32ToInt64 PointerInt32ToInt64
type Converter interface {
ProtoOfferToYmOffer(details *proto.CalculateProductTariffsRequest_Offers) *ymclient.CalculateTariffsOfferDTO
ProtoParametersToYmParameters(details *proto.CalculateProductTariffsRequest_Parameters) *ymclient.CalculateTariffsParametersDTO
// Response converters
YmOfferToProtoResponseOffer(details *ymclient.CalculateTariffsOfferInfoDTO) *proto.CalculateProductTariffsResponse_Offers
YmTariffToProtoTariff(details *ymclient.CalculatedTariffDTO) *proto.CalculateProductTariffsResponse_Tariff
YmOfferToProtoOffer(details *ymclient.GetOfferDTO) *proto.GetProductsResponse_Offer
}
func Int64ToFloat32(i int64) float32 {
return float32(i)
}
func Int64ToInt32(i int64) int32 {
return int32(i)
}
func Float32ToInt64(f float32) int64 {
return int64(f)
}
func Int32ToInt64(i int32) int64 {
return int64(i)
}
func PointerInt32ToInt64(i *int32) *int64 {
if i == nil {
return nil
}
val := int64(*i)
return &val
}

View File

@@ -0,0 +1,152 @@
// Code generated by github.com/jmattheis/goverter, DO NOT EDIT.
//go:build !goverter
package generated
import (
products "sipro-mps/api/generated/v1/yandexmarket/products"
mapping "sipro-mps/internal/ym/products/mapping"
ymclient "sipro-mps/pkg/api/yandex/ymclient"
)
type ConverterImpl struct{}
func (c *ConverterImpl) ProtoOfferToYmOffer(source *products.CalculateProductTariffsRequest_Offers) *ymclient.CalculateTariffsOfferDTO {
var pYmclientCalculateTariffsOfferDTO *ymclient.CalculateTariffsOfferDTO
if source != nil {
var ymclientCalculateTariffsOfferDTO ymclient.CalculateTariffsOfferDTO
ymclientCalculateTariffsOfferDTO.CategoryId = (*source).CategoryId
ymclientCalculateTariffsOfferDTO.Price = mapping.Int64ToFloat32((*source).Price)
ymclientCalculateTariffsOfferDTO.Length = mapping.Int64ToFloat32((*source).Length)
ymclientCalculateTariffsOfferDTO.Width = mapping.Int64ToFloat32((*source).Width)
ymclientCalculateTariffsOfferDTO.Height = mapping.Int64ToFloat32((*source).Height)
ymclientCalculateTariffsOfferDTO.Weight = mapping.Int64ToFloat32((*source).Weight)
pInt32 := mapping.Int64ToInt32((*source).Quantity)
ymclientCalculateTariffsOfferDTO.Quantity = &pInt32
pYmclientCalculateTariffsOfferDTO = &ymclientCalculateTariffsOfferDTO
}
return pYmclientCalculateTariffsOfferDTO
}
func (c *ConverterImpl) ProtoParametersToYmParameters(source *products.CalculateProductTariffsRequest_Parameters) *ymclient.CalculateTariffsParametersDTO {
var pYmclientCalculateTariffsParametersDTO *ymclient.CalculateTariffsParametersDTO
if source != nil {
var ymclientCalculateTariffsParametersDTO ymclient.CalculateTariffsParametersDTO
pInt64 := (*source).CampaignId
ymclientCalculateTariffsParametersDTO.CampaignId = &pInt64
pYmclientSellingProgramType := ymclient.SellingProgramType((*source).SellingProgram)
ymclientCalculateTariffsParametersDTO.SellingProgram = &pYmclientSellingProgramType
pYmclientPaymentFrequencyType := ymclient.PaymentFrequencyType((*source).Frequency)
ymclientCalculateTariffsParametersDTO.Frequency = &pYmclientPaymentFrequencyType
pYmclientCurrencyType := ymclient.CurrencyType((*source).Currency)
ymclientCalculateTariffsParametersDTO.Currency = &pYmclientCurrencyType
pYmclientCalculateTariffsParametersDTO = &ymclientCalculateTariffsParametersDTO
}
return pYmclientCalculateTariffsParametersDTO
}
func (c *ConverterImpl) YmOfferToProtoOffer(source *ymclient.GetOfferDTO) *products.GetProductsResponse_Offer {
var pProductsGetProductsResponse_Offer *products.GetProductsResponse_Offer
if source != nil {
var productsGetProductsResponse_Offer products.GetProductsResponse_Offer
if (*source).MarketCategoryId != nil {
productsGetProductsResponse_Offer.MarketCategoryId = *(*source).MarketCategoryId
}
productsGetProductsResponse_Offer.WeightDimensions = c.pYmclientOfferWeightDimensionsDTOToPProductsGetProductsResponse_Offer_WeightDimensions((*source).WeightDimensions)
productsGetProductsResponse_Offer.BasicPrice = c.pYmclientGetPriceWithDiscountDTOToPProductsGetProductsResponse_Offer_BasicPrice((*source).BasicPrice)
productsGetProductsResponse_Offer.OfferId = (*source).OfferId
pProductsGetProductsResponse_Offer = &productsGetProductsResponse_Offer
}
return pProductsGetProductsResponse_Offer
}
func (c *ConverterImpl) YmOfferToProtoResponseOffer(source *ymclient.CalculateTariffsOfferInfoDTO) *products.CalculateProductTariffsResponse_Offers {
var pProductsCalculateProductTariffsResponse_Offers *products.CalculateProductTariffsResponse_Offers
if source != nil {
var productsCalculateProductTariffsResponse_Offers products.CalculateProductTariffsResponse_Offers
productsCalculateProductTariffsResponse_Offers.Offer = c.ymclientCalculateTariffsOfferDTOToPProductsCalculateProductTariffsResponse_Offer((*source).Offer)
if (*source).Tariffs != nil {
productsCalculateProductTariffsResponse_Offers.Tariffs = make([]*products.CalculateProductTariffsResponse_Tariff, len((*source).Tariffs))
for i := 0; i < len((*source).Tariffs); i++ {
productsCalculateProductTariffsResponse_Offers.Tariffs[i] = c.ymclientCalculatedTariffDTOToPProductsCalculateProductTariffsResponse_Tariff((*source).Tariffs[i])
}
}
pProductsCalculateProductTariffsResponse_Offers = &productsCalculateProductTariffsResponse_Offers
}
return pProductsCalculateProductTariffsResponse_Offers
}
func (c *ConverterImpl) YmTariffToProtoTariff(source *ymclient.CalculatedTariffDTO) *products.CalculateProductTariffsResponse_Tariff {
var pProductsCalculateProductTariffsResponse_Tariff *products.CalculateProductTariffsResponse_Tariff
if source != nil {
var productsCalculateProductTariffsResponse_Tariff products.CalculateProductTariffsResponse_Tariff
productsCalculateProductTariffsResponse_Tariff.Type = string((*source).Type)
if (*source).Amount != nil {
productsCalculateProductTariffsResponse_Tariff.Amount = mapping.Float32ToInt64(*(*source).Amount)
}
if (*source).Currency != nil {
productsCalculateProductTariffsResponse_Tariff.Currency = string(*(*source).Currency)
}
if (*source).Parameters != nil {
productsCalculateProductTariffsResponse_Tariff.Parameters = make([]*products.CalculateProductTariffsResponse_Parameter, len((*source).Parameters))
for i := 0; i < len((*source).Parameters); i++ {
productsCalculateProductTariffsResponse_Tariff.Parameters[i] = c.ymclientTariffParameterDTOToPProductsCalculateProductTariffsResponse_Parameter((*source).Parameters[i])
}
}
pProductsCalculateProductTariffsResponse_Tariff = &productsCalculateProductTariffsResponse_Tariff
}
return pProductsCalculateProductTariffsResponse_Tariff
}
func (c *ConverterImpl) pYmclientGetPriceWithDiscountDTOToPProductsGetProductsResponse_Offer_BasicPrice(source *ymclient.GetPriceWithDiscountDTO) *products.GetProductsResponse_Offer_BasicPrice {
var pProductsGetProductsResponse_Offer_BasicPrice *products.GetProductsResponse_Offer_BasicPrice
if source != nil {
var productsGetProductsResponse_Offer_BasicPrice products.GetProductsResponse_Offer_BasicPrice
productsGetProductsResponse_Offer_BasicPrice.Value = (*source).Value
pProductsGetProductsResponse_Offer_BasicPrice = &productsGetProductsResponse_Offer_BasicPrice
}
return pProductsGetProductsResponse_Offer_BasicPrice
}
func (c *ConverterImpl) pYmclientOfferWeightDimensionsDTOToPProductsGetProductsResponse_Offer_WeightDimensions(source *ymclient.OfferWeightDimensionsDTO) *products.GetProductsResponse_Offer_WeightDimensions {
var pProductsGetProductsResponse_Offer_WeightDimensions *products.GetProductsResponse_Offer_WeightDimensions
if source != nil {
var productsGetProductsResponse_Offer_WeightDimensions products.GetProductsResponse_Offer_WeightDimensions
productsGetProductsResponse_Offer_WeightDimensions.Length = (*source).Length
productsGetProductsResponse_Offer_WeightDimensions.Width = (*source).Width
productsGetProductsResponse_Offer_WeightDimensions.Height = (*source).Height
productsGetProductsResponse_Offer_WeightDimensions.Weight = (*source).Weight
pProductsGetProductsResponse_Offer_WeightDimensions = &productsGetProductsResponse_Offer_WeightDimensions
}
return pProductsGetProductsResponse_Offer_WeightDimensions
}
func (c *ConverterImpl) ymclientCalculateTariffsOfferDTOToPProductsCalculateProductTariffsResponse_Offer(source ymclient.CalculateTariffsOfferDTO) *products.CalculateProductTariffsResponse_Offer {
var productsCalculateProductTariffsResponse_Offer products.CalculateProductTariffsResponse_Offer
productsCalculateProductTariffsResponse_Offer.CategoryId = source.CategoryId
productsCalculateProductTariffsResponse_Offer.Price = mapping.Float32ToInt64(source.Price)
productsCalculateProductTariffsResponse_Offer.Length = mapping.Float32ToInt64(source.Length)
productsCalculateProductTariffsResponse_Offer.Width = mapping.Float32ToInt64(source.Width)
productsCalculateProductTariffsResponse_Offer.Height = mapping.Float32ToInt64(source.Height)
productsCalculateProductTariffsResponse_Offer.Weight = mapping.Float32ToInt64(source.Weight)
if source.Quantity != nil {
productsCalculateProductTariffsResponse_Offer.Quantity = mapping.Int32ToInt64(*source.Quantity)
}
return &productsCalculateProductTariffsResponse_Offer
}
func (c *ConverterImpl) ymclientCalculatedTariffDTOToPProductsCalculateProductTariffsResponse_Tariff(source ymclient.CalculatedTariffDTO) *products.CalculateProductTariffsResponse_Tariff {
var productsCalculateProductTariffsResponse_Tariff products.CalculateProductTariffsResponse_Tariff
productsCalculateProductTariffsResponse_Tariff.Type = string(source.Type)
if source.Amount != nil {
productsCalculateProductTariffsResponse_Tariff.Amount = mapping.Float32ToInt64(*source.Amount)
}
if source.Currency != nil {
productsCalculateProductTariffsResponse_Tariff.Currency = string(*source.Currency)
}
if source.Parameters != nil {
productsCalculateProductTariffsResponse_Tariff.Parameters = make([]*products.CalculateProductTariffsResponse_Parameter, len(source.Parameters))
for i := 0; i < len(source.Parameters); i++ {
productsCalculateProductTariffsResponse_Tariff.Parameters[i] = c.ymclientTariffParameterDTOToPProductsCalculateProductTariffsResponse_Parameter(source.Parameters[i])
}
}
return &productsCalculateProductTariffsResponse_Tariff
}
func (c *ConverterImpl) ymclientTariffParameterDTOToPProductsCalculateProductTariffsResponse_Parameter(source ymclient.TariffParameterDTO) *products.CalculateProductTariffsResponse_Parameter {
var productsCalculateProductTariffsResponse_Parameter products.CalculateProductTariffsResponse_Parameter
productsCalculateProductTariffsResponse_Parameter.Name = source.Name
productsCalculateProductTariffsResponse_Parameter.Value = source.Value
return &productsCalculateProductTariffsResponse_Parameter
}

View File

@@ -0,0 +1,12 @@
package products
import (
"context"
pb "sipro-mps/api/generated/v1/yandexmarket/products"
)
type Repository interface {
CalculateProductTariffs(ctx context.Context, marketplaceID int, req *pb.CalculateProductTariffsRequest, resultChan chan<- []*pb.CalculateProductTariffsResponse, errChan chan<- error)
GetProducts(ctx context.Context, marketplaceID int, req *pb.GetProductsRequest, resultChan chan<- []*pb.GetProductsResponse_Offer, errChan chan<- error)
}

View File

@@ -0,0 +1,275 @@
package products
import (
"context"
"fmt"
"math"
"strconv"
"time"
pb "sipro-mps/api/generated/v1/yandexmarket/products"
"sipro-mps/internal/marketplace"
"sipro-mps/internal/ym"
"sipro-mps/internal/ym/products/mapping/generated"
"sipro-mps/pkg/api/yandex/ymclient"
"github.com/samber/lo"
)
const (
defaultChunkSize = 200
offerMappingsRateLimit = 600
tariffsRateLimit = 100
rateLimitWindow = time.Minute
maxPageSize = math.MaxInt32
)
// apiRepository implements the Repository interface using Yandex Market API
type apiRepository struct {
marketplaceRepository marketplace.Repository
converter *generated.ConverterImpl
}
// NewAPIRepository creates a new API-based repository implementation
func NewAPIRepository(marketplaceRepository marketplace.Repository) Repository {
return &apiRepository{
marketplaceRepository: marketplaceRepository,
converter: &generated.ConverterImpl{},
}
}
// getBusinessID retrieves the business ID for a given marketplace by looking up the campaign
func (r *apiRepository) getBusinessID(ctx context.Context, mp *marketplace.Marketplace) (int64, error) {
if mp.CampaignID == "" {
return 0, fmt.Errorf("campaign ID is not set for marketplace %d", mp.ID)
}
campaignID, err := r.validateCampaignID(mp.CampaignID, mp.ID)
if err != nil {
return 0, err
}
client, err := ym.GetClientFromMarketplace(mp)
if err != nil {
return 0, fmt.Errorf("failed to create Yandex Market client: %w", err)
}
businessID, err := r.fetchBusinessIDFromCampaigns(ctx, client, campaignID, mp.ID)
if err != nil {
return 0, err
}
return businessID, nil
}
// validateCampaignID validates and parses the campaign ID string
func (r *apiRepository) validateCampaignID(campaignIDStr string, marketplaceID int) (int64, error) {
campaignID, err := strconv.ParseInt(campaignIDStr, 10, 64)
if err != nil {
return 0, fmt.Errorf("invalid campaign ID '%s' for marketplace %d: %w", campaignIDStr, marketplaceID, err)
}
return campaignID, nil
}
// fetchBusinessIDFromCampaigns retrieves business ID by searching through campaigns
func (r *apiRepository) fetchBusinessIDFromCampaigns(ctx context.Context, client *ymclient.APIClient, campaignID int64, marketplaceID int) (int64, error) {
rsp, _, err := client.CampaignsAPI.GetCampaigns(ctx).Page(1).PageSize(maxPageSize).Execute()
if err != nil {
return 0, fmt.Errorf("failed to call GetCampaigns: %w", err)
}
if rsp == nil {
return 0, fmt.Errorf("GetCampaigns returned nil response")
}
for _, campaign := range rsp.Campaigns {
if campaign.GetId() == campaignID {
return campaign.Business.GetId(), nil
}
}
return 0, fmt.Errorf("campaign ID %d not found in GetCampaigns response for marketplace %d", campaignID, marketplaceID)
}
// GetProducts retrieves products from Yandex Market API in chunks and sends results to channels
func (r *apiRepository) GetProducts(ctx context.Context, marketplaceID int, req *pb.GetProductsRequest, resultChan chan<- []*pb.GetProductsResponse_Offer, errChan chan<- error) {
defer close(resultChan)
defer close(errChan)
_, client, businessID, err := r.setupMarketplaceClient(ctx, marketplaceID)
if err != nil {
errChan <- err
return
}
r.setOfferMappingsRateLimit(businessID)
for _, chunk := range lo.Chunk(req.OfferIds, defaultChunkSize) {
offers, err := r.fetchOfferMappings(ctx, client, businessID, chunk)
if err != nil {
errChan <- err
return
}
resultChan <- offers
}
}
// setupMarketplaceClient initializes marketplace, API client, and business ID
func (r *apiRepository) setupMarketplaceClient(ctx context.Context, marketplaceID int) (*marketplace.Marketplace, *ymclient.APIClient, int64, error) {
mp, err := r.marketplaceRepository.GetMarketplaceByID(ctx, marketplaceID)
if err != nil {
return nil, nil, 0, fmt.Errorf("failed to get marketplace: %w", err)
}
client, err := ym.GetClientFromMarketplace(mp)
if err != nil {
return nil, nil, 0, fmt.Errorf("failed to create Yandex Market client: %w", err)
}
businessID, err := r.getBusinessID(ctx, mp)
if err != nil {
return nil, nil, 0, fmt.Errorf("failed to get business ID: %w", err)
}
return mp, client, businessID, nil
}
// setOfferMappingsRateLimit configures rate limiting for offer mappings endpoint
func (r *apiRepository) setOfferMappingsRateLimit(businessID int64) {
path := "/businesses/" + strconv.Itoa(int(businessID)) + "/offer-mappings"
ym.SetPathLimit(path, rateLimitWindow, offerMappingsRateLimit)
}
// fetchOfferMappings retrieves offer mappings for a given set of offer IDs
func (r *apiRepository) fetchOfferMappings(ctx context.Context, client *ymclient.APIClient, businessID int64, offerIDs []string) ([]*pb.GetProductsResponse_Offer, error) {
req := ymclient.NewGetOfferMappingsRequest()
req.OfferIds = offerIDs
rsp, _, err := client.BusinessOfferMappingsAPI.GetOfferMappings(ctx, businessID).GetOfferMappingsRequest(*req).Execute()
if err != nil {
return nil, fmt.Errorf("failed to call GetOfferMappings: %w", err)
}
if rsp == nil {
return nil, fmt.Errorf("GetOfferMappings returned nil response")
}
return r.processOfferMappings(rsp.Result.GetOfferMappings())
}
// processOfferMappings converts YM offer mappings to protobuf format
func (r *apiRepository) processOfferMappings(offerMappings []ymclient.GetOfferMappingDTO) ([]*pb.GetProductsResponse_Offer, error) {
var resultOffers []*pb.GetProductsResponse_Offer
for _, offerMapping := range offerMappings {
protoOffer := r.converter.YmOfferToProtoOffer(offerMapping.Offer)
if protoOffer == nil {
fmt.Printf("Warning: received nil offer for ID %s\n", offerMapping.Offer.OfferId)
resultOffers = append(resultOffers, &pb.GetProductsResponse_Offer{})
continue
}
resultOffers = append(resultOffers, protoOffer)
}
return resultOffers, nil
}
// CalculateProductTariffs calculates tariffs for products using Yandex Market API
func (r *apiRepository) CalculateProductTariffs(ctx context.Context, marketplaceID int, req *pb.CalculateProductTariffsRequest, resultChan chan<- []*pb.CalculateProductTariffsResponse, errChan chan<- error) {
defer close(resultChan)
defer close(errChan)
_, client, _, err := r.setupMarketplaceClient(ctx, marketplaceID)
if err != nil {
errChan <- err
return
}
r.setTariffsRateLimit()
ymParameters := r.converter.ProtoParametersToYmParameters(req.Parameters)
if ymParameters == nil {
errChan <- fmt.Errorf("failed to convert request parameters")
return
}
offerChunks := lo.Chunk(req.Offers, defaultChunkSize)
for chunkIndex, offerChunk := range offerChunks {
fmt.Printf("Processing chunk %d/%d with %d offers\n", chunkIndex+1, len(offerChunks), len(offerChunk))
response, err := r.processTariffChunk(ctx, client, ymParameters, offerChunk, chunkIndex)
if err != nil {
errChan <- err
return
}
if response != nil {
resultChan <- []*pb.CalculateProductTariffsResponse{response}
}
}
}
// setTariffsRateLimit configures rate limiting for tariffs calculation endpoint
func (r *apiRepository) setTariffsRateLimit() {
ym.SetPathLimit("/tariffs/calculate", rateLimitWindow, tariffsRateLimit)
}
// processTariffChunk processes a single chunk of offers for tariff calculation
func (r *apiRepository) processTariffChunk(ctx context.Context, client *ymclient.APIClient, ymParameters *ymclient.CalculateTariffsParametersDTO, offerChunk []*pb.CalculateProductTariffsRequest_Offers, chunkIndex int) (*pb.CalculateProductTariffsResponse, error) {
ymOffers := r.convertOffersToYM(offerChunk)
if len(ymOffers) == 0 {
fmt.Printf("Skipping chunk %d: no valid offers\n", chunkIndex+1)
return nil, nil
}
ymRequest := ymclient.NewCalculateTariffsRequest(*ymParameters, ymOffers)
response, httpResp, err := client.TariffsAPI.CalculateTariffs(ctx).
CalculateTariffsRequest(*ymRequest).
Execute()
if httpResp != nil && httpResp.Body != nil {
_ = httpResp.Body.Close()
}
if err != nil {
return nil, fmt.Errorf("failed to call Yandex Market API for chunk %d: %w", chunkIndex+1, err)
}
if response == nil || response.Result == nil {
fmt.Printf("Warning: received empty response for chunk %d\n", chunkIndex+1)
return nil, nil
}
return r.convertResponseToProto(response), nil
}
// convertOffersToYM converts protobuf offers to Yandex Market format
func (r *apiRepository) convertOffersToYM(offers []*pb.CalculateProductTariffsRequest_Offers) []ymclient.CalculateTariffsOfferDTO {
var ymOffers []ymclient.CalculateTariffsOfferDTO
for _, offer := range offers {
ymOffer := r.converter.ProtoOfferToYmOffer(offer)
if ymOffer != nil {
ymOffers = append(ymOffers, *ymOffer)
}
}
return ymOffers
}
// convertResponseToProto converts Yandex Market response to protobuf format
func (r *apiRepository) convertResponseToProto(response *ymclient.CalculateTariffsResponse) *pb.CalculateProductTariffsResponse {
var offers []*pb.CalculateProductTariffsResponse_Offers
if response.Result.Offers != nil {
for _, ymOfferInfo := range response.Result.Offers {
pbResponseOffer := r.converter.YmOfferToProtoResponseOffer(&ymOfferInfo)
if pbResponseOffer != nil {
offers = append(offers, pbResponseOffer)
}
}
}
result := &pb.CalculateProductTariffsResponse{}
result.Offers = offers
return result
}

113
internal/ym/rate_limiter.go Normal file
View File

@@ -0,0 +1,113 @@
package ym
import (
"fmt"
"net/http"
"sipro-mps/internal/redis"
"time"
"github.com/redis/rueidis"
)
// RateLimit defines a rate limit configuration
type RateLimit struct {
Count int // Number of requests allowed
TimeDelta time.Duration // Time window
}
// Path rate limits for Yandex Market API
var PathLimits = map[string]RateLimit{
"/tariffs/calculate": {Count: 100, TimeDelta: time.Minute},
"/campaigns": {Count: 300, TimeDelta: time.Minute},
"/orders": {Count: 1000, TimeDelta: time.Minute},
}
var rateLimitScript = rueidis.NewLuaScript(`
local key = KEYS[1]
local now = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local limit = tonumber(ARGV[3])
-- Remove old entries outside the time window
redis.call('ZREMRANGEBYSCORE', key, '-inf', now - window)
local count = redis.call('ZCARD', key)
if count < limit then
-- Add new request timestamp and set TTL
redis.call('ZADD', key, now, now)
redis.call('EXPIRE', key, math.ceil(window / 1000))
return 0
else
-- Find oldest request timestamp
local oldest = redis.call('ZRANGE', key, 0, 0, 'WITHSCORES')[2]
-- Return wait time until oldest request expires
return (tonumber(oldest) + window) - now
end
`)
type RateLimitTransport struct {
http.RoundTripper
}
func (t *RateLimitTransport) RoundTrip(req *http.Request) (*http.Response, error) {
ctx := req.Context()
// Extract API key from headers
apiKey := req.Header.Get("Api-Key")
if apiKey == "" {
return nil, fmt.Errorf("Api-Key header is required for rate limiting")
}
// Get path from header or URL
var path string
path = req.URL.Path
// Get rate limit for this path
rateLimit, exists := PathLimits[path]
if !exists {
rateLimit = RateLimit{Count: 100, TimeDelta: time.Minute} // default limit
}
// Create unique key based on API key and path
rateLimitKey := fmt.Sprintf("ym:ratelimit:%s:%s", apiKey, path)
now := time.Now().UnixMilli()
windowMillis := int64(rateLimit.TimeDelta / time.Millisecond)
client := *redis.Client
waitTime, err := rateLimitScript.Exec(ctx, client, []string{rateLimitKey}, []string{
fmt.Sprintf("%d", now),
fmt.Sprintf("%d", windowMillis),
fmt.Sprintf("%d", rateLimit.Count),
}).ToInt64()
if err != nil {
return nil, fmt.Errorf("rate limit script error: %w", err)
}
if waitTime > 0 {
select {
case <-time.After(time.Duration(waitTime) * time.Millisecond):
case <-ctx.Done():
return nil, ctx.Err()
}
}
return t.RoundTripper.RoundTrip(req)
}
// NewRateLimitTransport creates a new rate limiting transport
func NewRateLimitTransport() *RateLimitTransport {
return &RateLimitTransport{
RoundTripper: http.DefaultTransport,
}
}
// SetPathLimit sets a custom rate limit for a specific path
func SetPathLimit(path string, timeDelta time.Duration, count int) {
PathLimits[path] = RateLimit{
Count: count,
TimeDelta: timeDelta,
}
}

View File

@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "7.14.0"
}
}

1
pkg/api/yandex/raw Submodule

Submodule pkg/api/yandex/raw added at 7d76f430a2

24
pkg/api/yandex/ymclient/.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
*.test
*.prof

View File

@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
7.14.0

View File

@@ -0,0 +1,8 @@
language: go
install:
- go get -d -v .
script:
- go build -v ./

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,199 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
)
// AuthAPIService AuthAPI service
type AuthAPIService service
type AuthAPIGetAuthTokenInfoRequest struct {
ctx context.Context
ApiService *AuthAPIService
}
func (r AuthAPIGetAuthTokenInfoRequest) Execute() (*GetTokenInfoResponse, *http.Response, error) {
return r.ApiService.GetAuthTokenInfoExecute(r)
}
/*
GetAuthTokenInfo Получение информации об авторизационном токене
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getAuthTokenInfo.md) %}
{% note info "Метод доступен только для Api-Key-токена." %}
{% endnote %}
Возвращает информацию о переданном авторизационном токене.
|**:no-translate[⚙️] Лимит:** 100 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return AuthAPIGetAuthTokenInfoRequest
*/
func (a *AuthAPIService) GetAuthTokenInfo(ctx context.Context) AuthAPIGetAuthTokenInfoRequest {
return AuthAPIGetAuthTokenInfoRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetTokenInfoResponse
func (a *AuthAPIService) GetAuthTokenInfoExecute(r AuthAPIGetAuthTokenInfoRequest) (*GetTokenInfoResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetTokenInfoResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "AuthAPIService.GetAuthTokenInfo")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/auth/token"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,924 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// BidsAPIService BidsAPI service
type BidsAPIService service
type BidsAPIGetBidsInfoForBusinessRequest struct {
ctx context.Context
ApiService *BidsAPIService
businessId int64
pageToken *string
limit *int32
getBidsInfoRequest *GetBidsInfoRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r BidsAPIGetBidsInfoForBusinessRequest) PageToken(pageToken string) BidsAPIGetBidsInfoForBusinessRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r BidsAPIGetBidsInfoForBusinessRequest) Limit(limit int32) BidsAPIGetBidsInfoForBusinessRequest {
r.limit = &limit
return r
}
// description
func (r BidsAPIGetBidsInfoForBusinessRequest) GetBidsInfoRequest(getBidsInfoRequest GetBidsInfoRequest) BidsAPIGetBidsInfoForBusinessRequest {
r.getBidsInfoRequest = &getBidsInfoRequest
return r
}
func (r BidsAPIGetBidsInfoForBusinessRequest) Execute() (*GetBidsInfoResponse, *http.Response, error) {
return r.ApiService.GetBidsInfoForBusinessExecute(r)
}
/*
GetBidsInfoForBusiness Информация об установленных ставках
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getBidsInfoForBusiness.md) %}
Возвращает значения ставок для заданных товаров.
{% note warning "Получить информацию по кампаниям, созданным в кабинете, не получится" %}
В ответе возвращаются значения только тех ставок, которые вы установили через запрос [PUT businesses/{businessId}/bids](../../reference/bids/putBidsForBusiness.md).
{% endnote %}
В одном запросе может быть максимум 1500 товаров.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return BidsAPIGetBidsInfoForBusinessRequest
*/
func (a *BidsAPIService) GetBidsInfoForBusiness(ctx context.Context, businessId int64) BidsAPIGetBidsInfoForBusinessRequest {
return BidsAPIGetBidsInfoForBusinessRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetBidsInfoResponse
func (a *BidsAPIService) GetBidsInfoForBusinessExecute(r BidsAPIGetBidsInfoForBusinessRequest) (*GetBidsInfoResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetBidsInfoResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BidsAPIService.GetBidsInfoForBusiness")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/bids/info"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getBidsInfoRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type BidsAPIGetBidsRecommendationsRequest struct {
ctx context.Context
ApiService *BidsAPIService
businessId int64
getBidsRecommendationsRequest *GetBidsRecommendationsRequest
}
// description.
func (r BidsAPIGetBidsRecommendationsRequest) GetBidsRecommendationsRequest(getBidsRecommendationsRequest GetBidsRecommendationsRequest) BidsAPIGetBidsRecommendationsRequest {
r.getBidsRecommendationsRequest = &getBidsRecommendationsRequest
return r
}
func (r BidsAPIGetBidsRecommendationsRequest) Execute() (*GetBidsRecommendationsResponse, *http.Response, error) {
return r.ApiService.GetBidsRecommendationsExecute(r)
}
/*
GetBidsRecommendations Рекомендованные ставки для заданных товаров
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getBidsRecommendations.md) %}
Возвращает рекомендованные ставки для заданных товаров, что обеспечивает вашим предложениям определенную долю показов, и дополнительные инструменты продвижения.
Для одного товара может возвращаться одна рекомендованная ставка или несколько. Во втором случае разные ставки предназначены для достижения разной доли показов и получения дополнительных инструментов продвижения.
Если товар только добавлен в каталог, но пока не продается, рекомендованной ставки для него не будет.
В одном запросе может быть максимум 1500 товаров.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return BidsAPIGetBidsRecommendationsRequest
*/
func (a *BidsAPIService) GetBidsRecommendations(ctx context.Context, businessId int64) BidsAPIGetBidsRecommendationsRequest {
return BidsAPIGetBidsRecommendationsRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetBidsRecommendationsResponse
func (a *BidsAPIService) GetBidsRecommendationsExecute(r BidsAPIGetBidsRecommendationsRequest) (*GetBidsRecommendationsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetBidsRecommendationsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BidsAPIService.GetBidsRecommendations")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/bids/recommendations"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.getBidsRecommendationsRequest == nil {
return localVarReturnValue, nil, reportError("getBidsRecommendationsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getBidsRecommendationsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type BidsAPIPutBidsForBusinessRequest struct {
ctx context.Context
ApiService *BidsAPIService
businessId int64
putSkuBidsRequest *PutSkuBidsRequest
}
// description
func (r BidsAPIPutBidsForBusinessRequest) PutSkuBidsRequest(putSkuBidsRequest PutSkuBidsRequest) BidsAPIPutBidsForBusinessRequest {
r.putSkuBidsRequest = &putSkuBidsRequest
return r
}
func (r BidsAPIPutBidsForBusinessRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.PutBidsForBusinessExecute(r)
}
/*
PutBidsForBusiness Включение буста продаж и установка ставок
{% include notitle [:no-translate[access]](../../_auto/method_scopes/putBidsForBusiness.md) %}
Запускает буст продаж — создает и включает кампанию, добавляет в нее товары и назначает на них ставки.
{% cut "Как в кабинете выглядит кампания, созданная через :no-translate[API]" %}
![](../../_images/api-boost.png)
{% endcut %}
При первом использовании запроса Маркет: создаст единую на все магазины бизнес-аккаунта кампанию, добавит в нее товары с указанными ставками, включит для них ценовую стратегию и запустит продвижение. Повторное использование запроса позволит обновить ставки на товары в этой кампании или добавить новые. Подробнее о ценовой стратегии читайте в [Справке Маркета для продавцов](https://yandex.ru/support/marketplace/marketing/campaigns.html#price-strategy).
Если товара с указанным :no-translate[SKU] нет, он будет проигнорирован. Если в будущем в каталоге появится товар с таким :no-translate[SKU], он автоматически будет добавлен в кампанию с указанной ставкой.
Запрос всегда работает с одной и той же созданной через :no-translate[API] кампанией. Если в кабинете удалить ее, при следующем выполнении запроса Маркет создаст новую. Другими кампаниями управлять через :no-translate[API] не получится. У созданной через :no-translate[API] кампании всегда наибольший приоритет над остальными — изменить его нельзя.
Выполнение запроса включает кампанию и ценовую стратегию, если они были отключены.
Внести другие изменения в созданную через :no-translate[API] кампанию можно в кабинете:
* выключить или включить кампанию;
* изменить ее название;
* выключить или включить ценовую стратегию.
Чтобы остановить продвижение отдельных товаров и удалить их из кампании, передайте для них нулевую ставку в параметре `bid`.
Подробнее о том, как работает буст продаж, читайте в [Справке Маркета для продавцов](https://yandex.ru/support/marketplace/marketing/campaigns.html).
Узнать расходы на буст продаж можно с помощью запроса [POST campaigns/{campaignId}/stats/orders](../../reference/stats/getOrdersStats.md). Сумма содержится в поле `bidFee`.
{% note info "Данные обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 1 000 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return BidsAPIPutBidsForBusinessRequest
*/
func (a *BidsAPIService) PutBidsForBusiness(ctx context.Context, businessId int64) BidsAPIPutBidsForBusinessRequest {
return BidsAPIPutBidsForBusinessRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *BidsAPIService) PutBidsForBusinessExecute(r BidsAPIPutBidsForBusinessRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPut
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BidsAPIService.PutBidsForBusiness")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/bids"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.putSkuBidsRequest == nil {
return localVarReturnValue, nil, reportError("putSkuBidsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.putSkuBidsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type BidsAPIPutBidsForCampaignRequest struct {
ctx context.Context
ApiService *BidsAPIService
campaignId int64
putSkuBidsRequest *PutSkuBidsRequest
}
// description
func (r BidsAPIPutBidsForCampaignRequest) PutSkuBidsRequest(putSkuBidsRequest PutSkuBidsRequest) BidsAPIPutBidsForCampaignRequest {
r.putSkuBidsRequest = &putSkuBidsRequest
return r
}
func (r BidsAPIPutBidsForCampaignRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.PutBidsForCampaignExecute(r)
}
/*
PutBidsForCampaign Включение буста продаж и установка ставок для магазина
{% include notitle [:no-translate[access]](../../_auto/method_scopes/putBidsForCampaign.md) %}
Запускает буст продаж в указанном магазине — создает и включает кампанию, добавляет в нее товары и назначает на них ставки.
При первом использовании запроса Маркет: создаст кампанию, добавит в нее товары с указанными ставками для заданного магазина, включит для них ценовую стратегию и запустит продвижение. Повторное использование запроса позволит обновить ставки на товары в этой кампании или добавить новые. Подробнее о ценовой стратегии читайте в [Справке Маркета для продавцов](https://yandex.ru/support/marketplace/marketing/campaigns.html#price-strategy).
Если товара с указанным :no-translate[SKU] нет, он будет проигнорирован. Если в будущем в каталоге появится товар с таким :no-translate[SKU], он автоматически будет добавлен в кампанию с указанной ставкой.
Запрос всегда работает с одной и той же кампанией, созданной через этот запрос или [PUT businesses/{businessId}/bids](/reference/bids/putBidsForBusiness). Если в кабинете удалить ее, при следующем выполнении запроса Маркет создаст новую. У созданной через :no-translate[API] кампании всегда наибольший приоритет над остальными — изменить его нельзя.
Выполнение запроса включает кампанию и ценовую стратегию, если они были отключены.
Внести другие изменения в созданную через :no-translate[API] кампанию можно в кабинете:
* выключить или включить кампанию;
* изменить ее название;
* выключить или включить ценовую стратегию.
Чтобы остановить продвижение отдельных товаров и удалить их из кампании, передайте для них нулевую ставку в параметре `bid`.
Подробнее о том, как работает буст продаж, читайте в [Справке Маркета для продавцов](https://yandex.ru/support/marketplace/marketing/campaigns.html).
Узнать расходы на буст продаж можно с помощью запроса [POST campaigns/{campaignId}/stats/orders](../../reference/stats/getOrdersStats.md). Сумма содержится в поле `bidFee`.
{% note info "Данные обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 1 000 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return BidsAPIPutBidsForCampaignRequest
*/
func (a *BidsAPIService) PutBidsForCampaign(ctx context.Context, campaignId int64) BidsAPIPutBidsForCampaignRequest {
return BidsAPIPutBidsForCampaignRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *BidsAPIService) PutBidsForCampaignExecute(r BidsAPIPutBidsForCampaignRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPut
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BidsAPIService.PutBidsForCampaign")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/bids"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.putSkuBidsRequest == nil {
return localVarReturnValue, nil, reportError("putSkuBidsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.putSkuBidsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,213 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// BusinessesAPIService BusinessesAPI service
type BusinessesAPIService service
type BusinessesAPIGetBusinessSettingsRequest struct {
ctx context.Context
ApiService *BusinessesAPIService
businessId int64
}
func (r BusinessesAPIGetBusinessSettingsRequest) Execute() (*GetBusinessSettingsResponse, *http.Response, error) {
return r.ApiService.GetBusinessSettingsExecute(r)
}
/*
GetBusinessSettings Настройки кабинета
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getBusinessSettings.md) %}
Возвращает информацию о настройках кабинета, идентификатор которого указан в запросе.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return BusinessesAPIGetBusinessSettingsRequest
*/
func (a *BusinessesAPIService) GetBusinessSettings(ctx context.Context, businessId int64) BusinessesAPIGetBusinessSettingsRequest {
return BusinessesAPIGetBusinessSettingsRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetBusinessSettingsResponse
func (a *BusinessesAPIService) GetBusinessSettingsExecute(r BusinessesAPIGetBusinessSettingsRequest) (*GetBusinessSettingsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetBusinessSettingsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BusinessesAPIService.GetBusinessSettings")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/settings"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,612 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// CampaignsAPIService CampaignsAPI service
type CampaignsAPIService service
type CampaignsAPIGetCampaignRequest struct {
ctx context.Context
ApiService *CampaignsAPIService
campaignId int64
}
func (r CampaignsAPIGetCampaignRequest) Execute() (*GetCampaignResponse, *http.Response, error) {
return r.ApiService.GetCampaignExecute(r)
}
/*
GetCampaign Информация о магазине
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCampaign.md) %}
Возвращает информацию о магазине.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return CampaignsAPIGetCampaignRequest
*/
func (a *CampaignsAPIService) GetCampaign(ctx context.Context, campaignId int64) CampaignsAPIGetCampaignRequest {
return CampaignsAPIGetCampaignRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetCampaignResponse
func (a *CampaignsAPIService) GetCampaignExecute(r CampaignsAPIGetCampaignRequest) (*GetCampaignResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCampaignResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CampaignsAPIService.GetCampaign")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type CampaignsAPIGetCampaignSettingsRequest struct {
ctx context.Context
ApiService *CampaignsAPIService
campaignId int64
}
func (r CampaignsAPIGetCampaignSettingsRequest) Execute() (*GetCampaignSettingsResponse, *http.Response, error) {
return r.ApiService.GetCampaignSettingsExecute(r)
}
/*
GetCampaignSettings Настройки магазина
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCampaignSettings.md) %}
Возвращает информацию о настройках магазина, идентификатор которого указан в запросе.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return CampaignsAPIGetCampaignSettingsRequest
*/
func (a *CampaignsAPIService) GetCampaignSettings(ctx context.Context, campaignId int64) CampaignsAPIGetCampaignSettingsRequest {
return CampaignsAPIGetCampaignSettingsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetCampaignSettingsResponse
func (a *CampaignsAPIService) GetCampaignSettingsExecute(r CampaignsAPIGetCampaignSettingsRequest) (*GetCampaignSettingsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCampaignSettingsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CampaignsAPIService.GetCampaignSettings")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/settings"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type CampaignsAPIGetCampaignsRequest struct {
ctx context.Context
ApiService *CampaignsAPIService
page *int32
pageSize *int32
}
// {% note warning \&quot;Если в методе есть :no-translate[&#x60;page_token&#x60;]\&quot; %} Используйте его вместо параметра :no-translate[&#x60;page&#x60;]. [Подробнее о типах пагинации и их использовании](:no-translate[../../concepts/pagination.md]) {% endnote %} Номер страницы результатов. Используется вместе с параметром :no-translate[&#x60;pageSize&#x60;]. :no-translate[&#x60;page&#x60;] игнорируется, если задан :no-translate[&#x60;page_token&#x60;] или :no-translate[&#x60;limit&#x60;].
func (r CampaignsAPIGetCampaignsRequest) Page(page int32) CampaignsAPIGetCampaignsRequest {
r.page = &page
return r
}
// Размер страницы. Используется вместе с параметром :no-translate[&#x60;page&#x60;]. :no-translate[&#x60;pageSize&#x60;] игнорируется, если задан :no-translate[&#x60;page_token&#x60;] или :no-translate[&#x60;limit&#x60;].
func (r CampaignsAPIGetCampaignsRequest) PageSize(pageSize int32) CampaignsAPIGetCampaignsRequest {
r.pageSize = &pageSize
return r
}
func (r CampaignsAPIGetCampaignsRequest) Execute() (*GetCampaignsResponse, *http.Response, error) {
return r.ApiService.GetCampaignsExecute(r)
}
/*
GetCampaigns Список магазинов пользователя
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCampaigns.md) %}
**Для Api-Key-токена:** возвращает список магазинов в кабинете, для которого выдан токен. Нельзя получить список только подагентских магазинов.
**Для OAuth-токена:** возвращает список магазинов, к которым имеет доступ пользователь — владелец авторизационного токена, использованного в запросе. Для агентских пользователей список состоит из подагентских магазинов.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return CampaignsAPIGetCampaignsRequest
*/
func (a *CampaignsAPIService) GetCampaigns(ctx context.Context) CampaignsAPIGetCampaignsRequest {
return CampaignsAPIGetCampaignsRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetCampaignsResponse
func (a *CampaignsAPIService) GetCampaignsExecute(r CampaignsAPIGetCampaignsRequest) (*GetCampaignsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCampaignsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CampaignsAPIService.GetCampaigns")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.page != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "", "")
} else {
var defaultValue int32 = 1
r.page = &defaultValue
}
if r.pageSize != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "pageSize", r.pageSize, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,417 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
)
// CategoriesAPIService CategoriesAPI service
type CategoriesAPIService service
type CategoriesAPIGetCategoriesMaxSaleQuantumRequest struct {
ctx context.Context
ApiService *CategoriesAPIService
getCategoriesMaxSaleQuantumRequest *GetCategoriesMaxSaleQuantumRequest
}
func (r CategoriesAPIGetCategoriesMaxSaleQuantumRequest) GetCategoriesMaxSaleQuantumRequest(getCategoriesMaxSaleQuantumRequest GetCategoriesMaxSaleQuantumRequest) CategoriesAPIGetCategoriesMaxSaleQuantumRequest {
r.getCategoriesMaxSaleQuantumRequest = &getCategoriesMaxSaleQuantumRequest
return r
}
func (r CategoriesAPIGetCategoriesMaxSaleQuantumRequest) Execute() (*GetCategoriesMaxSaleQuantumResponse, *http.Response, error) {
return r.ApiService.GetCategoriesMaxSaleQuantumExecute(r)
}
/*
GetCategoriesMaxSaleQuantum Лимит на установку кванта продажи и минимального количества товаров в заказе
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCategoriesMaxSaleQuantum.md) %}
Возвращает лимит на установку [кванта](:no-translate[*quantum]) и минимального количества товаров в заказе, которые вы можете задать для товаров указанных категорий.
Если вы передадите значение кванта или минимального количества товаров выше установленного Маркетом ограничения, товар будет скрыт с витрины.
Подробнее о том, как продавать товары по несколько штук, читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/assortment/fields/quantum).
|**:no-translate[⚙️] Лимит:** 5 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return CategoriesAPIGetCategoriesMaxSaleQuantumRequest
Deprecated
*/
func (a *CategoriesAPIService) GetCategoriesMaxSaleQuantum(ctx context.Context) CategoriesAPIGetCategoriesMaxSaleQuantumRequest {
return CategoriesAPIGetCategoriesMaxSaleQuantumRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetCategoriesMaxSaleQuantumResponse
//
// Deprecated
func (a *CategoriesAPIService) GetCategoriesMaxSaleQuantumExecute(r CategoriesAPIGetCategoriesMaxSaleQuantumRequest) (*GetCategoriesMaxSaleQuantumResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCategoriesMaxSaleQuantumResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CategoriesAPIService.GetCategoriesMaxSaleQuantum")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/categories/max-sale-quantum"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.getCategoriesMaxSaleQuantumRequest == nil {
return localVarReturnValue, nil, reportError("getCategoriesMaxSaleQuantumRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getCategoriesMaxSaleQuantumRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type CategoriesAPIGetCategoriesTreeRequest struct {
ctx context.Context
ApiService *CategoriesAPIService
getCategoriesRequest *GetCategoriesRequest
}
func (r CategoriesAPIGetCategoriesTreeRequest) GetCategoriesRequest(getCategoriesRequest GetCategoriesRequest) CategoriesAPIGetCategoriesTreeRequest {
r.getCategoriesRequest = &getCategoriesRequest
return r
}
func (r CategoriesAPIGetCategoriesTreeRequest) Execute() (*GetCategoriesResponse, *http.Response, error) {
return r.ApiService.GetCategoriesTreeExecute(r)
}
/*
GetCategoriesTree Дерево категорий
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCategoriesTree.md) %}
Возвращает дерево категорий Маркета.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return CategoriesAPIGetCategoriesTreeRequest
*/
func (a *CategoriesAPIService) GetCategoriesTree(ctx context.Context) CategoriesAPIGetCategoriesTreeRequest {
return CategoriesAPIGetCategoriesTreeRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetCategoriesResponse
func (a *CategoriesAPIService) GetCategoriesTreeExecute(r CategoriesAPIGetCategoriesTreeRequest) (*GetCategoriesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCategoriesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CategoriesAPIService.GetCategoriesTree")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/categories/tree"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getCategoriesRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,676 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// ContentAPIService ContentAPI service
type ContentAPIService service
type ContentAPIGetCategoryContentParametersRequest struct {
ctx context.Context
ApiService *ContentAPIService
categoryId int64
businessId *int64
}
// Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). Передайте параметр, чтобы получить характеристики, которые являются особенностями варианта товара в данном кабинете.
func (r ContentAPIGetCategoryContentParametersRequest) BusinessId(businessId int64) ContentAPIGetCategoryContentParametersRequest {
r.businessId = &businessId
return r
}
func (r ContentAPIGetCategoryContentParametersRequest) Execute() (*GetCategoryContentParametersResponse, *http.Response, error) {
return r.ApiService.GetCategoryContentParametersExecute(r)
}
/*
GetCategoryContentParameters Списки характеристик товаров по категориям
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCategoryContentParameters.md) %}
Возвращает список характеристик с допустимыми значениями для заданной листовой категории — той, у которой нет дочерних категорий.
|**:no-translate[⚙️] Лимит:** 100 категорий в минуту |
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param categoryId Идентификатор категории на Маркете. Чтобы узнать идентификатор категории, к которой относится интересующий вас товар, воспользуйтесь запросом [:no-translate[POST categories/tree]](:no-translate[../../reference/categories/getCategoriesTree.md]).
@return ContentAPIGetCategoryContentParametersRequest
*/
func (a *ContentAPIService) GetCategoryContentParameters(ctx context.Context, categoryId int64) ContentAPIGetCategoryContentParametersRequest {
return ContentAPIGetCategoryContentParametersRequest{
ApiService: a,
ctx: ctx,
categoryId: categoryId,
}
}
// Execute executes the request
//
// @return GetCategoryContentParametersResponse
func (a *ContentAPIService) GetCategoryContentParametersExecute(r ContentAPIGetCategoryContentParametersRequest) (*GetCategoryContentParametersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCategoryContentParametersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ContentAPIService.GetCategoryContentParameters")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/category/{categoryId}/parameters"
localVarPath = strings.Replace(localVarPath, "{"+"categoryId"+"}", url.PathEscape(parameterValueToString(r.categoryId, "categoryId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.categoryId < 1 {
return localVarReturnValue, nil, reportError("categoryId must be greater than 1")
}
if r.businessId != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "businessId", r.businessId, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ContentAPIGetOfferCardsContentStatusRequest struct {
ctx context.Context
ApiService *ContentAPIService
businessId int64
pageToken *string
limit *int32
getOfferCardsContentStatusRequest *GetOfferCardsContentStatusRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r ContentAPIGetOfferCardsContentStatusRequest) PageToken(pageToken string) ContentAPIGetOfferCardsContentStatusRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r ContentAPIGetOfferCardsContentStatusRequest) Limit(limit int32) ContentAPIGetOfferCardsContentStatusRequest {
r.limit = &limit
return r
}
func (r ContentAPIGetOfferCardsContentStatusRequest) GetOfferCardsContentStatusRequest(getOfferCardsContentStatusRequest GetOfferCardsContentStatusRequest) ContentAPIGetOfferCardsContentStatusRequest {
r.getOfferCardsContentStatusRequest = &getOfferCardsContentStatusRequest
return r
}
func (r ContentAPIGetOfferCardsContentStatusRequest) Execute() (*GetOfferCardsContentStatusResponse, *http.Response, error) {
return r.ApiService.GetOfferCardsContentStatusExecute(r)
}
/*
GetOfferCardsContentStatus Получение информации о заполненности карточек магазина
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOfferCardsContentStatus.md) %}
Возвращает сведения о состоянии контента для заданных товаров:
* создана ли карточка товара и в каком она статусе;
* рейтинг карточки — на сколько процентов она заполнена;
* переданные характеристики товаров;
* есть ли ошибки или предупреждения, связанные с контентом;
* рекомендации по заполнению карточки.
|**:no-translate[⚙️] Лимит:** 600 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return ContentAPIGetOfferCardsContentStatusRequest
*/
func (a *ContentAPIService) GetOfferCardsContentStatus(ctx context.Context, businessId int64) ContentAPIGetOfferCardsContentStatusRequest {
return ContentAPIGetOfferCardsContentStatusRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetOfferCardsContentStatusResponse
func (a *ContentAPIService) GetOfferCardsContentStatusExecute(r ContentAPIGetOfferCardsContentStatusRequest) (*GetOfferCardsContentStatusResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOfferCardsContentStatusResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ContentAPIService.GetOfferCardsContentStatus")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/offer-cards"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getOfferCardsContentStatusRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ContentAPIUpdateOfferContentRequest struct {
ctx context.Context
ApiService *ContentAPIService
businessId int64
updateOfferContentRequest *UpdateOfferContentRequest
}
func (r ContentAPIUpdateOfferContentRequest) UpdateOfferContentRequest(updateOfferContentRequest UpdateOfferContentRequest) ContentAPIUpdateOfferContentRequest {
r.updateOfferContentRequest = &updateOfferContentRequest
return r
}
func (r ContentAPIUpdateOfferContentRequest) Execute() (*UpdateOfferContentResponse, *http.Response, error) {
return r.ApiService.UpdateOfferContentExecute(r)
}
/*
UpdateOfferContent Редактирование категорийных характеристик товара
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateOfferContent.md) %}
Редактирует характеристики товара, которые специфичны для категории, к которой он относится.
{% note warning "Здесь только то, что относится к конкретной категории" %}
Если вам нужно изменить основные параметры товара (название, описание, изображения, видео, производитель, штрихкод), воспользуйтесь запросом [POST businesses/{businessId}/offer-mappings/update](../../reference/business-assortment/updateOfferMappings.md).
{% endnote %}
Чтобы удалить характеристики, которые заданы в параметрах с типом `string`, передайте пустое значение.
{% note info "Данные в каталоге обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return ContentAPIUpdateOfferContentRequest
*/
func (a *ContentAPIService) UpdateOfferContent(ctx context.Context, businessId int64) ContentAPIUpdateOfferContentRequest {
return ContentAPIUpdateOfferContentRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return UpdateOfferContentResponse
func (a *ContentAPIService) UpdateOfferContentExecute(r ContentAPIUpdateOfferContentRequest) (*UpdateOfferContentResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *UpdateOfferContentResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "ContentAPIService.UpdateOfferContent")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/offer-cards/update"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.updateOfferContentRequest == nil {
return localVarReturnValue, nil, reportError("updateOfferContentRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateOfferContentRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,205 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
)
// DeliveryServicesAPIService DeliveryServicesAPI service
type DeliveryServicesAPIService service
type DeliveryServicesAPIGetDeliveryServicesRequest struct {
ctx context.Context
ApiService *DeliveryServicesAPIService
}
func (r DeliveryServicesAPIGetDeliveryServicesRequest) Execute() (*GetDeliveryServicesResponse, *http.Response, error) {
return r.ApiService.GetDeliveryServicesExecute(r)
}
/*
GetDeliveryServices Справочник служб доставки
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getDeliveryServices.md) %}
Возвращает справочник служб доставки: идентификаторы и наименования.
|**:no-translate[⚙️] Лимит:** 5 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return DeliveryServicesAPIGetDeliveryServicesRequest
*/
func (a *DeliveryServicesAPIService) GetDeliveryServices(ctx context.Context) DeliveryServicesAPIGetDeliveryServicesRequest {
return DeliveryServicesAPIGetDeliveryServicesRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetDeliveryServicesResponse
func (a *DeliveryServicesAPIService) GetDeliveryServicesExecute(r DeliveryServicesAPIGetDeliveryServicesRequest) (*GetDeliveryServicesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetDeliveryServicesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DeliveryServicesAPIService.GetDeliveryServices")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/delivery/services"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,225 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// GoodsStatsAPIService GoodsStatsAPI service
type GoodsStatsAPIService service
type GoodsStatsAPIGetGoodsStatsRequest struct {
ctx context.Context
ApiService *GoodsStatsAPIService
campaignId int64
getGoodsStatsRequest *GetGoodsStatsRequest
}
func (r GoodsStatsAPIGetGoodsStatsRequest) GetGoodsStatsRequest(getGoodsStatsRequest GetGoodsStatsRequest) GoodsStatsAPIGetGoodsStatsRequest {
r.getGoodsStatsRequest = &getGoodsStatsRequest
return r
}
func (r GoodsStatsAPIGetGoodsStatsRequest) Execute() (*GetGoodsStatsResponse, *http.Response, error) {
return r.ApiService.GetGoodsStatsExecute(r)
}
/*
GetGoodsStats Отчет по товарам
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getGoodsStats.md) %}
Возвращает подробный отчет по товарам, которые вы разместили на Маркете. С помощью отчета вы можете узнать, например, об остатках на складе, об условиях хранения ваших товаров и т. д.
|**:no-translate[⚙️] Лимит:** 5 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return GoodsStatsAPIGetGoodsStatsRequest
*/
func (a *GoodsStatsAPIService) GetGoodsStats(ctx context.Context, campaignId int64) GoodsStatsAPIGetGoodsStatsRequest {
return GoodsStatsAPIGetGoodsStatsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetGoodsStatsResponse
func (a *GoodsStatsAPIService) GetGoodsStatsExecute(r GoodsStatsAPIGetGoodsStatsRequest) (*GetGoodsStatsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetGoodsStatsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "GoodsStatsAPIService.GetGoodsStats")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/stats/skus"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getGoodsStatsRequest == nil {
return localVarReturnValue, nil, reportError("getGoodsStatsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getGoodsStatsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,664 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// HiddenOffersAPIService HiddenOffersAPI service
type HiddenOffersAPIService service
type HiddenOffersAPIAddHiddenOffersRequest struct {
ctx context.Context
ApiService *HiddenOffersAPIService
campaignId int64
addHiddenOffersRequest *AddHiddenOffersRequest
}
// Запрос на скрытие оферов.
func (r HiddenOffersAPIAddHiddenOffersRequest) AddHiddenOffersRequest(addHiddenOffersRequest AddHiddenOffersRequest) HiddenOffersAPIAddHiddenOffersRequest {
r.addHiddenOffersRequest = &addHiddenOffersRequest
return r
}
func (r HiddenOffersAPIAddHiddenOffersRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.AddHiddenOffersExecute(r)
}
/*
AddHiddenOffers Скрытие товаров и настройки скрытия
{% include notitle [:no-translate[access]](../../_auto/method_scopes/addHiddenOffers.md) %}
Скрывает товары магазина на Маркете.
{% note info "Данные в каталоге обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return HiddenOffersAPIAddHiddenOffersRequest
*/
func (a *HiddenOffersAPIService) AddHiddenOffers(ctx context.Context, campaignId int64) HiddenOffersAPIAddHiddenOffersRequest {
return HiddenOffersAPIAddHiddenOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *HiddenOffersAPIService) AddHiddenOffersExecute(r HiddenOffersAPIAddHiddenOffersRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "HiddenOffersAPIService.AddHiddenOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/hidden-offers"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.addHiddenOffersRequest == nil {
return localVarReturnValue, nil, reportError("addHiddenOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.addHiddenOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type HiddenOffersAPIDeleteHiddenOffersRequest struct {
ctx context.Context
ApiService *HiddenOffersAPIService
campaignId int64
deleteHiddenOffersRequest *DeleteHiddenOffersRequest
}
// Запрос на возобновление показа оферов.
func (r HiddenOffersAPIDeleteHiddenOffersRequest) DeleteHiddenOffersRequest(deleteHiddenOffersRequest DeleteHiddenOffersRequest) HiddenOffersAPIDeleteHiddenOffersRequest {
r.deleteHiddenOffersRequest = &deleteHiddenOffersRequest
return r
}
func (r HiddenOffersAPIDeleteHiddenOffersRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.DeleteHiddenOffersExecute(r)
}
/*
DeleteHiddenOffers Возобновление показа товаров
{% include notitle [:no-translate[access]](../../_auto/method_scopes/deleteHiddenOffers.md) %}
Возобновляет показ скрытых вами товаров магазина на Маркете.
{% note info "Данные в каталоге обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return HiddenOffersAPIDeleteHiddenOffersRequest
*/
func (a *HiddenOffersAPIService) DeleteHiddenOffers(ctx context.Context, campaignId int64) HiddenOffersAPIDeleteHiddenOffersRequest {
return HiddenOffersAPIDeleteHiddenOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *HiddenOffersAPIService) DeleteHiddenOffersExecute(r HiddenOffersAPIDeleteHiddenOffersRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "HiddenOffersAPIService.DeleteHiddenOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/hidden-offers/delete"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.deleteHiddenOffersRequest == nil {
return localVarReturnValue, nil, reportError("deleteHiddenOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.deleteHiddenOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type HiddenOffersAPIGetHiddenOffersRequest struct {
ctx context.Context
ApiService *HiddenOffersAPIService
campaignId int64
offerId *[]string
pageToken *string
limit *int32
}
// Идентификатор скрытого предложения.
func (r HiddenOffersAPIGetHiddenOffersRequest) OfferId(offerId []string) HiddenOffersAPIGetHiddenOffersRequest {
r.offerId = &offerId
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r HiddenOffersAPIGetHiddenOffersRequest) PageToken(pageToken string) HiddenOffersAPIGetHiddenOffersRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r HiddenOffersAPIGetHiddenOffersRequest) Limit(limit int32) HiddenOffersAPIGetHiddenOffersRequest {
r.limit = &limit
return r
}
func (r HiddenOffersAPIGetHiddenOffersRequest) Execute() (*GetHiddenOffersResponse, *http.Response, error) {
return r.ApiService.GetHiddenOffersExecute(r)
}
/*
GetHiddenOffers Информация о скрытых вами товарах
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getHiddenOffers.md) %}
Возвращает список скрытых вами товаров для заданного магазина.
В списке будут товары, скрытые любым способом — через :no-translate[API], с помощью YML-фида, в кабинете и так далее.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту, не более 500 товаров в одном запросе|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return HiddenOffersAPIGetHiddenOffersRequest
*/
func (a *HiddenOffersAPIService) GetHiddenOffers(ctx context.Context, campaignId int64) HiddenOffersAPIGetHiddenOffersRequest {
return HiddenOffersAPIGetHiddenOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetHiddenOffersResponse
func (a *HiddenOffersAPIService) GetHiddenOffersExecute(r HiddenOffersAPIGetHiddenOffersRequest) (*GetHiddenOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetHiddenOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "HiddenOffersAPIService.GetHiddenOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/hidden-offers"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.offerId != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "offer_id", r.offerId, "", "csv")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,785 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// OfferMappingsAPIService OfferMappingsAPI service
type OfferMappingsAPIService service
type OfferMappingsAPIGetOfferMappingEntriesRequest struct {
ctx context.Context
ApiService *OfferMappingsAPIService
campaignId int64
offerId *[]string
shopSku *[]string
mappingKind *OfferMappingKindType
status *[]OfferProcessingStatusType
availability *[]OfferAvailabilityStatusType
categoryId *[]int32
vendor *[]string
pageToken *string
limit *int32
}
// Идентификатор товара в каталоге.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) OfferId(offerId []string) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.offerId = &offerId
return r
}
// Ваш SKU товара. Параметр может быть указан несколько раз, например: &#x60;&#x60;&#x60;text translate&#x3D;no ...shop_sku&#x3D;123&amp;shop_sku&#x3D;129&amp;shop_sku&#x3D;141... &#x60;&#x60;&#x60; В запросе можно указать либо параметр &#x60;shopSku&#x60;, либо любые параметры для фильтрации товаров. Совместное использование параметра &#x60;shopSku&#x60; и параметров для фильтрации приведет к ошибке.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) ShopSku(shopSku []string) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.shopSku = &shopSku
return r
}
// Тип маппинга.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) MappingKind(mappingKind OfferMappingKindType) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.mappingKind = &mappingKind
return r
}
// Фильтрация по статусу публикации товара: * &#x60;READY&#x60; — товар прошел модерацию. * &#x60;IN_WORK&#x60; — товар проходит модерацию. * &#x60;NEED_CONTENT&#x60; — для товара без SKU на Маркете &#x60;marketSku&#x60; нужно найти карточку самостоятельно или создать ее. * &#x60;NEED_INFO&#x60; — товар не прошел модерацию из-за ошибок или недостающих сведений в описании товара. * &#x60;REJECTED&#x60; — товар не прошел модерацию, так как Маркет не планирует размещать подобные товары. * &#x60;SUSPENDED&#x60; — товар не прошел модерацию, так как Маркет пока не размещает подобные товары. * &#x60;OTHER&#x60; — товар не прошел модерацию по другой причине. Можно указать несколько статусов в одном параметре, через запятую, или в нескольких одинаковых параметрах. Например: &#x60;&#x60;&#x60;text translate&#x3D;no ...status&#x3D;READY,IN_WORK... ...status&#x3D;READY&amp;status&#x3D;IN_WORK... &#x60;&#x60;&#x60; В запросе можно указать либо параметр shopSku, либо любые параметры для фильтрации товаров. Совместное использование параметра shopSku и параметров для фильтрации приведет к ошибке.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) Status(status []OfferProcessingStatusType) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.status = &status
return r
}
// Фильтрация по планам поставок товара: * &#x60;ACTIVE&#x60; — поставки будут. * &#x60;INACTIVE&#x60; — поставок не будет: товар есть на складе, но вы больше не планируете его поставлять. * &#x60;DELISTED&#x60; — архив: товар закончился на складе, и его поставок больше не будет. Можно указать несколько значений в одном параметре, через запятую, или в нескольких одинаковых параметрах. Например: &#x60;&#x60;&#x60;text translate&#x3D;no ...availability&#x3D;INACTIVE,DELISTED... ...availability&#x3D;INACTIVE&amp;availability&#x3D;DELISTED... &#x60;&#x60;&#x60; В запросе можно указать либо параметр &#x60;shopSku&#x60;, либо любые параметры для фильтрации товаров. Совместное использование параметра &#x60;shopSku&#x60; и параметров для фильтрации приведет к ошибке.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) Availability(availability []OfferAvailabilityStatusType) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.availability = &availability
return r
}
// Фильтрация по идентификатору категории на Маркете. Чтобы узнать идентификатор категории, к которой относится товар, воспользуйтесь запросом [POST categories/tree](../../reference/categories/getCategoriesTree.md). Можно указать несколько идентификаторов в одном параметре, через запятую, или в нескольких одинаковых параметрах. Например: &#x60;&#x60;&#x60;text translate&#x3D;no ...category_id&#x3D;14727164,14382343... ...category_id&#x3D;14727164&amp;category_id&#x3D;14382343... &#x60;&#x60;&#x60; В запросе можно указать либо параметр &#x60;shopSku&#x60;, либо любые параметры для фильтрации товаров. Совместное использование параметра &#x60;shopSku&#x60; и параметров для фильтрации приведет к ошибке.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) CategoryId(categoryId []int32) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.categoryId = &categoryId
return r
}
// Фильтрация по бренду товара. Можно указать несколько брендов в одном параметре, через запятую, или в нескольких одинаковых параметрах. Например: &#x60;&#x60;&#x60;text translate&#x3D;no ...vendor&#x3D;Aqua%20Minerale,Borjomi... ...vendor&#x3D;Aqua%20Minerale&amp;vendor&#x3D;Borjomi... &#x60;&#x60;&#x60; Чтобы товар попал в результаты фильтрации, его бренд должен точно совпадать с одним из указанных в запросе. Например, если указан бренд :no-translate[Schwarzkopf], то в результатах не будет товаров :no-translate[Schwarzkopf Professional]. Если в названии бренда есть символы, которые не входят в таблицу :no-translate[ASCII] (в том числе кириллические символы), используйте для них URL-кодирование. Например, пробел — %20, апостроф «&#39;» — %27 и т. д. Подробнее см. в разделе [Кодирование :no-translate[URL] русскоязычной Википедии](https://ru.wikipedia.org/wiki/URL#Кодирование_URL). В запросе можно указать либо параметр shopSku, либо любые параметры для фильтрации товаров. Совместное использование параметра &#x60;shopSku&#x60; и параметров для фильтрации приведет к ошибке.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) Vendor(vendor []string) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.vendor = &vendor
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) PageToken(pageToken string) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) Limit(limit int32) OfferMappingsAPIGetOfferMappingEntriesRequest {
r.limit = &limit
return r
}
func (r OfferMappingsAPIGetOfferMappingEntriesRequest) Execute() (*GetOfferMappingEntriesResponse, *http.Response, error) {
return r.ApiService.GetOfferMappingEntriesExecute(r)
}
/*
GetOfferMappingEntries Список товаров в каталоге
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOfferMappingEntries.md) %}
{% note warning "Какой метод использовать вместо устаревшего" %}
[POST businesses/{businessId}/offer-mappings](../../reference/business-assortment/getOfferMappings.md)
{% endnote %}
Для каждого товара, который вы размещаете на Маркете, возвращается информация о карточках Маркета, к которым привязан этот товар:
* Идентификатор текущей карточки (marketSku), карточки, которая проходит модерацию и последней отклоненной карточки.
* Описание товара, которое указано на карточке Маркета. Например, размер упаковки и вес товара.
Результаты возвращаются постранично. Выходные данные содержат идентификатор следующей страницы.
{% note info "Как считается количество товаров в каталоге магазина" %}
По данным за последние семь дней (не включая сегодня).
{% endnote %}
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OfferMappingsAPIGetOfferMappingEntriesRequest
Deprecated
*/
func (a *OfferMappingsAPIService) GetOfferMappingEntries(ctx context.Context, campaignId int64) OfferMappingsAPIGetOfferMappingEntriesRequest {
return OfferMappingsAPIGetOfferMappingEntriesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetOfferMappingEntriesResponse
//
// Deprecated
func (a *OfferMappingsAPIService) GetOfferMappingEntriesExecute(r OfferMappingsAPIGetOfferMappingEntriesRequest) (*GetOfferMappingEntriesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOfferMappingEntriesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OfferMappingsAPIService.GetOfferMappingEntries")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offer-mapping-entries"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.offerId != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "offer_id", r.offerId, "", "csv")
}
if r.shopSku != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "shop_sku", r.shopSku, "", "csv")
}
if r.mappingKind != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "mapping_kind", r.mappingKind, "", "")
}
if r.status != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "status", r.status, "", "csv")
}
if r.availability != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "availability", r.availability, "", "csv")
}
if r.categoryId != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "category_id", r.categoryId, "", "csv")
}
if r.vendor != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "vendor", r.vendor, "", "csv")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest struct {
ctx context.Context
ApiService *OfferMappingsAPIService
campaignId int64
getSuggestedOfferMappingEntriesRequest *GetSuggestedOfferMappingEntriesRequest
}
func (r OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest) GetSuggestedOfferMappingEntriesRequest(getSuggestedOfferMappingEntriesRequest GetSuggestedOfferMappingEntriesRequest) OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest {
r.getSuggestedOfferMappingEntriesRequest = &getSuggestedOfferMappingEntriesRequest
return r
}
func (r OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest) Execute() (*GetSuggestedOfferMappingEntriesResponse, *http.Response, error) {
return r.ApiService.GetSuggestedOfferMappingEntriesExecute(r)
}
/*
GetSuggestedOfferMappingEntries Рекомендованные карточки для товаров
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getSuggestedOfferMappingEntries.md) %}
Возвращает идентификаторы карточек товаров на Маркете, рекомендованных для ваших товаров.
Каждому товару, который вы размещаете, должна соответствовать карточка товара на Маркете со своим идентификатором — :no-translate[SKU] на Маркете. Он указывается в :no-translate[URL] карточки товара, после :no-translate[«...sku=»], например:
##https://market.yandex.ru/product--yandex-kniga/484830016?sku=484830016…##
Чтобы получить для товаров рекомендованные :no-translate[SKU] на Маркете, передайте в теле POST-запроса как можно больше информации о них: названия, производителей, штрихкоды, цены и т. д.
Полученные :no-translate[SKU] можно передать вместе с информацией о ваших товарах с помощью запроса [POST businesses/{businessId}/offer-mappings/update](../../reference/business-assortment/updateOfferMappings.md).
В одном запросе можно получить не более 500 рекомендаций.
|**:no-translate[⚙️] Лимит:** 100 000 рекомендаций в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest
Deprecated
*/
func (a *OfferMappingsAPIService) GetSuggestedOfferMappingEntries(ctx context.Context, campaignId int64) OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest {
return OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetSuggestedOfferMappingEntriesResponse
//
// Deprecated
func (a *OfferMappingsAPIService) GetSuggestedOfferMappingEntriesExecute(r OfferMappingsAPIGetSuggestedOfferMappingEntriesRequest) (*GetSuggestedOfferMappingEntriesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetSuggestedOfferMappingEntriesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OfferMappingsAPIService.GetSuggestedOfferMappingEntries")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offer-mapping-entries/suggestions"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getSuggestedOfferMappingEntriesRequest == nil {
return localVarReturnValue, nil, reportError("getSuggestedOfferMappingEntriesRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getSuggestedOfferMappingEntriesRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OfferMappingsAPIUpdateOfferMappingEntriesRequest struct {
ctx context.Context
ApiService *OfferMappingsAPIService
campaignId int64
updateOfferMappingEntryRequest *UpdateOfferMappingEntryRequest
}
func (r OfferMappingsAPIUpdateOfferMappingEntriesRequest) UpdateOfferMappingEntryRequest(updateOfferMappingEntryRequest UpdateOfferMappingEntryRequest) OfferMappingsAPIUpdateOfferMappingEntriesRequest {
r.updateOfferMappingEntryRequest = &updateOfferMappingEntryRequest
return r
}
func (r OfferMappingsAPIUpdateOfferMappingEntriesRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.UpdateOfferMappingEntriesExecute(r)
}
/*
UpdateOfferMappingEntries Добавление и редактирование товаров в каталоге
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateOfferMappingEntries.md) %}
{% note warning "Какой метод использовать вместо устаревшего" %}
[POST businesses/{businessId}/offer-mappings/update](../../reference/business-assortment/updateOfferMappings.md)
{% endnote %}
Добавляет товары, указанные в запросе, в ваш каталог товаров и редактирует уже имеющиеся товары.
Информацию о товарах нужно передать в теле POST-запроса.
У каждого товара должен быть ваш :no-translate[SKU] — уникальный код, который вы используете для идентификации товара:
* Чтобы добавить в каталог новый товар, укажите в параметре `shopSku` ваш :no-translate[SKU], которого еще нет в каталоге.
* Чтобы отредактировать товар из каталога, укажите в параметре `shopSku` ваш :no-translate[SKU] этого товара в каталоге.
В обоих случаях в запросе нужно передать полное описание товара, даже если вы хотите изменить только несколько характеристик.
Если вы знаете, какой карточке товара на Маркете соответствует ваш товар, укажите ее идентификатор (:no-translate[SKU] на Маркете) во входном параметре `mapping`. Получить :no-translate[SKU] на Маркете рекомендованной карточки товара можно через кабинет. Если :no-translate[SKU] на Маркете не указан, сотрудники Маркета сами подберут или создадут подходящую карточку товара, либо у него появится статус `NEED_CONTENT` (нужно найти карточку или создать ее самостоятельно) в выходных данных запроса [POST businesses/{businessId}/offer-mappings](../../reference/business-assortment/getOfferMappings.md).
Перед публикацией товары проходят модерацию. Если в одном из отправленных товаров найдена ошибка, ответ на запрос будет иметь HTTP-код :no-translate[400 Bad Request], и ни один из товаров не отправится на модерацию. При этом если вы не передадите все обязательные параметры для какого‑либо товара, после модерации у него появится статус `NEED_INFO` (в описании товара не хватает информации) в выходных данных запроса [POST businesses/{businessId}/offer-mappings](../../reference/business-assortment/getOfferMappings.md).
В одном запросе можно добавить не более 500 товаров.
{% note info "Данные в каталоге обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 5 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OfferMappingsAPIUpdateOfferMappingEntriesRequest
Deprecated
*/
func (a *OfferMappingsAPIService) UpdateOfferMappingEntries(ctx context.Context, campaignId int64) OfferMappingsAPIUpdateOfferMappingEntriesRequest {
return OfferMappingsAPIUpdateOfferMappingEntriesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
//
// Deprecated
func (a *OfferMappingsAPIService) UpdateOfferMappingEntriesExecute(r OfferMappingsAPIUpdateOfferMappingEntriesRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OfferMappingsAPIService.UpdateOfferMappingEntries")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offer-mapping-entries/updates"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.updateOfferMappingEntryRequest == nil {
return localVarReturnValue, nil, reportError("updateOfferMappingEntryRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateOfferMappingEntryRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,908 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// OffersAPIService OffersAPI service
type OffersAPIService service
type OffersAPIDeleteCampaignOffersRequest struct {
ctx context.Context
ApiService *OffersAPIService
campaignId int64
deleteCampaignOffersRequest *DeleteCampaignOffersRequest
}
func (r OffersAPIDeleteCampaignOffersRequest) DeleteCampaignOffersRequest(deleteCampaignOffersRequest DeleteCampaignOffersRequest) OffersAPIDeleteCampaignOffersRequest {
r.deleteCampaignOffersRequest = &deleteCampaignOffersRequest
return r
}
func (r OffersAPIDeleteCampaignOffersRequest) Execute() (*DeleteCampaignOffersResponse, *http.Response, error) {
return r.ApiService.DeleteCampaignOffersExecute(r)
}
/*
DeleteCampaignOffers Удаление товаров из ассортимента магазина
{% include notitle [:no-translate[access]](../../_auto/method_scopes/deleteCampaignOffers.md) %}
Удаляет заданные товары из заданного магазина.
{% note warning "Запрос удаляет товары из конкретного магазина" %}
На продажи в других магазинах и на наличие товара в общем каталоге он не влияет.
{% endnote %}
Товар не получится удалить, если он хранится на складах Маркета.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OffersAPIDeleteCampaignOffersRequest
*/
func (a *OffersAPIService) DeleteCampaignOffers(ctx context.Context, campaignId int64) OffersAPIDeleteCampaignOffersRequest {
return OffersAPIDeleteCampaignOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return DeleteCampaignOffersResponse
func (a *OffersAPIService) DeleteCampaignOffersExecute(r OffersAPIDeleteCampaignOffersRequest) (*DeleteCampaignOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *DeleteCampaignOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OffersAPIService.DeleteCampaignOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offers/delete"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.deleteCampaignOffersRequest == nil {
return localVarReturnValue, nil, reportError("deleteCampaignOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.deleteCampaignOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OffersAPIGetCampaignOffersRequest struct {
ctx context.Context
ApiService *OffersAPIService
campaignId int64
getCampaignOffersRequest *GetCampaignOffersRequest
pageToken *string
limit *int32
}
func (r OffersAPIGetCampaignOffersRequest) GetCampaignOffersRequest(getCampaignOffersRequest GetCampaignOffersRequest) OffersAPIGetCampaignOffersRequest {
r.getCampaignOffersRequest = &getCampaignOffersRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r OffersAPIGetCampaignOffersRequest) PageToken(pageToken string) OffersAPIGetCampaignOffersRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r OffersAPIGetCampaignOffersRequest) Limit(limit int32) OffersAPIGetCampaignOffersRequest {
r.limit = &limit
return r
}
func (r OffersAPIGetCampaignOffersRequest) Execute() (*GetCampaignOffersResponse, *http.Response, error) {
return r.ApiService.GetCampaignOffersExecute(r)
}
/*
GetCampaignOffers Информация о товарах, которые размещены в заданном магазине
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCampaignOffers.md) %}
Возвращает список товаров, которые размещены в заданном магазине. Для каждого товара указываются параметры размещения.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OffersAPIGetCampaignOffersRequest
*/
func (a *OffersAPIService) GetCampaignOffers(ctx context.Context, campaignId int64) OffersAPIGetCampaignOffersRequest {
return OffersAPIGetCampaignOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetCampaignOffersResponse
func (a *OffersAPIService) GetCampaignOffersExecute(r OffersAPIGetCampaignOffersRequest) (*GetCampaignOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetCampaignOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OffersAPIService.GetCampaignOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offers"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getCampaignOffersRequest == nil {
return localVarReturnValue, nil, reportError("getCampaignOffersRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getCampaignOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OffersAPIGetOfferRecommendationsRequest struct {
ctx context.Context
ApiService *OffersAPIService
businessId int64
getOfferRecommendationsRequest *GetOfferRecommendationsRequest
pageToken *string
limit *int32
}
func (r OffersAPIGetOfferRecommendationsRequest) GetOfferRecommendationsRequest(getOfferRecommendationsRequest GetOfferRecommendationsRequest) OffersAPIGetOfferRecommendationsRequest {
r.getOfferRecommendationsRequest = &getOfferRecommendationsRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r OffersAPIGetOfferRecommendationsRequest) PageToken(pageToken string) OffersAPIGetOfferRecommendationsRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r OffersAPIGetOfferRecommendationsRequest) Limit(limit int32) OffersAPIGetOfferRecommendationsRequest {
r.limit = &limit
return r
}
func (r OffersAPIGetOfferRecommendationsRequest) Execute() (*GetOfferRecommendationsResponse, *http.Response, error) {
return r.ApiService.GetOfferRecommendationsExecute(r)
}
/*
GetOfferRecommendations Рекомендации Маркета, касающиеся цен
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOfferRecommendations.md) %}
Метод возвращает рекомендации нескольких типов.
1. Порог для привлекательной цены.
2. Оценка привлекательности цен на витрине.
Рекомендации показывают, какие цены нужно установить, чтобы привлечь покупателя.
В запросе можно использовать фильтры. Результаты возвращаются постранично.
|**:no-translate[⚙️] Лимит:** 100 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return OffersAPIGetOfferRecommendationsRequest
*/
func (a *OffersAPIService) GetOfferRecommendations(ctx context.Context, businessId int64) OffersAPIGetOfferRecommendationsRequest {
return OffersAPIGetOfferRecommendationsRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetOfferRecommendationsResponse
func (a *OffersAPIService) GetOfferRecommendationsExecute(r OffersAPIGetOfferRecommendationsRequest) (*GetOfferRecommendationsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOfferRecommendationsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OffersAPIService.GetOfferRecommendations")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/offers/recommendations"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.getOfferRecommendationsRequest == nil {
return localVarReturnValue, nil, reportError("getOfferRecommendationsRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getOfferRecommendationsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OffersAPIUpdateCampaignOffersRequest struct {
ctx context.Context
ApiService *OffersAPIService
campaignId int64
updateCampaignOffersRequest *UpdateCampaignOffersRequest
}
func (r OffersAPIUpdateCampaignOffersRequest) UpdateCampaignOffersRequest(updateCampaignOffersRequest UpdateCampaignOffersRequest) OffersAPIUpdateCampaignOffersRequest {
r.updateCampaignOffersRequest = &updateCampaignOffersRequest
return r
}
func (r OffersAPIUpdateCampaignOffersRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.UpdateCampaignOffersExecute(r)
}
/*
UpdateCampaignOffers Изменение условий продажи товаров в магазине
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateCampaignOffers.md) %}
Изменяет параметры размещения товаров в конкретном магазине: доступность товара, продажа квантами и применяемый НДС.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OffersAPIUpdateCampaignOffersRequest
*/
func (a *OffersAPIService) UpdateCampaignOffers(ctx context.Context, campaignId int64) OffersAPIUpdateCampaignOffersRequest {
return OffersAPIUpdateCampaignOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *OffersAPIService) UpdateCampaignOffersExecute(r OffersAPIUpdateCampaignOffersRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OffersAPIService.UpdateCampaignOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offers/update"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.updateCampaignOffersRequest == nil {
return localVarReturnValue, nil, reportError("updateCampaignOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateCampaignOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,423 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// OrderBusinessInformationAPIService OrderBusinessInformationAPI service
type OrderBusinessInformationAPIService service
type OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest struct {
ctx context.Context
ApiService *OrderBusinessInformationAPIService
campaignId int64
orderId int64
}
func (r OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest) Execute() (*GetBusinessBuyerInfoResponse, *http.Response, error) {
return r.ApiService.GetOrderBusinessBuyerInfoExecute(r)
}
/*
GetOrderBusinessBuyerInfo Информация о покупателе — юридическом лице
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOrderBusinessBuyerInfo.md) %}
Возвращает информацию о покупателе по идентификатору заказа.
{% note info "Как получить информацию о покупателе, который является физическим лицом" %}
Воспользуйтесь запросом [GET campaigns/{campaignId}/orders/{orderId}/buyer](../../reference/orders/getOrderBuyerInfo.md).
{% endnote %}
Получить данные можно, только если заказ находится в статусе `PROCESSING`, `DELIVERY`, `PICKUP` или `DELIVERED`.
|**:no-translate[⚙️] Лимит:** 3 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@param orderId Идентификатор заказа.
@return OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest
*/
func (a *OrderBusinessInformationAPIService) GetOrderBusinessBuyerInfo(ctx context.Context, campaignId int64, orderId int64) OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest {
return OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
orderId: orderId,
}
}
// Execute executes the request
//
// @return GetBusinessBuyerInfoResponse
func (a *OrderBusinessInformationAPIService) GetOrderBusinessBuyerInfoExecute(r OrderBusinessInformationAPIGetOrderBusinessBuyerInfoRequest) (*GetBusinessBuyerInfoResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetBusinessBuyerInfoResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrderBusinessInformationAPIService.GetOrderBusinessBuyerInfo")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/orders/{orderId}/business-buyer"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"orderId"+"}", url.PathEscape(parameterValueToString(r.orderId, "orderId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest struct {
ctx context.Context
ApiService *OrderBusinessInformationAPIService
campaignId int64
orderId int64
}
func (r OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest) Execute() (*GetBusinessDocumentsInfoResponse, *http.Response, error) {
return r.ApiService.GetOrderBusinessDocumentsInfoExecute(r)
}
/*
GetOrderBusinessDocumentsInfo Информация о документах
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOrderBusinessDocumentsInfo.md) %}
Возвращает информацию о документах по идентификатору заказа.
Получить данные можно после того, как заказ перейдет в статус `DELIVERED`.
|**:no-translate[⚙️] Лимит:** 3 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@param orderId Идентификатор заказа.
@return OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest
*/
func (a *OrderBusinessInformationAPIService) GetOrderBusinessDocumentsInfo(ctx context.Context, campaignId int64, orderId int64) OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest {
return OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
orderId: orderId,
}
}
// Execute executes the request
//
// @return GetBusinessDocumentsInfoResponse
func (a *OrderBusinessInformationAPIService) GetOrderBusinessDocumentsInfoExecute(r OrderBusinessInformationAPIGetOrderBusinessDocumentsInfoRequest) (*GetBusinessDocumentsInfoResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetBusinessDocumentsInfoResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrderBusinessInformationAPIService.GetOrderBusinessDocumentsInfo")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/orders/{orderId}/documents"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"orderId"+"}", url.PathEscape(parameterValueToString(r.orderId, "orderId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,639 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"os"
"strings"
)
// OrderLabelsAPIService OrderLabelsAPI service
type OrderLabelsAPIService service
type OrderLabelsAPIGenerateOrderLabelRequest struct {
ctx context.Context
ApiService *OrderLabelsAPIService
campaignId int64
orderId int64
shipmentId int64
boxId int64
format *PageFormatType
}
// Настройка размещения ярлыков на странице. Если параметра нет, возвращается :no-translate[PDF] с ярлыками формата :no-translate[A7].
func (r OrderLabelsAPIGenerateOrderLabelRequest) Format(format PageFormatType) OrderLabelsAPIGenerateOrderLabelRequest {
r.format = &format
return r
}
func (r OrderLabelsAPIGenerateOrderLabelRequest) Execute() (*os.File, *http.Response, error) {
return r.ApiService.GenerateOrderLabelExecute(r)
}
/*
GenerateOrderLabel Готовый ярлык‑наклейка для коробки в заказе
{% include notitle [:no-translate[access]](../../_auto/method_scopes/generateOrderLabel.md) %}
Формирует ярлык‑наклейку для коробки в заказе и возвращает ярлык в PDFфайле.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@param orderId Идентификатор заказа.
@param shipmentId Идентификатор грузоместа.
@param boxId Идентификатор коробки.
@return OrderLabelsAPIGenerateOrderLabelRequest
*/
func (a *OrderLabelsAPIService) GenerateOrderLabel(ctx context.Context, campaignId int64, orderId int64, shipmentId int64, boxId int64) OrderLabelsAPIGenerateOrderLabelRequest {
return OrderLabelsAPIGenerateOrderLabelRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
orderId: orderId,
shipmentId: shipmentId,
boxId: boxId,
}
}
// Execute executes the request
//
// @return *os.File
func (a *OrderLabelsAPIService) GenerateOrderLabelExecute(r OrderLabelsAPIGenerateOrderLabelRequest) (*os.File, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *os.File
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrderLabelsAPIService.GenerateOrderLabel")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/orders/{orderId}/delivery/shipments/{shipmentId}/boxes/{boxId}/label"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"orderId"+"}", url.PathEscape(parameterValueToString(r.orderId, "orderId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"shipmentId"+"}", url.PathEscape(parameterValueToString(r.shipmentId, "shipmentId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"boxId"+"}", url.PathEscape(parameterValueToString(r.boxId, "boxId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.format != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "format", r.format, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/pdf", "application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OrderLabelsAPIGenerateOrderLabelsRequest struct {
ctx context.Context
ApiService *OrderLabelsAPIService
campaignId int64
orderId int64
format *PageFormatType
}
// Настройка размещения ярлыков на странице. Если параметра нет, возвращается :no-translate[PDF] с ярлыками формата :no-translate[A7].
func (r OrderLabelsAPIGenerateOrderLabelsRequest) Format(format PageFormatType) OrderLabelsAPIGenerateOrderLabelsRequest {
r.format = &format
return r
}
func (r OrderLabelsAPIGenerateOrderLabelsRequest) Execute() (*os.File, *http.Response, error) {
return r.ApiService.GenerateOrderLabelsExecute(r)
}
/*
GenerateOrderLabels Готовые ярлыки‑наклейки на все коробки в одном заказе
{% include notitle [:no-translate[access]](../../_auto/method_scopes/generateOrderLabels.md) %}
Возвращает PDF-файл с ярлыками, которые нужно наклеить на коробки перед отгрузкой. Подробно о том, зачем они нужны и как выглядят, рассказано [в Справке Маркета для продавцов](https://yandex.ru/support/marketplace/orders/fbs/packaging/marking.html).
На вход нужно передать идентификатор заказа и один необязательный параметр, который управляет версткой PDF-файла.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@param orderId Идентификатор заказа.
@return OrderLabelsAPIGenerateOrderLabelsRequest
*/
func (a *OrderLabelsAPIService) GenerateOrderLabels(ctx context.Context, campaignId int64, orderId int64) OrderLabelsAPIGenerateOrderLabelsRequest {
return OrderLabelsAPIGenerateOrderLabelsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
orderId: orderId,
}
}
// Execute executes the request
//
// @return *os.File
func (a *OrderLabelsAPIService) GenerateOrderLabelsExecute(r OrderLabelsAPIGenerateOrderLabelsRequest) (*os.File, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *os.File
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrderLabelsAPIService.GenerateOrderLabels")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/orders/{orderId}/delivery/labels"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"orderId"+"}", url.PathEscape(parameterValueToString(r.orderId, "orderId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.format != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "format", r.format, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/pdf", "application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OrderLabelsAPIGetOrderLabelsDataRequest struct {
ctx context.Context
ApiService *OrderLabelsAPIService
campaignId int64
orderId int64
}
func (r OrderLabelsAPIGetOrderLabelsDataRequest) Execute() (*GetOrderLabelsDataResponse, *http.Response, error) {
return r.ApiService.GetOrderLabelsDataExecute(r)
}
/*
GetOrderLabelsData Данные для самостоятельного изготовления ярлыков
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOrderLabelsData.md) %}
Возвращает информацию на ярлыках, которые клеятся на коробки в заказе.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@param orderId Идентификатор заказа.
@return OrderLabelsAPIGetOrderLabelsDataRequest
*/
func (a *OrderLabelsAPIService) GetOrderLabelsData(ctx context.Context, campaignId int64, orderId int64) OrderLabelsAPIGetOrderLabelsDataRequest {
return OrderLabelsAPIGetOrderLabelsDataRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
orderId: orderId,
}
}
// Execute executes the request
//
// @return GetOrderLabelsDataResponse
func (a *OrderLabelsAPIService) GetOrderLabelsDataExecute(r OrderLabelsAPIGetOrderLabelsDataRequest) (*GetOrderLabelsDataResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOrderLabelsDataResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrderLabelsAPIService.GetOrderLabelsData")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/orders/{orderId}/delivery/labels/data"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"orderId"+"}", url.PathEscape(parameterValueToString(r.orderId, "orderId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,252 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// OrdersStatsAPIService OrdersStatsAPI service
type OrdersStatsAPIService service
type OrdersStatsAPIGetOrdersStatsRequest struct {
ctx context.Context
ApiService *OrdersStatsAPIService
campaignId int64
pageToken *string
limit *int32
getOrdersStatsRequest *GetOrdersStatsRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r OrdersStatsAPIGetOrdersStatsRequest) PageToken(pageToken string) OrdersStatsAPIGetOrdersStatsRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r OrdersStatsAPIGetOrdersStatsRequest) Limit(limit int32) OrdersStatsAPIGetOrdersStatsRequest {
r.limit = &limit
return r
}
func (r OrdersStatsAPIGetOrdersStatsRequest) GetOrdersStatsRequest(getOrdersStatsRequest GetOrdersStatsRequest) OrdersStatsAPIGetOrdersStatsRequest {
r.getOrdersStatsRequest = &getOrdersStatsRequest
return r
}
func (r OrdersStatsAPIGetOrdersStatsRequest) Execute() (*GetOrdersStatsResponse, *http.Response, error) {
return r.ApiService.GetOrdersStatsExecute(r)
}
/*
GetOrdersStats Детальная информация по заказам
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOrdersStats.md) %}
Возвращает информацию по заказам на Маркете, в которых есть ваши товары.
С помощью нее вы можете собрать статистику по вашим заказам и узнать, например, какие из товаров чаще всего возвращаются покупателями, какие, наоборот, пользуются большим спросом и т. п.
{% note tip "Информация по созданным или обновленным заказам может появиться с задержкой до 40 минут" %}
Чтобы получить данные без задержки, используйте [метод получения информации о заказах](../../reference/orders/getOrders.md).
{% endnote %}
В одном запросе можно получить информацию не более чем по 200 заказам.
|**:no-translate[⚙️] Лимит:** 1 000 000 заказов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OrdersStatsAPIGetOrdersStatsRequest
*/
func (a *OrdersStatsAPIService) GetOrdersStats(ctx context.Context, campaignId int64) OrdersStatsAPIGetOrdersStatsRequest {
return OrdersStatsAPIGetOrdersStatsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetOrdersStatsResponse
func (a *OrdersStatsAPIService) GetOrdersStatsExecute(r OrdersStatsAPIGetOrdersStatsRequest) (*GetOrdersStatsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOrdersStatsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OrdersStatsAPIService.GetOrdersStats")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/stats/orders"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getOrdersStatsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,643 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// OutletLicensesAPIService OutletLicensesAPI service
type OutletLicensesAPIService service
type OutletLicensesAPIDeleteOutletLicensesRequest struct {
ctx context.Context
ApiService *OutletLicensesAPIService
campaignId int64
ids *[]int64
}
// Список идентификаторов лицензий для удаления.
func (r OutletLicensesAPIDeleteOutletLicensesRequest) Ids(ids []int64) OutletLicensesAPIDeleteOutletLicensesRequest {
r.ids = &ids
return r
}
func (r OutletLicensesAPIDeleteOutletLicensesRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.DeleteOutletLicensesExecute(r)
}
/*
DeleteOutletLicenses Удаление лицензий для точек продаж
{% include notitle [:no-translate[access]](../../_auto/method_scopes/deleteOutletLicenses.md) %}
Удаляет информацию о лицензиях для точек продаж.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OutletLicensesAPIDeleteOutletLicensesRequest
*/
func (a *OutletLicensesAPIService) DeleteOutletLicenses(ctx context.Context, campaignId int64) OutletLicensesAPIDeleteOutletLicensesRequest {
return OutletLicensesAPIDeleteOutletLicensesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *OutletLicensesAPIService) DeleteOutletLicensesExecute(r OutletLicensesAPIDeleteOutletLicensesRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodDelete
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutletLicensesAPIService.DeleteOutletLicenses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/outlets/licenses"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.ids == nil {
return localVarReturnValue, nil, reportError("ids is required and must be specified")
}
if len(*r.ids) < 1 {
return localVarReturnValue, nil, reportError("ids must have at least 1 elements")
}
parameterAddToHeaderOrQuery(localVarQueryParams, "ids", r.ids, "", "csv")
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OutletLicensesAPIGetOutletLicensesRequest struct {
ctx context.Context
ApiService *OutletLicensesAPIService
campaignId int64
outletIds *[]int64
ids *[]int64
}
// Список идентификаторов точек продаж, для которых нужно получить информацию о лицензиях. Идентификаторы указываются через запятую. В запросе должен быть либо параметр :no-translate[&#x60;outletIds&#x60;], либо параметр :no-translate[&#x60;ids&#x60;]. Запрос с обоими параметрами или без них приведет к ошибке.
func (r OutletLicensesAPIGetOutletLicensesRequest) OutletIds(outletIds []int64) OutletLicensesAPIGetOutletLicensesRequest {
r.outletIds = &outletIds
return r
}
// Список идентификаторов лицензий.
func (r OutletLicensesAPIGetOutletLicensesRequest) Ids(ids []int64) OutletLicensesAPIGetOutletLicensesRequest {
r.ids = &ids
return r
}
func (r OutletLicensesAPIGetOutletLicensesRequest) Execute() (*GetOutletLicensesResponse, *http.Response, error) {
return r.ApiService.GetOutletLicensesExecute(r)
}
/*
GetOutletLicenses Информация о лицензиях для точек продаж
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getOutletLicenses.md) %}
Возвращает информацию о лицензиях для точек продаж.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OutletLicensesAPIGetOutletLicensesRequest
*/
func (a *OutletLicensesAPIService) GetOutletLicenses(ctx context.Context, campaignId int64) OutletLicensesAPIGetOutletLicensesRequest {
return OutletLicensesAPIGetOutletLicensesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetOutletLicensesResponse
func (a *OutletLicensesAPIService) GetOutletLicensesExecute(r OutletLicensesAPIGetOutletLicensesRequest) (*GetOutletLicensesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetOutletLicensesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutletLicensesAPIService.GetOutletLicenses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/outlets/licenses"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.outletIds != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "outletIds", r.outletIds, "", "csv")
}
if r.ids != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "ids", r.ids, "", "csv")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type OutletLicensesAPIUpdateOutletLicensesRequest struct {
ctx context.Context
ApiService *OutletLicensesAPIService
campaignId int64
updateOutletLicenseRequest *UpdateOutletLicenseRequest
}
func (r OutletLicensesAPIUpdateOutletLicensesRequest) UpdateOutletLicenseRequest(updateOutletLicenseRequest UpdateOutletLicenseRequest) OutletLicensesAPIUpdateOutletLicensesRequest {
r.updateOutletLicenseRequest = &updateOutletLicenseRequest
return r
}
func (r OutletLicensesAPIUpdateOutletLicensesRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.UpdateOutletLicensesExecute(r)
}
/*
UpdateOutletLicenses Создание и изменение лицензий для точек продаж
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateOutletLicenses.md) %}
Передает информацию о новых и существующих лицензиях для точек продаж. Поддерживаются только лицензии на розничную продажу алкоголя.
Чтобы размещать алкогольную продукцию на Маркете, надо также прислать гарантийное письмо (если вы еще не делали этого раньше) и правильно оформить предложения в прайс-листе. Далее информация о лицензиях проходит проверку.
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return OutletLicensesAPIUpdateOutletLicensesRequest
*/
func (a *OutletLicensesAPIService) UpdateOutletLicenses(ctx context.Context, campaignId int64) OutletLicensesAPIUpdateOutletLicensesRequest {
return OutletLicensesAPIUpdateOutletLicensesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *OutletLicensesAPIService) UpdateOutletLicensesExecute(r OutletLicensesAPIUpdateOutletLicensesRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutletLicensesAPIService.UpdateOutletLicenses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/outlets/licenses"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.updateOutletLicenseRequest == nil {
return localVarReturnValue, nil, reportError("updateOutletLicenseRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateOutletLicenseRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,925 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// PriceQuarantineAPIService PriceQuarantineAPI service
type PriceQuarantineAPIService service
type PriceQuarantineAPIConfirmBusinessPricesRequest struct {
ctx context.Context
ApiService *PriceQuarantineAPIService
businessId int64
confirmPricesRequest *ConfirmPricesRequest
}
func (r PriceQuarantineAPIConfirmBusinessPricesRequest) ConfirmPricesRequest(confirmPricesRequest ConfirmPricesRequest) PriceQuarantineAPIConfirmBusinessPricesRequest {
r.confirmPricesRequest = &confirmPricesRequest
return r
}
func (r PriceQuarantineAPIConfirmBusinessPricesRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.ConfirmBusinessPricesExecute(r)
}
/*
ConfirmBusinessPrices Удаление товара из карантина по цене в кабинете
{% include notitle [:no-translate[access]](../../_auto/method_scopes/confirmBusinessPrices.md) %}
Подтверждает во всех магазинах цену на товары, которые попали в карантин, и удаляет их из карантина.
Товар попадает в карантин, если его цена меняется слишком резко. [Как настроить карантин](https://yandex.ru/support/marketplace/assortment/operations/prices.html#quarantine)
Чтобы увидеть список товаров, которые попали в карантин, используйте запрос [POST businesses/{businessId}/price-quarantine](getBusinessQuarantineOffers.md).
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту, не более 200 товаров в одном запросе|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PriceQuarantineAPIConfirmBusinessPricesRequest
*/
func (a *PriceQuarantineAPIService) ConfirmBusinessPrices(ctx context.Context, businessId int64) PriceQuarantineAPIConfirmBusinessPricesRequest {
return PriceQuarantineAPIConfirmBusinessPricesRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *PriceQuarantineAPIService) ConfirmBusinessPricesExecute(r PriceQuarantineAPIConfirmBusinessPricesRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PriceQuarantineAPIService.ConfirmBusinessPrices")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/price-quarantine/confirm"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.confirmPricesRequest == nil {
return localVarReturnValue, nil, reportError("confirmPricesRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.confirmPricesRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PriceQuarantineAPIConfirmCampaignPricesRequest struct {
ctx context.Context
ApiService *PriceQuarantineAPIService
campaignId int64
confirmPricesRequest *ConfirmPricesRequest
}
func (r PriceQuarantineAPIConfirmCampaignPricesRequest) ConfirmPricesRequest(confirmPricesRequest ConfirmPricesRequest) PriceQuarantineAPIConfirmCampaignPricesRequest {
r.confirmPricesRequest = &confirmPricesRequest
return r
}
func (r PriceQuarantineAPIConfirmCampaignPricesRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.ConfirmCampaignPricesExecute(r)
}
/*
ConfirmCampaignPrices Удаление товара из карантина по цене в магазине
{% include notitle [:no-translate[access]](../../_auto/method_scopes/confirmCampaignPrices.md) %}
Подтверждает в заданном магазине цену на товары, которые попали в карантин, и удаляет их из карантина.
Товар попадает в карантин, если его цена меняется слишком резко. [Как настроить карантин](https://yandex.ru/support/marketplace/assortment/operations/prices.html#quarantine)
Чтобы увидеть список товаров, которые попали в карантин, используйте запрос [POST campaigns/{campaignId}/price-quarantine](getCampaignQuarantineOffers.md).
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return PriceQuarantineAPIConfirmCampaignPricesRequest
*/
func (a *PriceQuarantineAPIService) ConfirmCampaignPrices(ctx context.Context, campaignId int64) PriceQuarantineAPIConfirmCampaignPricesRequest {
return PriceQuarantineAPIConfirmCampaignPricesRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *PriceQuarantineAPIService) ConfirmCampaignPricesExecute(r PriceQuarantineAPIConfirmCampaignPricesRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PriceQuarantineAPIService.ConfirmCampaignPrices")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/price-quarantine/confirm"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.confirmPricesRequest == nil {
return localVarReturnValue, nil, reportError("confirmPricesRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.confirmPricesRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 423 {
var v ApiLockedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PriceQuarantineAPIGetBusinessQuarantineOffersRequest struct {
ctx context.Context
ApiService *PriceQuarantineAPIService
businessId int64
getQuarantineOffersRequest *GetQuarantineOffersRequest
pageToken *string
limit *int32
}
func (r PriceQuarantineAPIGetBusinessQuarantineOffersRequest) GetQuarantineOffersRequest(getQuarantineOffersRequest GetQuarantineOffersRequest) PriceQuarantineAPIGetBusinessQuarantineOffersRequest {
r.getQuarantineOffersRequest = &getQuarantineOffersRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r PriceQuarantineAPIGetBusinessQuarantineOffersRequest) PageToken(pageToken string) PriceQuarantineAPIGetBusinessQuarantineOffersRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r PriceQuarantineAPIGetBusinessQuarantineOffersRequest) Limit(limit int32) PriceQuarantineAPIGetBusinessQuarantineOffersRequest {
r.limit = &limit
return r
}
func (r PriceQuarantineAPIGetBusinessQuarantineOffersRequest) Execute() (*GetQuarantineOffersResponse, *http.Response, error) {
return r.ApiService.GetBusinessQuarantineOffersExecute(r)
}
/*
GetBusinessQuarantineOffers Список товаров, находящихся в карантине по цене в кабинете
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getBusinessQuarantineOffers.md) %}
Возвращает список товаров, которые находятся в карантине по цене, установленной для всех магазинов кабинета.
Проверьте цену каждого из товаров, который попал в карантин. Если ошибки нет и цена правильная, подтвердите ее с помощью запроса [POST businesses/{businessId}/price-quarantine/confirm](../../reference/business-assortment/confirmBusinessPrices.md). Если цена в самом деле ошибочная, установите верную с помощью запроса [POST businesses/{businessId}/offer-prices/updates](../../reference/business-assortment/updateBusinessPrices.md).
{% note info "Что такое карантин?" %}
Товар попадает в карантин, если его цена меняется слишком резко или слишком сильно отличается от рыночной. [Подробнее](https://yandex.ru/support/marketplace/assortment/operations/prices.html#quarantine)
{% endnote %}
В запросе можно использовать фильтры.
Результаты возвращаются постранично.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту, не более 500 товаров в одном запросе|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PriceQuarantineAPIGetBusinessQuarantineOffersRequest
*/
func (a *PriceQuarantineAPIService) GetBusinessQuarantineOffers(ctx context.Context, businessId int64) PriceQuarantineAPIGetBusinessQuarantineOffersRequest {
return PriceQuarantineAPIGetBusinessQuarantineOffersRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetQuarantineOffersResponse
func (a *PriceQuarantineAPIService) GetBusinessQuarantineOffersExecute(r PriceQuarantineAPIGetBusinessQuarantineOffersRequest) (*GetQuarantineOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetQuarantineOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PriceQuarantineAPIService.GetBusinessQuarantineOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/price-quarantine"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.getQuarantineOffersRequest == nil {
return localVarReturnValue, nil, reportError("getQuarantineOffersRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getQuarantineOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PriceQuarantineAPIGetCampaignQuarantineOffersRequest struct {
ctx context.Context
ApiService *PriceQuarantineAPIService
campaignId int64
getQuarantineOffersRequest *GetQuarantineOffersRequest
pageToken *string
limit *int32
}
func (r PriceQuarantineAPIGetCampaignQuarantineOffersRequest) GetQuarantineOffersRequest(getQuarantineOffersRequest GetQuarantineOffersRequest) PriceQuarantineAPIGetCampaignQuarantineOffersRequest {
r.getQuarantineOffersRequest = &getQuarantineOffersRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r PriceQuarantineAPIGetCampaignQuarantineOffersRequest) PageToken(pageToken string) PriceQuarantineAPIGetCampaignQuarantineOffersRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r PriceQuarantineAPIGetCampaignQuarantineOffersRequest) Limit(limit int32) PriceQuarantineAPIGetCampaignQuarantineOffersRequest {
r.limit = &limit
return r
}
func (r PriceQuarantineAPIGetCampaignQuarantineOffersRequest) Execute() (*GetQuarantineOffersResponse, *http.Response, error) {
return r.ApiService.GetCampaignQuarantineOffersExecute(r)
}
/*
GetCampaignQuarantineOffers Список товаров, находящихся в карантине по цене в магазине
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getCampaignQuarantineOffers.md) %}
Возвращает список товаров, которые находятся в карантине по цене, установленной в заданном магазине.
Проверьте цену каждого из товаров, который попал в карантин. Если ошибки нет и цена правильная, подтвердите ее с помощью запроса [POST campaigns/{campaignId}/price-quarantine/confirm](../../reference/assortment/confirmCampaignPrices.md). Если цена в самом деле ошибочная, установите верную с помощью запроса [POST campaigns/{campaignId}/offer-prices/updates](../../reference/assortment/updatePrices.md).
{% note info "Что такое карантин?" %}
Товар попадает в карантин, если его цена меняется слишком резко или слишком сильно отличается от рыночной. [Подробнее](https://yandex.ru/support/marketplace/assortment/operations/prices.html#quarantine)
{% endnote %}
В запросе можно использовать фильтры.
Результаты возвращаются постранично.
|**:no-translate[⚙️] Лимит:** 10 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return PriceQuarantineAPIGetCampaignQuarantineOffersRequest
*/
func (a *PriceQuarantineAPIService) GetCampaignQuarantineOffers(ctx context.Context, campaignId int64) PriceQuarantineAPIGetCampaignQuarantineOffersRequest {
return PriceQuarantineAPIGetCampaignQuarantineOffersRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetQuarantineOffersResponse
func (a *PriceQuarantineAPIService) GetCampaignQuarantineOffersExecute(r PriceQuarantineAPIGetCampaignQuarantineOffersRequest) (*GetQuarantineOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetQuarantineOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PriceQuarantineAPIService.GetCampaignQuarantineOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/price-quarantine"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getQuarantineOffersRequest == nil {
return localVarReturnValue, nil, reportError("getQuarantineOffersRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getQuarantineOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,870 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// PromosAPIService PromosAPI service
type PromosAPIService service
type PromosAPIDeletePromoOffersRequest struct {
ctx context.Context
ApiService *PromosAPIService
businessId int64
deletePromoOffersRequest *DeletePromoOffersRequest
}
func (r PromosAPIDeletePromoOffersRequest) DeletePromoOffersRequest(deletePromoOffersRequest DeletePromoOffersRequest) PromosAPIDeletePromoOffersRequest {
r.deletePromoOffersRequest = &deletePromoOffersRequest
return r
}
func (r PromosAPIDeletePromoOffersRequest) Execute() (*DeletePromoOffersResponse, *http.Response, error) {
return r.ApiService.DeletePromoOffersExecute(r)
}
/*
DeletePromoOffers Удаление товаров из акции
{% include notitle [:no-translate[access]](../../_auto/method_scopes/deletePromoOffers.md) %}
Убирает товары из акции.
Изменения начинают действовать в течение 46 часов.
|**:no-translate[⚙️] Лимит:** 10 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PromosAPIDeletePromoOffersRequest
*/
func (a *PromosAPIService) DeletePromoOffers(ctx context.Context, businessId int64) PromosAPIDeletePromoOffersRequest {
return PromosAPIDeletePromoOffersRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return DeletePromoOffersResponse
func (a *PromosAPIService) DeletePromoOffersExecute(r PromosAPIDeletePromoOffersRequest) (*DeletePromoOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *DeletePromoOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PromosAPIService.DeletePromoOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/promos/offers/delete"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.deletePromoOffersRequest == nil {
return localVarReturnValue, nil, reportError("deletePromoOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.deletePromoOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PromosAPIGetPromoOffersRequest struct {
ctx context.Context
ApiService *PromosAPIService
businessId int64
getPromoOffersRequest *GetPromoOffersRequest
pageToken *string
limit *int32
}
func (r PromosAPIGetPromoOffersRequest) GetPromoOffersRequest(getPromoOffersRequest GetPromoOffersRequest) PromosAPIGetPromoOffersRequest {
r.getPromoOffersRequest = &getPromoOffersRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r PromosAPIGetPromoOffersRequest) PageToken(pageToken string) PromosAPIGetPromoOffersRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r PromosAPIGetPromoOffersRequest) Limit(limit int32) PromosAPIGetPromoOffersRequest {
r.limit = &limit
return r
}
func (r PromosAPIGetPromoOffersRequest) Execute() (*GetPromoOffersResponse, *http.Response, error) {
return r.ApiService.GetPromoOffersExecute(r)
}
/*
GetPromoOffers Получение списка товаров, которые участвуют или могут участвовать в акции
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getPromoOffers.md) %}
Возвращает список товаров, которые участвуют или могут участвовать в акции.
{% note warning "Условия участия в акциях могут меняться" %}
Например, `maxPromoPrice`.
Установленные цены меняться не будут — `price` и `promoPrice`.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 10 000 запросов в час, не более 500 товаров в запросе|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PromosAPIGetPromoOffersRequest
*/
func (a *PromosAPIService) GetPromoOffers(ctx context.Context, businessId int64) PromosAPIGetPromoOffersRequest {
return PromosAPIGetPromoOffersRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetPromoOffersResponse
func (a *PromosAPIService) GetPromoOffersExecute(r PromosAPIGetPromoOffersRequest) (*GetPromoOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetPromoOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PromosAPIService.GetPromoOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/promos/offers"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.getPromoOffersRequest == nil {
return localVarReturnValue, nil, reportError("getPromoOffersRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getPromoOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PromosAPIGetPromosRequest struct {
ctx context.Context
ApiService *PromosAPIService
businessId int64
getPromosRequest *GetPromosRequest
}
func (r PromosAPIGetPromosRequest) GetPromosRequest(getPromosRequest GetPromosRequest) PromosAPIGetPromosRequest {
r.getPromosRequest = &getPromosRequest
return r
}
func (r PromosAPIGetPromosRequest) Execute() (*GetPromosResponse, *http.Response, error) {
return r.ApiService.GetPromosExecute(r)
}
/*
GetPromos Получение списка акций
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getPromos.md) %}
Возвращает информацию об акциях Маркета. Не возвращает данные об акциях, которые создал продавец.
По умолчанию возвращаются акции, в которых продавец участвует или может принять участие.
Чтобы получить текущие или завершенные акции, передайте параметр `participation`.
Типы акций, которые возвращаются в ответе:
* прямая скидка;
* флеш-акция;
* скидка по промокоду.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PromosAPIGetPromosRequest
*/
func (a *PromosAPIService) GetPromos(ctx context.Context, businessId int64) PromosAPIGetPromosRequest {
return PromosAPIGetPromosRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetPromosResponse
func (a *PromosAPIService) GetPromosExecute(r PromosAPIGetPromosRequest) (*GetPromosResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetPromosResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PromosAPIService.GetPromos")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/promos"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getPromosRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type PromosAPIUpdatePromoOffersRequest struct {
ctx context.Context
ApiService *PromosAPIService
businessId int64
updatePromoOffersRequest *UpdatePromoOffersRequest
}
func (r PromosAPIUpdatePromoOffersRequest) UpdatePromoOffersRequest(updatePromoOffersRequest UpdatePromoOffersRequest) PromosAPIUpdatePromoOffersRequest {
r.updatePromoOffersRequest = &updatePromoOffersRequest
return r
}
func (r PromosAPIUpdatePromoOffersRequest) Execute() (*UpdatePromoOffersResponse, *http.Response, error) {
return r.ApiService.UpdatePromoOffersExecute(r)
}
/*
UpdatePromoOffers Добавление товаров в акцию или изменение их цен
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updatePromoOffers.md) %}
Добавляет товары в акцию или изменяет цены на товары, которые участвуют в акции.
Изменения начинают действовать в течение 46 часов.
|**:no-translate[⚙️] Лимит:** 10 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return PromosAPIUpdatePromoOffersRequest
*/
func (a *PromosAPIService) UpdatePromoOffers(ctx context.Context, businessId int64) PromosAPIUpdatePromoOffersRequest {
return PromosAPIUpdatePromoOffersRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return UpdatePromoOffersResponse
func (a *PromosAPIService) UpdatePromoOffersExecute(r PromosAPIUpdatePromoOffersRequest) (*UpdatePromoOffersResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *UpdatePromoOffersResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "PromosAPIService.UpdatePromoOffers")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/promos/offers/update"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.updatePromoOffersRequest == nil {
return localVarReturnValue, nil, reportError("updatePromoOffersRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updatePromoOffersRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,418 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// RatingsAPIService RatingsAPI service
type RatingsAPIService service
type RatingsAPIGetQualityRatingDetailsRequest struct {
ctx context.Context
ApiService *RatingsAPIService
campaignId int64
}
func (r RatingsAPIGetQualityRatingDetailsRequest) Execute() (*GetQualityRatingDetailsResponse, *http.Response, error) {
return r.ApiService.GetQualityRatingDetailsExecute(r)
}
/*
GetQualityRatingDetails Заказы, которые повлияли на индекс качества
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getQualityRatingDetails.md) %}
Возвращает список заказов, которые повлияли на индекс качества магазина. Чтобы узнать значение индекса качества, выполните запрос [POST businesses/{businessId}/ratings/quality](../../reference/ratings/getQualityRatings.md).
|**:no-translate[⚙️] Лимит:** 100 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return RatingsAPIGetQualityRatingDetailsRequest
*/
func (a *RatingsAPIService) GetQualityRatingDetails(ctx context.Context, campaignId int64) RatingsAPIGetQualityRatingDetailsRequest {
return RatingsAPIGetQualityRatingDetailsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetQualityRatingDetailsResponse
func (a *RatingsAPIService) GetQualityRatingDetailsExecute(r RatingsAPIGetQualityRatingDetailsRequest) (*GetQualityRatingDetailsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetQualityRatingDetailsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RatingsAPIService.GetQualityRatingDetails")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/ratings/quality/details"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type RatingsAPIGetQualityRatingsRequest struct {
ctx context.Context
ApiService *RatingsAPIService
businessId int64
getQualityRatingRequest *GetQualityRatingRequest
}
func (r RatingsAPIGetQualityRatingsRequest) GetQualityRatingRequest(getQualityRatingRequest GetQualityRatingRequest) RatingsAPIGetQualityRatingsRequest {
r.getQualityRatingRequest = &getQualityRatingRequest
return r
}
func (r RatingsAPIGetQualityRatingsRequest) Execute() (*GetQualityRatingResponse, *http.Response, error) {
return r.ApiService.GetQualityRatingsExecute(r)
}
/*
GetQualityRatings Индекс качества магазинов
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getQualityRatings.md) %}
Возвращает значение индекса качества магазинов и его составляющие.
Подробнее об индексе качества читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/quality/score/).
|**:no-translate[⚙️] Лимит:** 10 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return RatingsAPIGetQualityRatingsRequest
*/
func (a *RatingsAPIService) GetQualityRatings(ctx context.Context, businessId int64) RatingsAPIGetQualityRatingsRequest {
return RatingsAPIGetQualityRatingsRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetQualityRatingResponse
func (a *RatingsAPIService) GetQualityRatingsExecute(r RatingsAPIGetQualityRatingsRequest) (*GetQualityRatingResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetQualityRatingResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RatingsAPIService.GetQualityRatings")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/ratings/quality"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.getQualityRatingRequest == nil {
return localVarReturnValue, nil, reportError("getQualityRatingRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getQualityRatingRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,793 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// RegionsAPIService RegionsAPI service
type RegionsAPIService service
type RegionsAPIGetRegionsCodesRequest struct {
ctx context.Context
ApiService *RegionsAPIService
}
func (r RegionsAPIGetRegionsCodesRequest) Execute() (*GetRegionsCodesResponse, *http.Response, error) {
return r.ApiService.GetRegionsCodesExecute(r)
}
/*
GetRegionsCodes Список допустимых кодов стран
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getRegionsCodes.md) %}
Возвращает список стран с их кодами в формате :no-translate[ISO 3166-1 alpha-2].
Страна производства `countryCode` понадобится при продаже товаров из-за рубежа для бизнеса. [Инструкция](../../step-by-step/business-info.md)
|**:no-translate[⚙️] Лимит:** 100 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return RegionsAPIGetRegionsCodesRequest
*/
func (a *RegionsAPIService) GetRegionsCodes(ctx context.Context) RegionsAPIGetRegionsCodesRequest {
return RegionsAPIGetRegionsCodesRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetRegionsCodesResponse
func (a *RegionsAPIService) GetRegionsCodesExecute(r RegionsAPIGetRegionsCodesRequest) (*GetRegionsCodesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetRegionsCodesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RegionsAPIService.GetRegionsCodes")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/regions/countries"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type RegionsAPISearchRegionChildrenRequest struct {
ctx context.Context
ApiService *RegionsAPIService
regionId int64
page *int32
pageSize *int32
}
// {% note warning \&quot;Если в методе есть :no-translate[&#x60;page_token&#x60;]\&quot; %} Используйте его вместо параметра :no-translate[&#x60;page&#x60;]. [Подробнее о типах пагинации и их использовании](:no-translate[../../concepts/pagination.md]) {% endnote %} Номер страницы результатов. Используется вместе с параметром :no-translate[&#x60;pageSize&#x60;]. :no-translate[&#x60;page&#x60;] игнорируется, если задан :no-translate[&#x60;page_token&#x60;] или :no-translate[&#x60;limit&#x60;].
func (r RegionsAPISearchRegionChildrenRequest) Page(page int32) RegionsAPISearchRegionChildrenRequest {
r.page = &page
return r
}
// Размер страницы. Используется вместе с параметром :no-translate[&#x60;page&#x60;]. :no-translate[&#x60;pageSize&#x60;] игнорируется, если задан :no-translate[&#x60;page_token&#x60;] или :no-translate[&#x60;limit&#x60;].
func (r RegionsAPISearchRegionChildrenRequest) PageSize(pageSize int32) RegionsAPISearchRegionChildrenRequest {
r.pageSize = &pageSize
return r
}
func (r RegionsAPISearchRegionChildrenRequest) Execute() (*GetRegionWithChildrenResponse, *http.Response, error) {
return r.ApiService.SearchRegionChildrenExecute(r)
}
/*
SearchRegionChildren Информация о дочерних регионах
{% include notitle [:no-translate[access]](../../_auto/method_scopes/searchRegionChildren.md) %}
Возвращает информацию о регионах, являющихся дочерними по отношению к региону, идентификатор которого указан в запросе.
Для методов `GET regions`, `GET regions/{regionId}` и `GET regions/{regionId}/children` действует групповое ресурсное ограничение. Ограничение вводится на суммарное количество регионов, информация о которых запрошена при помощи этих методов (не более 100 000 регионов).
Объем запросов к ресурсу, который возможно выполнить в течение суток, зависит от суммарного количества регионов.
|**:no-translate[⚙️] Лимит:** 50 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param regionId Идентификатор региона. Идентификатор региона можно получить c помощью запроса [:no-translate[GET regions]](:no-translate[../../reference/regions/searchRegionsByName.md]).
@return RegionsAPISearchRegionChildrenRequest
*/
func (a *RegionsAPIService) SearchRegionChildren(ctx context.Context, regionId int64) RegionsAPISearchRegionChildrenRequest {
return RegionsAPISearchRegionChildrenRequest{
ApiService: a,
ctx: ctx,
regionId: regionId,
}
}
// Execute executes the request
//
// @return GetRegionWithChildrenResponse
func (a *RegionsAPIService) SearchRegionChildrenExecute(r RegionsAPISearchRegionChildrenRequest) (*GetRegionWithChildrenResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetRegionWithChildrenResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RegionsAPIService.SearchRegionChildren")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/regions/{regionId}/children"
localVarPath = strings.Replace(localVarPath, "{"+"regionId"+"}", url.PathEscape(parameterValueToString(r.regionId, "regionId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.page != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "", "")
} else {
var defaultValue int32 = 1
r.page = &defaultValue
}
if r.pageSize != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "pageSize", r.pageSize, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type RegionsAPISearchRegionsByIdRequest struct {
ctx context.Context
ApiService *RegionsAPIService
regionId int64
}
func (r RegionsAPISearchRegionsByIdRequest) Execute() (*GetRegionsResponse, *http.Response, error) {
return r.ApiService.SearchRegionsByIdExecute(r)
}
/*
SearchRegionsById Информация о регионе
{% include notitle [:no-translate[access]](../../_auto/method_scopes/searchRegionsById.md) %}
Возвращает информацию о регионе.
Для методов `GET regions`, `GET regions/{regionId}` и `GET regions/{regionId}/children` действует групповое ресурсное ограничение. Ограничение вводится на суммарное количество регионов, информация о которых запрошена при помощи этих методов (не более 100 000 регионов).
Объем запросов к ресурсу, который возможно выполнить в течение суток, зависит от суммарного количества регионов.
|**:no-translate[⚙️] Лимит:** 50 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param regionId Идентификатор региона. Идентификатор региона можно получить c помощью запроса [:no-translate[GET regions]](:no-translate[../../reference/regions/searchRegionsByName.md]).
@return RegionsAPISearchRegionsByIdRequest
*/
func (a *RegionsAPIService) SearchRegionsById(ctx context.Context, regionId int64) RegionsAPISearchRegionsByIdRequest {
return RegionsAPISearchRegionsByIdRequest{
ApiService: a,
ctx: ctx,
regionId: regionId,
}
}
// Execute executes the request
//
// @return GetRegionsResponse
func (a *RegionsAPIService) SearchRegionsByIdExecute(r RegionsAPISearchRegionsByIdRequest) (*GetRegionsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetRegionsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RegionsAPIService.SearchRegionsById")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/regions/{regionId}"
localVarPath = strings.Replace(localVarPath, "{"+"regionId"+"}", url.PathEscape(parameterValueToString(r.regionId, "regionId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type RegionsAPISearchRegionsByNameRequest struct {
ctx context.Context
ApiService *RegionsAPIService
name *string
pageToken *string
limit *int32
}
// Название региона. Важно учитывать регистр: первая буква должна быть заглавной, остальные — строчными. Например, :no-translate[&#x60;Москва&#x60;].
func (r RegionsAPISearchRegionsByNameRequest) Name(name string) RegionsAPISearchRegionsByNameRequest {
r.name = &name
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r RegionsAPISearchRegionsByNameRequest) PageToken(pageToken string) RegionsAPISearchRegionsByNameRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r RegionsAPISearchRegionsByNameRequest) Limit(limit int32) RegionsAPISearchRegionsByNameRequest {
r.limit = &limit
return r
}
func (r RegionsAPISearchRegionsByNameRequest) Execute() (*GetRegionsResponse, *http.Response, error) {
return r.ApiService.SearchRegionsByNameExecute(r)
}
/*
SearchRegionsByName Поиск регионов по их имени
{% include notitle [:no-translate[access]](../../_auto/method_scopes/searchRegionsByName.md) %}
Возвращает информацию о регионе, удовлетворяющем заданным в запросе условиям поиска.
Если найдено несколько регионов, удовлетворяющих условиям поиска, возвращается информация по каждому найденному региону (но не более десяти регионов) для возможности определения нужного региона по родительским регионам.
Для методов `GET regions`, `GET regions/{regionId}` и `GET regions/{regionId}/children` действует групповое ресурсное ограничение. Ограничение вводится на суммарное количество регионов, информация о которых запрошена при помощи этих методов (не более 100 000 регионов).
Объем запросов к ресурсу, который возможно выполнить в течение суток, зависит от суммарного количества регионов.
|**:no-translate[⚙️] Лимит:** 50 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return RegionsAPISearchRegionsByNameRequest
*/
func (a *RegionsAPIService) SearchRegionsByName(ctx context.Context) RegionsAPISearchRegionsByNameRequest {
return RegionsAPISearchRegionsByNameRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetRegionsResponse
func (a *RegionsAPIService) SearchRegionsByNameExecute(r RegionsAPISearchRegionsByNameRequest) (*GetRegionsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetRegionsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RegionsAPIService.SearchRegionsByName")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/regions"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.name == nil {
return localVarReturnValue, nil, reportError("name is required and must be specified")
}
parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "", "")
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,453 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// StocksAPIService StocksAPI service
type StocksAPIService service
type StocksAPIGetStocksRequest struct {
ctx context.Context
ApiService *StocksAPIService
campaignId int64
pageToken *string
limit *int32
getWarehouseStocksRequest *GetWarehouseStocksRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r StocksAPIGetStocksRequest) PageToken(pageToken string) StocksAPIGetStocksRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r StocksAPIGetStocksRequest) Limit(limit int32) StocksAPIGetStocksRequest {
r.limit = &limit
return r
}
func (r StocksAPIGetStocksRequest) GetWarehouseStocksRequest(getWarehouseStocksRequest GetWarehouseStocksRequest) StocksAPIGetStocksRequest {
r.getWarehouseStocksRequest = &getWarehouseStocksRequest
return r
}
func (r StocksAPIGetStocksRequest) Execute() (*GetWarehouseStocksResponse, *http.Response, error) {
return r.ApiService.GetStocksExecute(r)
}
/*
GetStocks Информация об остатках и оборачиваемости
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getStocks.md) %}
Возвращает данные об остатках товаров (для всех моделей) и об [оборачиваемости](:no-translate[*turnover]) товаров (для модели :no-translate[FBY]).
**Для модели :no-translate[FBY]:** информация об остатках может возвращаться с нескольких складов Маркета, у которых будут разные `warehouseId`. Получить список складов Маркета можно с помощью метода [GET warehouses](../../reference/warehouses/getFulfillmentWarehouses.md).
{% note info "По умолчанию данные по оборачивамости не возращаются" %}
Чтобы они были в ответе, передавайте `true` в поле `withTurnover`.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 100 000 товаров в минуту|
|-|
[//]: <> (turnover: Среднее количество дней, за которое товар продается. Подробно об оборачиваемости рассказано в Справке Маркета для продавцов https://yandex.ru/support/marketplace/analytics/turnover.html.)
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return StocksAPIGetStocksRequest
*/
func (a *StocksAPIService) GetStocks(ctx context.Context, campaignId int64) StocksAPIGetStocksRequest {
return StocksAPIGetStocksRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetWarehouseStocksResponse
func (a *StocksAPIService) GetStocksExecute(r StocksAPIGetStocksRequest) (*GetWarehouseStocksResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetWarehouseStocksResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "StocksAPIService.GetStocks")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offers/stocks"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getWarehouseStocksRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type StocksAPIUpdateStocksRequest struct {
ctx context.Context
ApiService *StocksAPIService
campaignId int64
updateStocksRequest *UpdateStocksRequest
}
func (r StocksAPIUpdateStocksRequest) UpdateStocksRequest(updateStocksRequest UpdateStocksRequest) StocksAPIUpdateStocksRequest {
r.updateStocksRequest = &updateStocksRequest
return r
}
func (r StocksAPIUpdateStocksRequest) Execute() (*EmptyApiResponse, *http.Response, error) {
return r.ApiService.UpdateStocksExecute(r)
}
/*
UpdateStocks Передача информации об остатках
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateStocks.md) %}
Передает данные об остатках товаров на витрине.
Для группы складов передавайте остатки только для **одного любого склада**. Информация для остальных складов в этой группе обновится автоматически.
Обязательно указывайте :no-translate[SKU] **в точности** так, как он указан в каталоге. Например, _557722_ и _0557722_ — это два разных :no-translate[SKU].
{% note info "Данные в каталоге обновляются не мгновенно" %}
Это занимает до нескольких минут.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 100 000 товаров в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return StocksAPIUpdateStocksRequest
*/
func (a *StocksAPIService) UpdateStocks(ctx context.Context, campaignId int64) StocksAPIUpdateStocksRequest {
return StocksAPIUpdateStocksRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return EmptyApiResponse
func (a *StocksAPIService) UpdateStocksExecute(r StocksAPIUpdateStocksRequest) (*EmptyApiResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPut
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *EmptyApiResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "StocksAPIService.UpdateStocks")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/offers/stocks"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.updateStocksRequest == nil {
return localVarReturnValue, nil, reportError("updateStocksRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateStocksRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,655 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// SupplyRequestsAPIService SupplyRequestsAPI service
type SupplyRequestsAPIService service
type SupplyRequestsAPIGetSupplyRequestDocumentsRequest struct {
ctx context.Context
ApiService *SupplyRequestsAPIService
campaignId int64
getSupplyRequestDocumentsRequest *GetSupplyRequestDocumentsRequest
}
func (r SupplyRequestsAPIGetSupplyRequestDocumentsRequest) GetSupplyRequestDocumentsRequest(getSupplyRequestDocumentsRequest GetSupplyRequestDocumentsRequest) SupplyRequestsAPIGetSupplyRequestDocumentsRequest {
r.getSupplyRequestDocumentsRequest = &getSupplyRequestDocumentsRequest
return r
}
func (r SupplyRequestsAPIGetSupplyRequestDocumentsRequest) Execute() (*GetSupplyRequestDocumentsResponse, *http.Response, error) {
return r.ApiService.GetSupplyRequestDocumentsExecute(r)
}
/*
GetSupplyRequestDocuments Получение документов по заявке на поставку, вывоз или утилизацию
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getSupplyRequestDocuments.md) %}
Возвращает документы по заявке.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return SupplyRequestsAPIGetSupplyRequestDocumentsRequest
*/
func (a *SupplyRequestsAPIService) GetSupplyRequestDocuments(ctx context.Context, campaignId int64) SupplyRequestsAPIGetSupplyRequestDocumentsRequest {
return SupplyRequestsAPIGetSupplyRequestDocumentsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetSupplyRequestDocumentsResponse
func (a *SupplyRequestsAPIService) GetSupplyRequestDocumentsExecute(r SupplyRequestsAPIGetSupplyRequestDocumentsRequest) (*GetSupplyRequestDocumentsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetSupplyRequestDocumentsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SupplyRequestsAPIService.GetSupplyRequestDocuments")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/supply-requests/documents"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getSupplyRequestDocumentsRequest == nil {
return localVarReturnValue, nil, reportError("getSupplyRequestDocumentsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getSupplyRequestDocumentsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type SupplyRequestsAPIGetSupplyRequestItemsRequest struct {
ctx context.Context
ApiService *SupplyRequestsAPIService
campaignId int64
getSupplyRequestItemsRequest *GetSupplyRequestItemsRequest
pageToken *string
limit *int32
}
func (r SupplyRequestsAPIGetSupplyRequestItemsRequest) GetSupplyRequestItemsRequest(getSupplyRequestItemsRequest GetSupplyRequestItemsRequest) SupplyRequestsAPIGetSupplyRequestItemsRequest {
r.getSupplyRequestItemsRequest = &getSupplyRequestItemsRequest
return r
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r SupplyRequestsAPIGetSupplyRequestItemsRequest) PageToken(pageToken string) SupplyRequestsAPIGetSupplyRequestItemsRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r SupplyRequestsAPIGetSupplyRequestItemsRequest) Limit(limit int32) SupplyRequestsAPIGetSupplyRequestItemsRequest {
r.limit = &limit
return r
}
func (r SupplyRequestsAPIGetSupplyRequestItemsRequest) Execute() (*GetSupplyRequestItemsResponse, *http.Response, error) {
return r.ApiService.GetSupplyRequestItemsExecute(r)
}
/*
GetSupplyRequestItems Получение товаров в заявке на поставку, вывоз или утилизацию
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getSupplyRequestItems.md) %}
Возвращает список товаров в заявке и информацию по ним.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return SupplyRequestsAPIGetSupplyRequestItemsRequest
*/
func (a *SupplyRequestsAPIService) GetSupplyRequestItems(ctx context.Context, campaignId int64) SupplyRequestsAPIGetSupplyRequestItemsRequest {
return SupplyRequestsAPIGetSupplyRequestItemsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetSupplyRequestItemsResponse
func (a *SupplyRequestsAPIService) GetSupplyRequestItemsExecute(r SupplyRequestsAPIGetSupplyRequestItemsRequest) (*GetSupplyRequestItemsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetSupplyRequestItemsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SupplyRequestsAPIService.GetSupplyRequestItems")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/supply-requests/items"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.getSupplyRequestItemsRequest == nil {
return localVarReturnValue, nil, reportError("getSupplyRequestItemsRequest is required and must be specified")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getSupplyRequestItemsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type SupplyRequestsAPIGetSupplyRequestsRequest struct {
ctx context.Context
ApiService *SupplyRequestsAPIService
campaignId int64
pageToken *string
limit *int32
getSupplyRequestsRequest *GetSupplyRequestsRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r SupplyRequestsAPIGetSupplyRequestsRequest) PageToken(pageToken string) SupplyRequestsAPIGetSupplyRequestsRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r SupplyRequestsAPIGetSupplyRequestsRequest) Limit(limit int32) SupplyRequestsAPIGetSupplyRequestsRequest {
r.limit = &limit
return r
}
func (r SupplyRequestsAPIGetSupplyRequestsRequest) GetSupplyRequestsRequest(getSupplyRequestsRequest GetSupplyRequestsRequest) SupplyRequestsAPIGetSupplyRequestsRequest {
r.getSupplyRequestsRequest = &getSupplyRequestsRequest
return r
}
func (r SupplyRequestsAPIGetSupplyRequestsRequest) Execute() (*GetSupplyRequestsResponse, *http.Response, error) {
return r.ApiService.GetSupplyRequestsExecute(r)
}
/*
GetSupplyRequests Получение информации о заявках на поставку, вывоз и утилизацию
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getSupplyRequests.md) %}
По указанным фильтрам возвращает заявки на поставку, вывоз и утилизацию, а также информацию по ним.
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return SupplyRequestsAPIGetSupplyRequestsRequest
*/
func (a *SupplyRequestsAPIService) GetSupplyRequests(ctx context.Context, campaignId int64) SupplyRequestsAPIGetSupplyRequestsRequest {
return SupplyRequestsAPIGetSupplyRequestsRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return GetSupplyRequestsResponse
func (a *SupplyRequestsAPIService) GetSupplyRequestsExecute(r SupplyRequestsAPIGetSupplyRequestsRequest) (*GetSupplyRequestsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetSupplyRequestsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "SupplyRequestsAPIService.GetSupplyRequests")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/supply-requests"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getSupplyRequestsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,222 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
)
// TariffsAPIService TariffsAPI service
type TariffsAPIService service
type TariffsAPICalculateTariffsRequest struct {
ctx context.Context
ApiService *TariffsAPIService
calculateTariffsRequest *CalculateTariffsRequest
}
func (r TariffsAPICalculateTariffsRequest) CalculateTariffsRequest(calculateTariffsRequest CalculateTariffsRequest) TariffsAPICalculateTariffsRequest {
r.calculateTariffsRequest = &calculateTariffsRequest
return r
}
func (r TariffsAPICalculateTariffsRequest) Execute() (*CalculateTariffsResponse, *http.Response, error) {
return r.ApiService.CalculateTariffsExecute(r)
}
/*
CalculateTariffs Калькулятор стоимости услуг
{% include notitle [:no-translate[access]](../../_auto/method_scopes/calculateTariffs.md) %}
Рассчитывает стоимость услуг Маркета для товаров с заданными параметрами. Порядок товаров в запросе и ответе сохраняется, чтобы определить,
для какого товара рассчитана стоимость услуги.
Обратите внимание: калькулятор осуществляет примерные расчеты. Финальная стоимость для каждого заказа зависит от предоставленных услуг.
В запросе можно указать либо параметр `campaignId`, либо `sellingProgram`. Совместное использование параметров приведет к ошибке.
|**:no-translate[⚙️] Лимит:** 100 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return TariffsAPICalculateTariffsRequest
*/
func (a *TariffsAPIService) CalculateTariffs(ctx context.Context) TariffsAPICalculateTariffsRequest {
return TariffsAPICalculateTariffsRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return CalculateTariffsResponse
func (a *TariffsAPIService) CalculateTariffsExecute(r TariffsAPICalculateTariffsRequest) (*CalculateTariffsResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *CalculateTariffsResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "TariffsAPIService.CalculateTariffs")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/tariffs/calculate"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.calculateTariffsRequest == nil {
return localVarReturnValue, nil, reportError("calculateTariffsRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.calculateTariffsRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,817 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// WarehousesAPIService WarehousesAPI service
type WarehousesAPIService service
type WarehousesAPIGetFulfillmentWarehousesRequest struct {
ctx context.Context
ApiService *WarehousesAPIService
}
func (r WarehousesAPIGetFulfillmentWarehousesRequest) Execute() (*GetFulfillmentWarehousesResponse, *http.Response, error) {
return r.ApiService.GetFulfillmentWarehousesExecute(r)
}
/*
GetFulfillmentWarehouses Идентификаторы складов Маркета
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getFulfillmentWarehouses.md) %}
Возвращает список складов Маркета с их идентификаторами.
|**:no-translate[⚙️] Лимит:** 100 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return WarehousesAPIGetFulfillmentWarehousesRequest
*/
func (a *WarehousesAPIService) GetFulfillmentWarehouses(ctx context.Context) WarehousesAPIGetFulfillmentWarehousesRequest {
return WarehousesAPIGetFulfillmentWarehousesRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
//
// @return GetFulfillmentWarehousesResponse
func (a *WarehousesAPIService) GetFulfillmentWarehousesExecute(r WarehousesAPIGetFulfillmentWarehousesRequest) (*GetFulfillmentWarehousesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetFulfillmentWarehousesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WarehousesAPIService.GetFulfillmentWarehouses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/warehouses"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type WarehousesAPIGetPagedWarehousesRequest struct {
ctx context.Context
ApiService *WarehousesAPIService
businessId int64
pageToken *string
limit *int32
getPagedWarehousesRequest *GetPagedWarehousesRequest
}
// Идентификатор страницы c результатами. Если параметр не указан, возвращается первая страница. Рекомендуем передавать значение выходного параметра :no-translate[&#x60;nextPageToken&#x60;], полученное при последнем запросе. Если задан :no-translate[&#x60;page_token&#x60;] и в запросе есть параметры :no-translate[&#x60;page&#x60;] и :no-translate[&#x60;pageSize&#x60;], они игнорируются.
func (r WarehousesAPIGetPagedWarehousesRequest) PageToken(pageToken string) WarehousesAPIGetPagedWarehousesRequest {
r.pageToken = &pageToken
return r
}
// Количество значений на одной странице.
func (r WarehousesAPIGetPagedWarehousesRequest) Limit(limit int32) WarehousesAPIGetPagedWarehousesRequest {
r.limit = &limit
return r
}
func (r WarehousesAPIGetPagedWarehousesRequest) GetPagedWarehousesRequest(getPagedWarehousesRequest GetPagedWarehousesRequest) WarehousesAPIGetPagedWarehousesRequest {
r.getPagedWarehousesRequest = &getPagedWarehousesRequest
return r
}
func (r WarehousesAPIGetPagedWarehousesRequest) Execute() (*GetPagedWarehousesResponse, *http.Response, error) {
return r.ApiService.GetPagedWarehousesExecute(r)
}
/*
GetPagedWarehouses Список складов
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getPagedWarehouses.md) %}
Возвращает список складов и информацию о них.
{% note warning "Ограничение для параметра `limit`" %}
Не передавайте значение больше 25.
{% endnote %}
|**:no-translate[⚙️] Лимит:** 1 000 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return WarehousesAPIGetPagedWarehousesRequest
*/
func (a *WarehousesAPIService) GetPagedWarehouses(ctx context.Context, businessId int64) WarehousesAPIGetPagedWarehousesRequest {
return WarehousesAPIGetPagedWarehousesRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetPagedWarehousesResponse
func (a *WarehousesAPIService) GetPagedWarehousesExecute(r WarehousesAPIGetPagedWarehousesRequest) (*GetPagedWarehousesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetPagedWarehousesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WarehousesAPIService.GetPagedWarehouses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/warehouses"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
if r.pageToken != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "", "")
}
if r.limit != nil {
parameterAddToHeaderOrQuery(localVarQueryParams, "limit", r.limit, "", "")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.getPagedWarehousesRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type WarehousesAPIGetWarehousesRequest struct {
ctx context.Context
ApiService *WarehousesAPIService
businessId int64
}
func (r WarehousesAPIGetWarehousesRequest) Execute() (*GetWarehousesResponse, *http.Response, error) {
return r.ApiService.GetWarehousesExecute(r)
}
/*
GetWarehouses Список складов и групп складов
{% include notitle [:no-translate[access]](../../_auto/method_scopes/getWarehouses.md) %}
{% note warning "Какой метод использовать вместо устаревшего" %}
[POST businesses/{businessId}/warehouses](../../reference/warehouses/getPagedWarehouses.md)
{% endnote %}
Возвращает список складов и, если склады объединены, список групп складов. [Что такое группы складов и зачем они нужны](https://yandex.ru/support/marketplace/assortment/operations/stocks.html#unified-stocks)
Среди прочего запрос позволяет определить идентификатор, который нужно использовать при передаче остатков для группы складов.
|**:no-translate[⚙️] Лимит:** 100 запросов в минуту|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param businessId Идентификатор кабинета. Чтобы его узнать, воспользуйтесь запросом [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]). [Что такое кабинет и магазин на Маркете](:no-translate[https://yandex.ru/support/marketplace/account/introduction.html])
@return WarehousesAPIGetWarehousesRequest
Deprecated
*/
func (a *WarehousesAPIService) GetWarehouses(ctx context.Context, businessId int64) WarehousesAPIGetWarehousesRequest {
return WarehousesAPIGetWarehousesRequest{
ApiService: a,
ctx: ctx,
businessId: businessId,
}
}
// Execute executes the request
//
// @return GetWarehousesResponse
//
// Deprecated
func (a *WarehousesAPIService) GetWarehousesExecute(r WarehousesAPIGetWarehousesRequest) (*GetWarehousesResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *GetWarehousesResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WarehousesAPIService.GetWarehouses")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/businesses/{businessId}/warehouses"
localVarPath = strings.Replace(localVarPath, "{"+"businessId"+"}", url.PathEscape(parameterValueToString(r.businessId, "businessId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.businessId < 1 {
return localVarReturnValue, nil, reportError("businessId must be greater than 1")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 404 {
var v ApiNotFoundErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type WarehousesAPIUpdateWarehouseStatusRequest struct {
ctx context.Context
ApiService *WarehousesAPIService
campaignId int64
updateWarehouseStatusRequest *UpdateWarehouseStatusRequest
}
func (r WarehousesAPIUpdateWarehouseStatusRequest) UpdateWarehouseStatusRequest(updateWarehouseStatusRequest UpdateWarehouseStatusRequest) WarehousesAPIUpdateWarehouseStatusRequest {
r.updateWarehouseStatusRequest = &updateWarehouseStatusRequest
return r
}
func (r WarehousesAPIUpdateWarehouseStatusRequest) Execute() (*UpdateWarehouseStatusResponse, *http.Response, error) {
return r.ApiService.UpdateWarehouseStatusExecute(r)
}
/*
UpdateWarehouseStatus Изменение статуса склада
{% include notitle [:no-translate[access]](../../_auto/method_scopes/updateWarehouseStatus.md) %}
Отключает или включает склад.
После отключения склада товары, которые находятся на нем, скрываются через 15 минут. После включения они возвращаются на витрину через 15 минут, а если склад был выключен 30 дней или дольше — через 4 часа.
|**:no-translate[⚙️] Лимит:** 100 запросов в час|
|-|
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param campaignId Идентификатор кампании. Его можно узнать с помощью запроса [:no-translate[GET campaigns]](:no-translate[../../reference/campaigns/getCampaigns.md]) или найти в кабинете продавца на Маркете — нажмите на название своего бизнеса и перейдите на страницу: * **Модули и :no-translate[API]** → блок **Передача данных Маркету**. * **Лог запросов** → выпадающий список в блоке **Показывать логи**. ⚠️ Не передавайте вместо него идентификатор магазина, который указан в кабинете продавца на Маркете рядом с названием магазина и в некоторых отчетах.
@return WarehousesAPIUpdateWarehouseStatusRequest
*/
func (a *WarehousesAPIService) UpdateWarehouseStatus(ctx context.Context, campaignId int64) WarehousesAPIUpdateWarehouseStatusRequest {
return WarehousesAPIUpdateWarehouseStatusRequest{
ApiService: a,
ctx: ctx,
campaignId: campaignId,
}
}
// Execute executes the request
//
// @return UpdateWarehouseStatusResponse
func (a *WarehousesAPIService) UpdateWarehouseStatusExecute(r WarehousesAPIUpdateWarehouseStatusRequest) (*UpdateWarehouseStatusResponse, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *UpdateWarehouseStatusResponse
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "WarehousesAPIService.UpdateWarehouseStatus")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/campaigns/{campaignId}/warehouse/status"
localVarPath = strings.Replace(localVarPath, "{"+"campaignId"+"}", url.PathEscape(parameterValueToString(r.campaignId, "campaignId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.campaignId < 1 {
return localVarReturnValue, nil, reportError("campaignId must be greater than 1")
}
if r.updateWarehouseStatusRequest == nil {
return localVarReturnValue, nil, reportError("updateWarehouseStatusRequest is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.updateWarehouseStatusRequest
if r.ctx != nil {
// API Key Authentication
if auth, ok := r.ctx.Value(ContextAPIKeys).(map[string]APIKey); ok {
if apiKey, ok := auth["ApiKey"]; ok {
var key string
if apiKey.Prefix != "" {
key = apiKey.Prefix + " " + apiKey.Key
} else {
key = apiKey.Key
}
localVarHeaderParams["Api-Key"] = key
}
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
if localVarHTTPResponse.StatusCode == 400 {
var v ApiClientDataErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 401 {
var v ApiUnauthorizedErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 403 {
var v ApiForbiddenErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 420 {
var v ApiLimitErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
return localVarReturnValue, localVarHTTPResponse, newErr
}
if localVarHTTPResponse.StatusCode == 500 {
var v ApiServerErrorResponse
err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHTTPResponse, newErr
}
newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
newErr.model = v
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}

View File

@@ -0,0 +1,782 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"bytes"
"context"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
"io"
"log"
"mime/multipart"
"net/http"
"net/http/httputil"
"net/url"
"os"
"path/filepath"
"reflect"
"regexp"
"strconv"
"strings"
"time"
"unicode/utf8"
"golang.org/x/oauth2"
)
var (
JsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`)
XmlCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`)
queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`)
queryDescape = strings.NewReplacer("%5B", "[", "%5D", "]")
)
// APIClient manages communication with the API Яндекс Маркета для продавцов API vLATEST
// In most cases there should be only one, shared, APIClient.
type APIClient struct {
cfg *Configuration
common service // Reuse a single struct instead of allocating one for each service on the heap.
// API Services
AuthAPI *AuthAPIService
BidsAPI *BidsAPIService
BusinessOfferMappingsAPI *BusinessOfferMappingsAPIService
BusinessesAPI *BusinessesAPIService
CampaignsAPI *CampaignsAPIService
CategoriesAPI *CategoriesAPIService
ChatsAPI *ChatsAPIService
ContentAPI *ContentAPIService
DbsAPI *DbsAPIService
DeliveryServicesAPI *DeliveryServicesAPIService
ExpressAPI *ExpressAPIService
FbsAPI *FbsAPIService
FbyAPI *FbyAPIService
GoodsFeedbackAPI *GoodsFeedbackAPIService
GoodsStatsAPI *GoodsStatsAPIService
HiddenOffersAPI *HiddenOffersAPIService
LaasAPI *LaasAPIService
ModelsAPI *ModelsAPIService
OfferMappingsAPI *OfferMappingsAPIService
OffersAPI *OffersAPIService
OrderBusinessInformationAPI *OrderBusinessInformationAPIService
OrderDeliveryAPI *OrderDeliveryAPIService
OrderLabelsAPI *OrderLabelsAPIService
OrdersAPI *OrdersAPIService
OrdersStatsAPI *OrdersStatsAPIService
OutletLicensesAPI *OutletLicensesAPIService
OutletsAPI *OutletsAPIService
PriceQuarantineAPI *PriceQuarantineAPIService
PricesAPI *PricesAPIService
PromosAPI *PromosAPIService
RatingsAPI *RatingsAPIService
RegionsAPI *RegionsAPIService
ReportsAPI *ReportsAPIService
ReturnsAPI *ReturnsAPIService
ShipmentsAPI *ShipmentsAPIService
StocksAPI *StocksAPIService
SupplyRequestsAPI *SupplyRequestsAPIService
TariffsAPI *TariffsAPIService
WarehousesAPI *WarehousesAPIService
}
type service struct {
client *APIClient
}
// NewAPIClient creates a new API client. Requires a userAgent string describing your application.
// optionally a custom http.Client to allow for advanced features such as caching.
func NewAPIClient(cfg *Configuration) *APIClient {
if cfg.HTTPClient == nil {
cfg.HTTPClient = http.DefaultClient
}
c := &APIClient{}
c.cfg = cfg
c.common.client = c
// API Services
c.AuthAPI = (*AuthAPIService)(&c.common)
c.BidsAPI = (*BidsAPIService)(&c.common)
c.BusinessOfferMappingsAPI = (*BusinessOfferMappingsAPIService)(&c.common)
c.BusinessesAPI = (*BusinessesAPIService)(&c.common)
c.CampaignsAPI = (*CampaignsAPIService)(&c.common)
c.CategoriesAPI = (*CategoriesAPIService)(&c.common)
c.ChatsAPI = (*ChatsAPIService)(&c.common)
c.ContentAPI = (*ContentAPIService)(&c.common)
c.DbsAPI = (*DbsAPIService)(&c.common)
c.DeliveryServicesAPI = (*DeliveryServicesAPIService)(&c.common)
c.ExpressAPI = (*ExpressAPIService)(&c.common)
c.FbsAPI = (*FbsAPIService)(&c.common)
c.FbyAPI = (*FbyAPIService)(&c.common)
c.GoodsFeedbackAPI = (*GoodsFeedbackAPIService)(&c.common)
c.GoodsStatsAPI = (*GoodsStatsAPIService)(&c.common)
c.HiddenOffersAPI = (*HiddenOffersAPIService)(&c.common)
c.LaasAPI = (*LaasAPIService)(&c.common)
c.ModelsAPI = (*ModelsAPIService)(&c.common)
c.OfferMappingsAPI = (*OfferMappingsAPIService)(&c.common)
c.OffersAPI = (*OffersAPIService)(&c.common)
c.OrderBusinessInformationAPI = (*OrderBusinessInformationAPIService)(&c.common)
c.OrderDeliveryAPI = (*OrderDeliveryAPIService)(&c.common)
c.OrderLabelsAPI = (*OrderLabelsAPIService)(&c.common)
c.OrdersAPI = (*OrdersAPIService)(&c.common)
c.OrdersStatsAPI = (*OrdersStatsAPIService)(&c.common)
c.OutletLicensesAPI = (*OutletLicensesAPIService)(&c.common)
c.OutletsAPI = (*OutletsAPIService)(&c.common)
c.PriceQuarantineAPI = (*PriceQuarantineAPIService)(&c.common)
c.PricesAPI = (*PricesAPIService)(&c.common)
c.PromosAPI = (*PromosAPIService)(&c.common)
c.RatingsAPI = (*RatingsAPIService)(&c.common)
c.RegionsAPI = (*RegionsAPIService)(&c.common)
c.ReportsAPI = (*ReportsAPIService)(&c.common)
c.ReturnsAPI = (*ReturnsAPIService)(&c.common)
c.ShipmentsAPI = (*ShipmentsAPIService)(&c.common)
c.StocksAPI = (*StocksAPIService)(&c.common)
c.SupplyRequestsAPI = (*SupplyRequestsAPIService)(&c.common)
c.TariffsAPI = (*TariffsAPIService)(&c.common)
c.WarehousesAPI = (*WarehousesAPIService)(&c.common)
return c
}
func atoi(in string) (int, error) {
return strconv.Atoi(in)
}
// selectHeaderContentType select a content type from the available list.
func selectHeaderContentType(contentTypes []string) string {
if len(contentTypes) == 0 {
return ""
}
if contains(contentTypes, "application/json") {
return "application/json"
}
return contentTypes[0] // use the first content type specified in 'consumes'
}
// selectHeaderAccept join all accept types and return
func selectHeaderAccept(accepts []string) string {
if len(accepts) == 0 {
return ""
}
if contains(accepts, "application/json") {
return "application/json"
}
return strings.Join(accepts, ",")
}
// contains is a case insensitive match, finding needle in a haystack
func contains(haystack []string, needle string) bool {
for _, a := range haystack {
if strings.EqualFold(a, needle) {
return true
}
}
return false
}
// Verify optional parameters are of the correct type.
func typeCheckParameter(obj interface{}, expected string, name string) error {
// Make sure there is an object.
if obj == nil {
return nil
}
// Check the type is as expected.
if reflect.TypeOf(obj).String() != expected {
return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String())
}
return nil
}
func parameterValueToString(obj interface{}, key string) string {
if reflect.TypeOf(obj).Kind() != reflect.Ptr {
if actualObj, ok := obj.(interface{ GetActualInstanceValue() interface{} }); ok {
return fmt.Sprintf("%v", actualObj.GetActualInstanceValue())
}
return fmt.Sprintf("%v", obj)
}
var param, ok = obj.(MappedNullable)
if !ok {
return ""
}
dataMap, err := param.ToMap()
if err != nil {
return ""
}
return fmt.Sprintf("%v", dataMap[key])
}
// parameterAddToHeaderOrQuery adds the provided object to the request header or url query
// supporting deep object syntax
func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) {
var v = reflect.ValueOf(obj)
var value = ""
if v == reflect.ValueOf(nil) {
value = "null"
} else {
switch v.Kind() {
case reflect.Invalid:
value = "invalid"
case reflect.Struct:
if t, ok := obj.(MappedNullable); ok {
dataMap, err := t.ToMap()
if err != nil {
return
}
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType)
return
}
if t, ok := obj.(time.Time); ok {
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType)
return
}
value = v.Type().String() + " value"
case reflect.Slice:
var indValue = reflect.ValueOf(obj)
if indValue == reflect.ValueOf(nil) {
return
}
var lenIndValue = indValue.Len()
for i := 0; i < lenIndValue; i++ {
var arrayValue = indValue.Index(i)
var keyPrefixForCollectionType = keyPrefix
if style == "deepObject" {
keyPrefixForCollectionType = keyPrefix + "[" + strconv.Itoa(i) + "]"
}
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefixForCollectionType, arrayValue.Interface(), style, collectionType)
}
return
case reflect.Map:
var indValue = reflect.ValueOf(obj)
if indValue == reflect.ValueOf(nil) {
return
}
iter := indValue.MapRange()
for iter.Next() {
k, v := iter.Key(), iter.Value()
parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), style, collectionType)
}
return
case reflect.Interface:
fallthrough
case reflect.Ptr:
parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), style, collectionType)
return
case reflect.Int, reflect.Int8, reflect.Int16,
reflect.Int32, reflect.Int64:
value = strconv.FormatInt(v.Int(), 10)
case reflect.Uint, reflect.Uint8, reflect.Uint16,
reflect.Uint32, reflect.Uint64, reflect.Uintptr:
value = strconv.FormatUint(v.Uint(), 10)
case reflect.Float32, reflect.Float64:
value = strconv.FormatFloat(v.Float(), 'g', -1, 32)
case reflect.Bool:
value = strconv.FormatBool(v.Bool())
case reflect.String:
value = v.String()
default:
value = v.Type().String() + " value"
}
}
switch valuesMap := headerOrQueryParams.(type) {
case url.Values:
if collectionType == "csv" && valuesMap.Get(keyPrefix) != "" {
valuesMap.Set(keyPrefix, valuesMap.Get(keyPrefix)+","+value)
} else {
valuesMap.Add(keyPrefix, value)
}
break
case map[string]string:
valuesMap[keyPrefix] = value
break
}
}
// helper for converting interface{} parameters to json strings
func parameterToJson(obj interface{}) (string, error) {
jsonBuf, err := json.Marshal(obj)
if err != nil {
return "", err
}
return string(jsonBuf), err
}
// callAPI do the request.
func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) {
if c.cfg.Debug {
dump, err := httputil.DumpRequestOut(request, true)
if err != nil {
return nil, err
}
log.Printf("\n%s\n", string(dump))
}
resp, err := c.cfg.HTTPClient.Do(request)
if err != nil {
return resp, err
}
if c.cfg.Debug {
dump, err := httputil.DumpResponse(resp, true)
if err != nil {
return resp, err
}
log.Printf("\n%s\n", string(dump))
}
return resp, err
}
// Allow modification of underlying config for alternate implementations and testing
// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior
func (c *APIClient) GetConfig() *Configuration {
return c.cfg
}
type formFile struct {
fileBytes []byte
fileName string
formFileName string
}
// prepareRequest build the request
func (c *APIClient) prepareRequest(
ctx context.Context,
path string, method string,
postBody interface{},
headerParams map[string]string,
queryParams url.Values,
formParams url.Values,
formFiles []formFile) (localVarRequest *http.Request, err error) {
var body *bytes.Buffer
// Detect postBody type and post.
if postBody != nil {
contentType := headerParams["Content-Type"]
if contentType == "" {
contentType = detectContentType(postBody)
headerParams["Content-Type"] = contentType
}
body, err = setBody(postBody, contentType)
if err != nil {
return nil, err
}
}
// add form parameters and file if available.
if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(formFiles) > 0) {
if body != nil {
return nil, errors.New("Cannot specify postBody and multipart form at the same time.")
}
body = &bytes.Buffer{}
w := multipart.NewWriter(body)
for k, v := range formParams {
for _, iv := range v {
if strings.HasPrefix(k, "@") { // file
err = addFile(w, k[1:], iv)
if err != nil {
return nil, err
}
} else { // form value
w.WriteField(k, iv)
}
}
}
for _, formFile := range formFiles {
if len(formFile.fileBytes) > 0 && formFile.fileName != "" {
w.Boundary()
part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName))
if err != nil {
return nil, err
}
_, err = part.Write(formFile.fileBytes)
if err != nil {
return nil, err
}
}
}
// Set the Boundary in the Content-Type
headerParams["Content-Type"] = w.FormDataContentType()
// Set Content-Length
headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
w.Close()
}
if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 {
if body != nil {
return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.")
}
body = &bytes.Buffer{}
body.WriteString(formParams.Encode())
// Set Content-Length
headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
}
// Setup path and query parameters
url, err := url.Parse(path)
if err != nil {
return nil, err
}
// Override request host, if applicable
if c.cfg.Host != "" {
url.Host = c.cfg.Host
}
// Override request scheme, if applicable
if c.cfg.Scheme != "" {
url.Scheme = c.cfg.Scheme
}
// Adding Query Param
query := url.Query()
for k, v := range queryParams {
for _, iv := range v {
query.Add(k, iv)
}
}
// Encode the parameters.
url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string {
pieces := strings.Split(s, "=")
pieces[0] = queryDescape.Replace(pieces[0])
return strings.Join(pieces, "=")
})
// Generate a new request
if body != nil {
localVarRequest, err = http.NewRequest(method, url.String(), body)
} else {
localVarRequest, err = http.NewRequest(method, url.String(), nil)
}
if err != nil {
return nil, err
}
// add header parameters, if any
if len(headerParams) > 0 {
headers := http.Header{}
for h, v := range headerParams {
headers[h] = []string{v}
}
localVarRequest.Header = headers
}
// Add the user agent to the request.
localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent)
if ctx != nil {
// add context to the request
localVarRequest = localVarRequest.WithContext(ctx)
// Walk through any authentication.
// OAuth2 authentication
if tok, ok := ctx.Value(ContextOAuth2).(oauth2.TokenSource); ok {
// We were able to grab an oauth2 token from the context
var latestToken *oauth2.Token
if latestToken, err = tok.Token(); err != nil {
return nil, err
}
latestToken.SetAuthHeader(localVarRequest)
}
}
for header, value := range c.cfg.DefaultHeader {
localVarRequest.Header.Add(header, value)
}
return localVarRequest, nil
}
func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) {
if len(b) == 0 {
return nil
}
if s, ok := v.(*string); ok {
*s = string(b)
return nil
}
if f, ok := v.(*os.File); ok {
f, err = os.CreateTemp("", "HttpClientFile")
if err != nil {
return
}
_, err = f.Write(b)
if err != nil {
return
}
_, err = f.Seek(0, io.SeekStart)
return
}
if f, ok := v.(**os.File); ok {
*f, err = os.CreateTemp("", "HttpClientFile")
if err != nil {
return
}
_, err = (*f).Write(b)
if err != nil {
return
}
_, err = (*f).Seek(0, io.SeekStart)
return
}
if XmlCheck.MatchString(contentType) {
if err = xml.Unmarshal(b, v); err != nil {
return err
}
return nil
}
if JsonCheck.MatchString(contentType) {
if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas
if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined
if err = unmarshalObj.UnmarshalJSON(b); err != nil {
return err
}
} else {
return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined")
}
} else if err = json.Unmarshal(b, v); err != nil { // simple model
return err
}
return nil
}
return errors.New("undefined response type")
}
// Add a file to the multipart request
func addFile(w *multipart.Writer, fieldName, path string) error {
file, err := os.Open(filepath.Clean(path))
if err != nil {
return err
}
err = file.Close()
if err != nil {
return err
}
part, err := w.CreateFormFile(fieldName, filepath.Base(path))
if err != nil {
return err
}
_, err = io.Copy(part, file)
return err
}
// Set request body from an interface{}
func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) {
if bodyBuf == nil {
bodyBuf = &bytes.Buffer{}
}
if reader, ok := body.(io.Reader); ok {
_, err = bodyBuf.ReadFrom(reader)
} else if fp, ok := body.(*os.File); ok {
_, err = bodyBuf.ReadFrom(fp)
} else if b, ok := body.([]byte); ok {
_, err = bodyBuf.Write(b)
} else if s, ok := body.(string); ok {
_, err = bodyBuf.WriteString(s)
} else if s, ok := body.(*string); ok {
_, err = bodyBuf.WriteString(*s)
} else if JsonCheck.MatchString(contentType) {
err = json.NewEncoder(bodyBuf).Encode(body)
} else if XmlCheck.MatchString(contentType) {
var bs []byte
bs, err = xml.Marshal(body)
if err == nil {
bodyBuf.Write(bs)
}
}
if err != nil {
return nil, err
}
if bodyBuf.Len() == 0 {
err = fmt.Errorf("invalid body type %s\n", contentType)
return nil, err
}
return bodyBuf, nil
}
// detectContentType method is used to figure out `Request.Body` content type for request header
func detectContentType(body interface{}) string {
contentType := "text/plain; charset=utf-8"
kind := reflect.TypeOf(body).Kind()
switch kind {
case reflect.Struct, reflect.Map, reflect.Ptr:
contentType = "application/json; charset=utf-8"
case reflect.String:
contentType = "text/plain; charset=utf-8"
default:
if b, ok := body.([]byte); ok {
contentType = http.DetectContentType(b)
} else if kind == reflect.Slice {
contentType = "application/json; charset=utf-8"
}
}
return contentType
}
// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go
type cacheControl map[string]string
func parseCacheControl(headers http.Header) cacheControl {
cc := cacheControl{}
ccHeader := headers.Get("Cache-Control")
for _, part := range strings.Split(ccHeader, ",") {
part = strings.Trim(part, " ")
if part == "" {
continue
}
if strings.ContainsRune(part, '=') {
keyval := strings.Split(part, "=")
cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",")
} else {
cc[part] = ""
}
}
return cc
}
// CacheExpires helper function to determine remaining time before repeating a request.
func CacheExpires(r *http.Response) time.Time {
// Figure out when the cache expires.
var expires time.Time
now, err := time.Parse(time.RFC1123, r.Header.Get("date"))
if err != nil {
return time.Now()
}
respCacheControl := parseCacheControl(r.Header)
if maxAge, ok := respCacheControl["max-age"]; ok {
lifetime, err := time.ParseDuration(maxAge + "s")
if err != nil {
expires = now
} else {
expires = now.Add(lifetime)
}
} else {
expiresHeader := r.Header.Get("Expires")
if expiresHeader != "" {
expires, err = time.Parse(time.RFC1123, expiresHeader)
if err != nil {
expires = now
}
}
}
return expires
}
func strlen(s string) int {
return utf8.RuneCountInString(s)
}
// GenericOpenAPIError Provides access to the body, error and model on returned errors.
type GenericOpenAPIError struct {
body []byte
error string
model interface{}
}
// Error returns non-empty string if there was an error.
func (e GenericOpenAPIError) Error() string {
return e.error
}
// Body returns the raw bytes of the response
func (e GenericOpenAPIError) Body() []byte {
return e.body
}
// Model returns the unpacked model of the error
func (e GenericOpenAPIError) Model() interface{} {
return e.model
}
// format error message using title and detail when model implements rfc7807
func formatErrorMessage(status string, v interface{}) string {
str := ""
metaValue := reflect.ValueOf(v).Elem()
if metaValue.Kind() == reflect.Struct {
field := metaValue.FieldByName("Title")
if field != (reflect.Value{}) {
str = fmt.Sprintf("%s", field.Interface())
}
field = metaValue.FieldByName("Detail")
if field != (reflect.Value{}) {
str = fmt.Sprintf("%s (%s)", str, field.Interface())
}
}
return strings.TrimSpace(fmt.Sprintf("%s %s", status, str))
}

View File

@@ -0,0 +1,220 @@
/*
API Яндекс Маркета для продавцов
API Яндекс Маркета помогает продавцам автоматизировать и упростить работу с маркетплейсом. В числе возможностей интеграции: * управление каталогом товаров и витриной, * обработка заказов, * изменение настроек магазина, * получение отчетов.
API version: LATEST
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package ymclient
import (
"context"
"fmt"
"net/http"
"strings"
)
// contextKeys are used to identify the type of value in the context.
// Since these are string, it is possible to get a short description of the
// context key for logging and debugging using key.String().
type contextKey string
func (c contextKey) String() string {
return "auth " + string(c)
}
var (
// ContextOAuth2 takes an oauth2.TokenSource as authentication for the request.
ContextOAuth2 = contextKey("token")
// ContextAPIKeys takes a string apikey as authentication for the request
ContextAPIKeys = contextKey("apiKeys")
// ContextServerIndex uses a server configuration from the index.
ContextServerIndex = contextKey("serverIndex")
// ContextOperationServerIndices uses a server configuration from the index mapping.
ContextOperationServerIndices = contextKey("serverOperationIndices")
// ContextServerVariables overrides a server configuration variables.
ContextServerVariables = contextKey("serverVariables")
// ContextOperationServerVariables overrides a server configuration variables using operation specific values.
ContextOperationServerVariables = contextKey("serverOperationVariables")
)
// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth
type BasicAuth struct {
UserName string `json:"userName,omitempty"`
Password string `json:"password,omitempty"`
}
// APIKey provides API key based authentication to a request passed via context using ContextAPIKey
type APIKey struct {
Key string
Prefix string
}
// ServerVariable stores the information about a server variable
type ServerVariable struct {
Description string
DefaultValue string
EnumValues []string
}
// ServerConfiguration stores the information about a server
type ServerConfiguration struct {
URL string
Description string
Variables map[string]ServerVariable
}
// ServerConfigurations stores multiple ServerConfiguration items
type ServerConfigurations []ServerConfiguration
// Configuration stores the configuration of the API client
type Configuration struct {
Host string `json:"host,omitempty"`
Scheme string `json:"scheme,omitempty"`
DefaultHeader map[string]string `json:"defaultHeader,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
Debug bool `json:"debug,omitempty"`
Servers ServerConfigurations
OperationServers map[string]ServerConfigurations
HTTPClient *http.Client
}
// NewConfiguration returns a new Configuration object
func NewConfiguration() *Configuration {
cfg := &Configuration{
DefaultHeader: make(map[string]string),
UserAgent: "OpenAPI-Generator/1.0.0/go",
Debug: false,
Servers: ServerConfigurations{
{
URL: "https://api.partner.market.yandex.ru",
Description: "No description provided",
},
},
OperationServers: map[string]ServerConfigurations{},
}
return cfg
}
// AddDefaultHeader adds a new HTTP header to the default header in the request
func (c *Configuration) AddDefaultHeader(key string, value string) {
c.DefaultHeader[key] = value
}
// URL formats template on a index using given variables
func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) {
if index < 0 || len(sc) <= index {
return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1)
}
server := sc[index]
url := server.URL
// go through variables and replace placeholders
for name, variable := range server.Variables {
if value, ok := variables[name]; ok {
found := bool(len(variable.EnumValues) == 0)
for _, enumValue := range variable.EnumValues {
if value == enumValue {
found = true
}
}
if !found {
return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues)
}
url = strings.Replace(url, "{"+name+"}", value, -1)
} else {
url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1)
}
}
return url, nil
}
// ServerURL returns URL based on server settings
func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) {
return c.Servers.URL(index, variables)
}
func getServerIndex(ctx context.Context) (int, error) {
si := ctx.Value(ContextServerIndex)
if si != nil {
if index, ok := si.(int); ok {
return index, nil
}
return 0, reportError("Invalid type %T should be int", si)
}
return 0, nil
}
func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) {
osi := ctx.Value(ContextOperationServerIndices)
if osi != nil {
if operationIndices, ok := osi.(map[string]int); !ok {
return 0, reportError("Invalid type %T should be map[string]int", osi)
} else {
index, ok := operationIndices[endpoint]
if ok {
return index, nil
}
}
}
return getServerIndex(ctx)
}
func getServerVariables(ctx context.Context) (map[string]string, error) {
sv := ctx.Value(ContextServerVariables)
if sv != nil {
if variables, ok := sv.(map[string]string); ok {
return variables, nil
}
return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv)
}
return nil, nil
}
func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) {
osv := ctx.Value(ContextOperationServerVariables)
if osv != nil {
if operationVariables, ok := osv.(map[string]map[string]string); !ok {
return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv)
} else {
variables, ok := operationVariables[endpoint]
if ok {
return variables, nil
}
}
}
return getServerVariables(ctx)
}
// ServerURLWithContext returns a new server URL given an endpoint
func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) {
sc, ok := c.OperationServers[endpoint]
if !ok {
sc = c.Servers
}
if ctx == nil {
return sc.URL(0, nil)
}
index, err := getServerOperationIndex(ctx, endpoint)
if err != nil {
return "", err
}
variables, err := getServerOperationVariables(ctx, endpoint)
if err != nil {
return "", err
}
return sc.URL(index, variables)
}

View File

@@ -0,0 +1,77 @@
# AcceptOrderCancellationRequest
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Accepted** | **bool** | Решение об отмене заказа: * &#x60;true&#x60; — заказ отменяется, служба доставки узнала об отмене до передачи заказа покупателю. * &#x60;false&#x60; — заказ не отменяется, так как он уже доставлен покупателю курьером или передан в пункт выдачи заказов. |
**Reason** | Pointer to [**OrderCancellationReasonType**](OrderCancellationReasonType.md) | | [optional]
## Methods
### NewAcceptOrderCancellationRequest
`func NewAcceptOrderCancellationRequest(accepted bool, ) *AcceptOrderCancellationRequest`
NewAcceptOrderCancellationRequest instantiates a new AcceptOrderCancellationRequest object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAcceptOrderCancellationRequestWithDefaults
`func NewAcceptOrderCancellationRequestWithDefaults() *AcceptOrderCancellationRequest`
NewAcceptOrderCancellationRequestWithDefaults instantiates a new AcceptOrderCancellationRequest object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetAccepted
`func (o *AcceptOrderCancellationRequest) GetAccepted() bool`
GetAccepted returns the Accepted field if non-nil, zero value otherwise.
### GetAcceptedOk
`func (o *AcceptOrderCancellationRequest) GetAcceptedOk() (*bool, bool)`
GetAcceptedOk returns a tuple with the Accepted field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAccepted
`func (o *AcceptOrderCancellationRequest) SetAccepted(v bool)`
SetAccepted sets Accepted field to given value.
### GetReason
`func (o *AcceptOrderCancellationRequest) GetReason() OrderCancellationReasonType`
GetReason returns the Reason field if non-nil, zero value otherwise.
### GetReasonOk
`func (o *AcceptOrderCancellationRequest) GetReasonOk() (*OrderCancellationReasonType, bool)`
GetReasonOk returns a tuple with the Reason field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetReason
`func (o *AcceptOrderCancellationRequest) SetReason(v OrderCancellationReasonType)`
SetReason sets Reason field to given value.
### HasReason
`func (o *AcceptOrderCancellationRequest) HasReason() bool`
HasReason returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,51 @@
# AddHiddenOffersRequest
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**HiddenOffers** | [**[]HiddenOfferDTO**](HiddenOfferDTO.md) | Список скрытых товаров. |
## Methods
### NewAddHiddenOffersRequest
`func NewAddHiddenOffersRequest(hiddenOffers []HiddenOfferDTO, ) *AddHiddenOffersRequest`
NewAddHiddenOffersRequest instantiates a new AddHiddenOffersRequest object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAddHiddenOffersRequestWithDefaults
`func NewAddHiddenOffersRequestWithDefaults() *AddHiddenOffersRequest`
NewAddHiddenOffersRequestWithDefaults instantiates a new AddHiddenOffersRequest object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetHiddenOffers
`func (o *AddHiddenOffersRequest) GetHiddenOffers() []HiddenOfferDTO`
GetHiddenOffers returns the HiddenOffers field if non-nil, zero value otherwise.
### GetHiddenOffersOk
`func (o *AddHiddenOffersRequest) GetHiddenOffersOk() (*[]HiddenOfferDTO, bool)`
GetHiddenOffersOk returns a tuple with the HiddenOffers field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetHiddenOffers
`func (o *AddHiddenOffersRequest) SetHiddenOffers(v []HiddenOfferDTO)`
SetHiddenOffers sets HiddenOffers field to given value.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,66 @@
# AddOffersToArchiveDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**NotArchivedOffers** | Pointer to [**[]AddOffersToArchiveErrorDTO**](AddOffersToArchiveErrorDTO.md) | Список товаров, которые не удалось поместить в архив. | [optional]
## Methods
### NewAddOffersToArchiveDTO
`func NewAddOffersToArchiveDTO() *AddOffersToArchiveDTO`
NewAddOffersToArchiveDTO instantiates a new AddOffersToArchiveDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAddOffersToArchiveDTOWithDefaults
`func NewAddOffersToArchiveDTOWithDefaults() *AddOffersToArchiveDTO`
NewAddOffersToArchiveDTOWithDefaults instantiates a new AddOffersToArchiveDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetNotArchivedOffers
`func (o *AddOffersToArchiveDTO) GetNotArchivedOffers() []AddOffersToArchiveErrorDTO`
GetNotArchivedOffers returns the NotArchivedOffers field if non-nil, zero value otherwise.
### GetNotArchivedOffersOk
`func (o *AddOffersToArchiveDTO) GetNotArchivedOffersOk() (*[]AddOffersToArchiveErrorDTO, bool)`
GetNotArchivedOffersOk returns a tuple with the NotArchivedOffers field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetNotArchivedOffers
`func (o *AddOffersToArchiveDTO) SetNotArchivedOffers(v []AddOffersToArchiveErrorDTO)`
SetNotArchivedOffers sets NotArchivedOffers field to given value.
### HasNotArchivedOffers
`func (o *AddOffersToArchiveDTO) HasNotArchivedOffers() bool`
HasNotArchivedOffers returns a boolean if a field has been set.
### SetNotArchivedOffersNil
`func (o *AddOffersToArchiveDTO) SetNotArchivedOffersNil(b bool)`
SetNotArchivedOffersNil sets the value for NotArchivedOffers to be an explicit nil
### UnsetNotArchivedOffers
`func (o *AddOffersToArchiveDTO) UnsetNotArchivedOffers()`
UnsetNotArchivedOffers ensures that no value is present for NotArchivedOffers, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,72 @@
# AddOffersToArchiveErrorDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**OfferId** | **string** | Ваш :no-translate[SKU] — идентификатор товара в вашей системе. Правила использования :no-translate[SKU]: * У каждого товара :no-translate[SKU] должен быть свой. * Уже заданный :no-translate[SKU] нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге. :no-translate[SKU] товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku). [Что такое :no-translate[SKU] и как его назначать](https://yandex.ru/support/marketplace/assortment/add/index.html#fields) |
**Error** | [**AddOffersToArchiveErrorType**](AddOffersToArchiveErrorType.md) | |
## Methods
### NewAddOffersToArchiveErrorDTO
`func NewAddOffersToArchiveErrorDTO(offerId string, error_ AddOffersToArchiveErrorType, ) *AddOffersToArchiveErrorDTO`
NewAddOffersToArchiveErrorDTO instantiates a new AddOffersToArchiveErrorDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAddOffersToArchiveErrorDTOWithDefaults
`func NewAddOffersToArchiveErrorDTOWithDefaults() *AddOffersToArchiveErrorDTO`
NewAddOffersToArchiveErrorDTOWithDefaults instantiates a new AddOffersToArchiveErrorDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetOfferId
`func (o *AddOffersToArchiveErrorDTO) GetOfferId() string`
GetOfferId returns the OfferId field if non-nil, zero value otherwise.
### GetOfferIdOk
`func (o *AddOffersToArchiveErrorDTO) GetOfferIdOk() (*string, bool)`
GetOfferIdOk returns a tuple with the OfferId field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetOfferId
`func (o *AddOffersToArchiveErrorDTO) SetOfferId(v string)`
SetOfferId sets OfferId field to given value.
### GetError
`func (o *AddOffersToArchiveErrorDTO) GetError() AddOffersToArchiveErrorType`
GetError returns the Error field if non-nil, zero value otherwise.
### GetErrorOk
`func (o *AddOffersToArchiveErrorDTO) GetErrorOk() (*AddOffersToArchiveErrorType, bool)`
GetErrorOk returns a tuple with the Error field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetError
`func (o *AddOffersToArchiveErrorDTO) SetError(v AddOffersToArchiveErrorType)`
SetError sets Error field to given value.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,13 @@
# AddOffersToArchiveErrorType
## Enum
* `OFFER_HAS_STOCKS` (value: `"OFFER_HAS_STOCKS"`)
* `UNKNOWN` (value: `"UNKNOWN"`)
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,51 @@
# AddOffersToArchiveRequest
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**OfferIds** | **[]string** | Список товаров, которые нужно поместить в архив. |
## Methods
### NewAddOffersToArchiveRequest
`func NewAddOffersToArchiveRequest(offerIds []string, ) *AddOffersToArchiveRequest`
NewAddOffersToArchiveRequest instantiates a new AddOffersToArchiveRequest object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAddOffersToArchiveRequestWithDefaults
`func NewAddOffersToArchiveRequestWithDefaults() *AddOffersToArchiveRequest`
NewAddOffersToArchiveRequestWithDefaults instantiates a new AddOffersToArchiveRequest object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetOfferIds
`func (o *AddOffersToArchiveRequest) GetOfferIds() []string`
GetOfferIds returns the OfferIds field if non-nil, zero value otherwise.
### GetOfferIdsOk
`func (o *AddOffersToArchiveRequest) GetOfferIdsOk() (*[]string, bool)`
GetOfferIdsOk returns a tuple with the OfferIds field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetOfferIds
`func (o *AddOffersToArchiveRequest) SetOfferIds(v []string)`
SetOfferIds sets OfferIds field to given value.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,82 @@
# AddOffersToArchiveResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Result** | Pointer to [**AddOffersToArchiveDTO**](AddOffersToArchiveDTO.md) | | [optional]
## Methods
### NewAddOffersToArchiveResponse
`func NewAddOffersToArchiveResponse() *AddOffersToArchiveResponse`
NewAddOffersToArchiveResponse instantiates a new AddOffersToArchiveResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAddOffersToArchiveResponseWithDefaults
`func NewAddOffersToArchiveResponseWithDefaults() *AddOffersToArchiveResponse`
NewAddOffersToArchiveResponseWithDefaults instantiates a new AddOffersToArchiveResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *AddOffersToArchiveResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *AddOffersToArchiveResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *AddOffersToArchiveResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *AddOffersToArchiveResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetResult
`func (o *AddOffersToArchiveResponse) GetResult() AddOffersToArchiveDTO`
GetResult returns the Result field if non-nil, zero value otherwise.
### GetResultOk
`func (o *AddOffersToArchiveResponse) GetResultOk() (*AddOffersToArchiveDTO, bool)`
GetResultOk returns a tuple with the Result field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetResult
`func (o *AddOffersToArchiveResponse) SetResult(v AddOffersToArchiveDTO)`
SetResult sets Result field to given value.
### HasResult
`func (o *AddOffersToArchiveResponse) HasResult() bool`
HasResult returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,17 @@
# AffectedOrderQualityRatingComponentType
## Enum
* `DBS_CANCELLATION_RATE` (value: `"DBS_CANCELLATION_RATE"`)
* `DBS_LATE_DELIVERY_RATE` (value: `"DBS_LATE_DELIVERY_RATE"`)
* `FBS_CANCELLATION_RATE` (value: `"FBS_CANCELLATION_RATE"`)
* `FBS_LATE_SHIP_RATE` (value: `"FBS_LATE_SHIP_RATE"`)
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,72 @@
# AgeDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Value** | **float32** | Значение. |
**AgeUnit** | [**AgeUnitType**](AgeUnitType.md) | |
## Methods
### NewAgeDTO
`func NewAgeDTO(value float32, ageUnit AgeUnitType, ) *AgeDTO`
NewAgeDTO instantiates a new AgeDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewAgeDTOWithDefaults
`func NewAgeDTOWithDefaults() *AgeDTO`
NewAgeDTOWithDefaults instantiates a new AgeDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetValue
`func (o *AgeDTO) GetValue() float32`
GetValue returns the Value field if non-nil, zero value otherwise.
### GetValueOk
`func (o *AgeDTO) GetValueOk() (*float32, bool)`
GetValueOk returns a tuple with the Value field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetValue
`func (o *AgeDTO) SetValue(v float32)`
SetValue sets Value field to given value.
### GetAgeUnit
`func (o *AgeDTO) GetAgeUnit() AgeUnitType`
GetAgeUnit returns the AgeUnit field if non-nil, zero value otherwise.
### GetAgeUnitOk
`func (o *AgeDTO) GetAgeUnitOk() (*AgeUnitType, bool)`
GetAgeUnitOk returns a tuple with the AgeUnit field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAgeUnit
`func (o *AgeDTO) SetAgeUnit(v AgeUnitType)`
SetAgeUnit sets AgeUnit field to given value.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,13 @@
# AgeUnitType
## Enum
* `YEAR` (value: `"YEAR"`)
* `MONTH` (value: `"MONTH"`)
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiClientDataErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiClientDataErrorResponse
`func NewApiClientDataErrorResponse() *ApiClientDataErrorResponse`
NewApiClientDataErrorResponse instantiates a new ApiClientDataErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiClientDataErrorResponseWithDefaults
`func NewApiClientDataErrorResponseWithDefaults() *ApiClientDataErrorResponse`
NewApiClientDataErrorResponseWithDefaults instantiates a new ApiClientDataErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiClientDataErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiClientDataErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiClientDataErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiClientDataErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiClientDataErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiClientDataErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiClientDataErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiClientDataErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiClientDataErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiClientDataErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,77 @@
# ApiErrorDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Code** | **string** | Код ошибки. |
**Message** | Pointer to **string** | Описание ошибки. | [optional]
## Methods
### NewApiErrorDTO
`func NewApiErrorDTO(code string, ) *ApiErrorDTO`
NewApiErrorDTO instantiates a new ApiErrorDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiErrorDTOWithDefaults
`func NewApiErrorDTOWithDefaults() *ApiErrorDTO`
NewApiErrorDTOWithDefaults instantiates a new ApiErrorDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetCode
`func (o *ApiErrorDTO) GetCode() string`
GetCode returns the Code field if non-nil, zero value otherwise.
### GetCodeOk
`func (o *ApiErrorDTO) GetCodeOk() (*string, bool)`
GetCodeOk returns a tuple with the Code field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCode
`func (o *ApiErrorDTO) SetCode(v string)`
SetCode sets Code field to given value.
### GetMessage
`func (o *ApiErrorDTO) GetMessage() string`
GetMessage returns the Message field if non-nil, zero value otherwise.
### GetMessageOk
`func (o *ApiErrorDTO) GetMessageOk() (*string, bool)`
GetMessageOk returns a tuple with the Message field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetMessage
`func (o *ApiErrorDTO) SetMessage(v string)`
SetMessage sets Message field to given value.
### HasMessage
`func (o *ApiErrorDTO) HasMessage() bool`
HasMessage returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiErrorResponse
`func NewApiErrorResponse() *ApiErrorResponse`
NewApiErrorResponse instantiates a new ApiErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiErrorResponseWithDefaults
`func NewApiErrorResponseWithDefaults() *ApiErrorResponse`
NewApiErrorResponseWithDefaults instantiates a new ApiErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiForbiddenErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiForbiddenErrorResponse
`func NewApiForbiddenErrorResponse() *ApiForbiddenErrorResponse`
NewApiForbiddenErrorResponse instantiates a new ApiForbiddenErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiForbiddenErrorResponseWithDefaults
`func NewApiForbiddenErrorResponseWithDefaults() *ApiForbiddenErrorResponse`
NewApiForbiddenErrorResponseWithDefaults instantiates a new ApiForbiddenErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiForbiddenErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiForbiddenErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiForbiddenErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiForbiddenErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiForbiddenErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiForbiddenErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiForbiddenErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiForbiddenErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiForbiddenErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiForbiddenErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,72 @@
# ApiKeyDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** | Название токена. |
**AuthScopes** | [**[]ApiKeyScopeType**](ApiKeyScopeType.md) | Доступы к методам по Api-Key-токену. |
## Methods
### NewApiKeyDTO
`func NewApiKeyDTO(name string, authScopes []ApiKeyScopeType, ) *ApiKeyDTO`
NewApiKeyDTO instantiates a new ApiKeyDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiKeyDTOWithDefaults
`func NewApiKeyDTOWithDefaults() *ApiKeyDTO`
NewApiKeyDTOWithDefaults instantiates a new ApiKeyDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetName
`func (o *ApiKeyDTO) GetName() string`
GetName returns the Name field if non-nil, zero value otherwise.
### GetNameOk
`func (o *ApiKeyDTO) GetNameOk() (*string, bool)`
GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetName
`func (o *ApiKeyDTO) SetName(v string)`
SetName sets Name field to given value.
### GetAuthScopes
`func (o *ApiKeyDTO) GetAuthScopes() []ApiKeyScopeType`
GetAuthScopes returns the AuthScopes field if non-nil, zero value otherwise.
### GetAuthScopesOk
`func (o *ApiKeyDTO) GetAuthScopesOk() (*[]ApiKeyScopeType, bool)`
GetAuthScopesOk returns a tuple with the AuthScopes field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAuthScopes
`func (o *ApiKeyDTO) SetAuthScopes(v []ApiKeyScopeType)`
SetAuthScopes sets AuthScopes field to given value.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,37 @@
# ApiKeyScopeType
## Enum
* `ALL_METHODS` (value: `"ALL_METHODS"`)
* `ALL_METHODS_READ_ONLY` (value: `"ALL_METHODS_READ_ONLY"`)
* `INVENTORY_AND_ORDER_PROCESSING` (value: `"INVENTORY_AND_ORDER_PROCESSING"`)
* `INVENTORY_AND_ORDER_PROCESSING_READ_ONLY` (value: `"INVENTORY_AND_ORDER_PROCESSING_READ_ONLY"`)
* `PRICING` (value: `"PRICING"`)
* `PRICING_READ_ONLY` (value: `"PRICING_READ_ONLY"`)
* `OFFERS_AND_CARDS_MANAGEMENT` (value: `"OFFERS_AND_CARDS_MANAGEMENT"`)
* `OFFERS_AND_CARDS_MANAGEMENT_READ_ONLY` (value: `"OFFERS_AND_CARDS_MANAGEMENT_READ_ONLY"`)
* `PROMOTION` (value: `"PROMOTION"`)
* `PROMOTION_READ_ONLY` (value: `"PROMOTION_READ_ONLY"`)
* `FINANCE_AND_ACCOUNTING` (value: `"FINANCE_AND_ACCOUNTING"`)
* `COMMUNICATION` (value: `"COMMUNICATION"`)
* `SETTINGS_MANAGEMENT` (value: `"SETTINGS_MANAGEMENT"`)
* `SUPPLIES_MANAGEMENT_READ_ONLY` (value: `"SUPPLIES_MANAGEMENT_READ_ONLY"`)
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiLimitErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiLimitErrorResponse
`func NewApiLimitErrorResponse() *ApiLimitErrorResponse`
NewApiLimitErrorResponse instantiates a new ApiLimitErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiLimitErrorResponseWithDefaults
`func NewApiLimitErrorResponseWithDefaults() *ApiLimitErrorResponse`
NewApiLimitErrorResponseWithDefaults instantiates a new ApiLimitErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiLimitErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiLimitErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiLimitErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiLimitErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiLimitErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiLimitErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiLimitErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiLimitErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiLimitErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiLimitErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiLockedErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiLockedErrorResponse
`func NewApiLockedErrorResponse() *ApiLockedErrorResponse`
NewApiLockedErrorResponse instantiates a new ApiLockedErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiLockedErrorResponseWithDefaults
`func NewApiLockedErrorResponseWithDefaults() *ApiLockedErrorResponse`
NewApiLockedErrorResponseWithDefaults instantiates a new ApiLockedErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiLockedErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiLockedErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiLockedErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiLockedErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiLockedErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiLockedErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiLockedErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiLockedErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiLockedErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiLockedErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiNotFoundErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiNotFoundErrorResponse
`func NewApiNotFoundErrorResponse() *ApiNotFoundErrorResponse`
NewApiNotFoundErrorResponse instantiates a new ApiNotFoundErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiNotFoundErrorResponseWithDefaults
`func NewApiNotFoundErrorResponseWithDefaults() *ApiNotFoundErrorResponse`
NewApiNotFoundErrorResponseWithDefaults instantiates a new ApiNotFoundErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiNotFoundErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiNotFoundErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiNotFoundErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiNotFoundErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiNotFoundErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiNotFoundErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiNotFoundErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiNotFoundErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiNotFoundErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiNotFoundErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,56 @@
# ApiResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
## Methods
### NewApiResponse
`func NewApiResponse() *ApiResponse`
NewApiResponse instantiates a new ApiResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiResponseWithDefaults
`func NewApiResponseWithDefaults() *ApiResponse`
NewApiResponseWithDefaults instantiates a new ApiResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,13 @@
# ApiResponseStatusType
## Enum
* `OK` (value: `"OK"`)
* `ERROR` (value: `"ERROR"`)
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiServerErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiServerErrorResponse
`func NewApiServerErrorResponse() *ApiServerErrorResponse`
NewApiServerErrorResponse instantiates a new ApiServerErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiServerErrorResponseWithDefaults
`func NewApiServerErrorResponseWithDefaults() *ApiServerErrorResponse`
NewApiServerErrorResponseWithDefaults instantiates a new ApiServerErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiServerErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiServerErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiServerErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiServerErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiServerErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiServerErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiServerErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiServerErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiServerErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiServerErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,92 @@
# ApiUnauthorizedErrorResponse
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Status** | Pointer to [**ApiResponseStatusType**](ApiResponseStatusType.md) | | [optional]
**Errors** | Pointer to [**[]ApiErrorDTO**](ApiErrorDTO.md) | Список ошибок. | [optional]
## Methods
### NewApiUnauthorizedErrorResponse
`func NewApiUnauthorizedErrorResponse() *ApiUnauthorizedErrorResponse`
NewApiUnauthorizedErrorResponse instantiates a new ApiUnauthorizedErrorResponse object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewApiUnauthorizedErrorResponseWithDefaults
`func NewApiUnauthorizedErrorResponseWithDefaults() *ApiUnauthorizedErrorResponse`
NewApiUnauthorizedErrorResponseWithDefaults instantiates a new ApiUnauthorizedErrorResponse object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetStatus
`func (o *ApiUnauthorizedErrorResponse) GetStatus() ApiResponseStatusType`
GetStatus returns the Status field if non-nil, zero value otherwise.
### GetStatusOk
`func (o *ApiUnauthorizedErrorResponse) GetStatusOk() (*ApiResponseStatusType, bool)`
GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetStatus
`func (o *ApiUnauthorizedErrorResponse) SetStatus(v ApiResponseStatusType)`
SetStatus sets Status field to given value.
### HasStatus
`func (o *ApiUnauthorizedErrorResponse) HasStatus() bool`
HasStatus returns a boolean if a field has been set.
### GetErrors
`func (o *ApiUnauthorizedErrorResponse) GetErrors() []ApiErrorDTO`
GetErrors returns the Errors field if non-nil, zero value otherwise.
### GetErrorsOk
`func (o *ApiUnauthorizedErrorResponse) GetErrorsOk() (*[]ApiErrorDTO, bool)`
GetErrorsOk returns a tuple with the Errors field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetErrors
`func (o *ApiUnauthorizedErrorResponse) SetErrors(v []ApiErrorDTO)`
SetErrors sets Errors field to given value.
### HasErrors
`func (o *ApiUnauthorizedErrorResponse) HasErrors() bool`
HasErrors returns a boolean if a field has been set.
### SetErrorsNil
`func (o *ApiUnauthorizedErrorResponse) SetErrorsNil(b bool)`
SetErrorsNil sets the value for Errors to be an explicit nil
### UnsetErrors
`func (o *ApiUnauthorizedErrorResponse) UnsetErrors()`
UnsetErrors ensures that no value is present for Errors, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,70 @@
# \AuthAPI
All URIs are relative to *https://api.partner.market.yandex.ru*
Method | HTTP request | Description
------------- | ------------- | -------------
[**GetAuthTokenInfo**](AuthAPI.md#GetAuthTokenInfo) | **Post** /auth/token | Получение информации об авторизационном токене
## GetAuthTokenInfo
> GetTokenInfoResponse GetAuthTokenInfo(ctx).Execute()
Получение информации об авторизационном токене
### Example
```go
package main
import (
"context"
"fmt"
"os"
openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)
func main() {
configuration := openapiclient.NewConfiguration()
apiClient := openapiclient.NewAPIClient(configuration)
resp, r, err := apiClient.AuthAPI.GetAuthTokenInfo(context.Background()).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `AuthAPI.GetAuthTokenInfo``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
// response from `GetAuthTokenInfo`: GetTokenInfoResponse
fmt.Fprintf(os.Stdout, "Response from `AuthAPI.GetAuthTokenInfo`: %v\n", resp)
}
```
### Path Parameters
This endpoint does not need any parameter.
### Other Parameters
Other parameters are passed through a pointer to a apiGetAuthTokenInfoRequest struct via the builder pattern
### Return type
[**GetTokenInfoResponse**](GetTokenInfoResponse.md)
### Authorization
[ApiKey](../README.md#ApiKey), [OAuth](../README.md#OAuth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)

View File

@@ -0,0 +1,103 @@
# BaseCampaignOfferDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**OfferId** | **string** | Ваш :no-translate[SKU] — идентификатор товара в вашей системе. Правила использования :no-translate[SKU]: * У каждого товара :no-translate[SKU] должен быть свой. * Уже заданный :no-translate[SKU] нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге. :no-translate[SKU] товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku). [Что такое :no-translate[SKU] и как его назначать](https://yandex.ru/support/marketplace/assortment/add/index.html#fields) |
**Quantum** | Pointer to [**QuantumDTO**](QuantumDTO.md) | | [optional]
**Available** | Pointer to **bool** | {% note warning \&quot;Вместо него используйте методы скрытия товаров с витрины\&quot; %} * [GET campaigns/{campaignId}/hidden-offers](../../reference/assortment/getHiddenOffers.md) — просмотр скрытых товаров; * [POST campaigns/{campaignId}/hidden-offers](../../reference/assortment/addHiddenOffers.md) — скрытие товаров; * [POST campaigns/{campaignId}/hidden-offers/delete](../../reference/assortment/deleteHiddenOffers.md) — возобновление показа. {% endnote %} Есть ли товар в продаже. | [optional]
## Methods
### NewBaseCampaignOfferDTO
`func NewBaseCampaignOfferDTO(offerId string, ) *BaseCampaignOfferDTO`
NewBaseCampaignOfferDTO instantiates a new BaseCampaignOfferDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewBaseCampaignOfferDTOWithDefaults
`func NewBaseCampaignOfferDTOWithDefaults() *BaseCampaignOfferDTO`
NewBaseCampaignOfferDTOWithDefaults instantiates a new BaseCampaignOfferDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetOfferId
`func (o *BaseCampaignOfferDTO) GetOfferId() string`
GetOfferId returns the OfferId field if non-nil, zero value otherwise.
### GetOfferIdOk
`func (o *BaseCampaignOfferDTO) GetOfferIdOk() (*string, bool)`
GetOfferIdOk returns a tuple with the OfferId field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetOfferId
`func (o *BaseCampaignOfferDTO) SetOfferId(v string)`
SetOfferId sets OfferId field to given value.
### GetQuantum
`func (o *BaseCampaignOfferDTO) GetQuantum() QuantumDTO`
GetQuantum returns the Quantum field if non-nil, zero value otherwise.
### GetQuantumOk
`func (o *BaseCampaignOfferDTO) GetQuantumOk() (*QuantumDTO, bool)`
GetQuantumOk returns a tuple with the Quantum field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetQuantum
`func (o *BaseCampaignOfferDTO) SetQuantum(v QuantumDTO)`
SetQuantum sets Quantum field to given value.
### HasQuantum
`func (o *BaseCampaignOfferDTO) HasQuantum() bool`
HasQuantum returns a boolean if a field has been set.
### GetAvailable
`func (o *BaseCampaignOfferDTO) GetAvailable() bool`
GetAvailable returns the Available field if non-nil, zero value otherwise.
### GetAvailableOk
`func (o *BaseCampaignOfferDTO) GetAvailableOk() (*bool, bool)`
GetAvailableOk returns a tuple with the Available field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAvailable
`func (o *BaseCampaignOfferDTO) SetAvailable(v bool)`
SetAvailable sets Available field to given value.
### HasAvailable
`func (o *BaseCampaignOfferDTO) HasAvailable() bool`
HasAvailable returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@@ -0,0 +1,817 @@
# BaseOfferDTO
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**OfferId** | **string** | Ваш :no-translate[SKU] — идентификатор товара в вашей системе. Правила использования :no-translate[SKU]: * У каждого товара :no-translate[SKU] должен быть свой. * Уже заданный :no-translate[SKU] нельзя освободить и использовать заново для другого товара. Каждый товар должен получать новый идентификатор, до того никогда не использовавшийся в вашем каталоге. :no-translate[SKU] товара можно изменить в кабинете продавца на Маркете. О том, как это сделать, читайте [в Справке Маркета для продавцов](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku). [Что такое :no-translate[SKU] и как его назначать](https://yandex.ru/support/marketplace/assortment/add/index.html#fields) |
**Name** | Pointer to **string** | Составляйте название по схеме: тип + бренд или производитель + модель + особенности, если есть (например, цвет, размер или вес) и количество в упаковке. Не включайте в название условия продажи (например, «скидка», «бесплатная доставка» и т. д.), эмоциональные характеристики («хит», «супер» и т. д.). Не пишите слова большими буквами — кроме устоявшихся названий брендов и моделей. Оптимальная длина — 5060 символов. [Рекомендации и правила](https://yandex.ru/support/marketplace/assortment/fields/title.html) | [optional]
**MarketCategoryId** | Pointer to **int64** | Идентификатор категории на Маркете, к которой вы относите свой товар. {% note warning \&quot;Всегда указывайте, когда передаете &#x60;parameterValues&#x60;\&quot; %} Если при изменении характеристик передать &#x60;parameterValues&#x60; и не указать &#x60;marketCategoryId&#x60;, характеристики обновятся, но в ответе придет предупреждение (параметр &#x60;warnings&#x60;). Если не передать их оба, будет использована информация из устаревших параметров &#x60;params&#x60; и &#x60;category&#x60;, а &#x60;marketCategoryId&#x60; будет определен автоматически. {% endnote %} При изменении категории убедитесь, что характеристики товара и их значения в параметре &#x60;parameterValues&#x60; вы передаете для новой категории. Список категорий Маркета можно получить с помощью запроса [POST categories/tree](../../reference/categories/getCategoriesTree.md). | [optional]
**Category** | Pointer to **string** | {% note warning \&quot;Вместо него используйте &#x60;marketCategoryId&#x60;.\&quot; %}   {% endnote %} Категория товара в вашем магазине. | [optional]
**Pictures** | Pointer to **[]string** | Ссылки на изображения товара. Изображение по первой ссылке считается основным, остальные дополнительными. **Требования к ссылкам** * Указывайте ссылку целиком, включая протокол http или https. * Русские буквы в URL можно. * Можно использовать прямые ссылки на изображения и на Яндекс Диск. Ссылки на Яндекс Диске нужно копировать с помощью функции **Поделиться**. Относительные ссылки и ссылки на другие облачные хранилища — не работают. ✅ &#x60;https://example-shop.ru/images/sku12345.jpg&#x60;&#x60;https://yadi.sk/i/NaBoRsimVOLov&#x60;&#x60;/images/sku12345.jpg&#x60;&#x60;https://www.dropbox.com/s/818f/tovar.jpg&#x60; Ссылки на изображение должны быть постоянными. Нельзя использовать динамические ссылки, меняющиеся от выгрузки к выгрузке. Если нужно заменить изображение, выложите новое изображение по новой ссылке, а ссылку на старое удалите. Если просто заменить изображение по старой ссылке, оно не обновится. [Требования к изображениям](https://yandex.ru/support/marketplace/assortment/fields/images.html) | [optional]
**Videos** | Pointer to **[]string** | Ссылки (URL) на видео товара. **Требования к ссылке** * Указывайте ссылку целиком, включая протокол http или https. * Русские буквы в URL можно. * Можно использовать прямые ссылки на видео и на Яндекс Диск. Ссылки на Яндекс Диске нужно копировать с помощью функции **Поделиться**. Относительные ссылки и ссылки на другие облачные хранилища — не работают. ✅ &#x60;https://example-shop.ru/video/sku12345.avi&#x60;&#x60;https://yadi.sk/i/NaBoRsimVOLov&#x60;&#x60;/video/sku12345.avi&#x60;&#x60;https://www.dropbox.com/s/818f/super-tovar.avi&#x60; Ссылки на видео должны быть постоянными. Нельзя использовать динамические ссылки, меняющиеся от выгрузки к выгрузке. Если нужно заменить видео, выложите новое видео по новой ссылке, а ссылку на старое удалите. Если просто заменить видео по старой ссылке, оно не обновится. [Требования к видео](https://yandex.ru/support/marketplace/assortment/fields/video.html) | [optional]
**Manuals** | Pointer to [**[]OfferManualDTO**](OfferManualDTO.md) | Список инструкций по использованию товара. | [optional]
**Vendor** | Pointer to **string** | Название бренда или производителя. Должно быть записано так, как его пишет сам бренд. | [optional]
**Barcodes** | Pointer to **[]string** | Указывайте в виде последовательности цифр. Подойдут коды :no-translate[EAN-13, EAN-8, UPC-A, UPC-E] или :no-translate[Code 128]. Для книг указывайте :no-translate[ISBN]. Для товаров [определенных категорий и торговых марок](https://yastatic.net/s3/doc-binary/src/support/market/ru/yandex-market-list-for-gtin.xlsx) штрихкод должен быть действительным кодом :no-translate[GTIN]. Обратите внимание: внутренние штрихкоды, начинающиеся на 2 или 02, и коды формата :no-translate[Code 128] не являются :no-translate[GTIN]. [Что такое :no-translate[GTIN]](:no-translate[*gtin]) | [optional]
**Description** | Pointer to **string** | Подробное описание товара: например, его преимущества и особенности. Не давайте в описании инструкций по установке и сборке. Не используйте слова «скидка», «распродажа», «дешевый», «подарок» (кроме подарочных категорий), «бесплатно», «акция», «специальная цена», «новинка», «new», «аналог», «заказ», «хит». Не указывайте никакой контактной информации и не давайте ссылок. Для форматирования текста можно использовать теги HTML: * \\&lt;h&gt;, \\&lt;h1&gt;, \\&lt;h2&gt; и так далее — для заголовков; * \\&lt;br&gt; и \\&lt;p&gt; — для переноса строки; * \\&lt;ol&gt; — для нумерованного списка; * \\&lt;ul&gt; — для маркированного списка; * \\&lt;li&gt; — для создания элементов списка (должен находиться внутри \\&lt;ol&gt; или \\&lt;ul&gt;); * \\&lt;div&gt; — поддерживается, но не влияет на отображение текста. Оптимальная длина — 400600 символов. [Рекомендации и правила](https://yandex.ru/support/marketplace/assortment/fields/description.html) | [optional]
**ManufacturerCountries** | Pointer to **[]string** | Страна, где был произведен товар. Записывайте названия стран так, как они записаны в [списке](https://yastatic.net/s3/doc-binary/src/support/market/ru/countries.xlsx). | [optional]
**WeightDimensions** | Pointer to [**OfferWeightDimensionsDTO**](OfferWeightDimensionsDTO.md) | | [optional]
**VendorCode** | Pointer to **string** | Артикул товара от производителя. | [optional]
**Tags** | Pointer to **[]string** | Метки товара, которые использует магазин. Покупателям теги не видны. По тегам можно группировать и фильтровать разные товары в каталоге — например, товары одной серии, коллекции или линейки. Максимальная длина тега — 20 символов. У одного товара может быть максимум 10 тегов. | [optional]
**ShelfLife** | Pointer to [**TimePeriodDTO**](TimePeriodDTO.md) | | [optional]
**LifeTime** | Pointer to [**TimePeriodDTO**](TimePeriodDTO.md) | | [optional]
**GuaranteePeriod** | Pointer to [**TimePeriodDTO**](TimePeriodDTO.md) | | [optional]
**CustomsCommodityCode** | Pointer to **string** | {% note warning \&quot;Вместо него используйте &#x60;commodityCodes&#x60; с типом &#x60;CUSTOMS_COMMODITY_CODE&#x60;.\&quot; %}   {% endnote %} Код товара в единой Товарной номенклатуре внешнеэкономической деятельности (ТН ВЭД) — 10 или 14 цифр без пробелов. Обязательно укажите, если он есть. | [optional]
**CommodityCodes** | Pointer to [**[]CommodityCodeDTO**](CommodityCodeDTO.md) | Товарные коды. | [optional]
**Certificates** | Pointer to **[]string** | Номера документов на товар: сертификата, декларации соответствия и т. п. Передавать можно только номера документов, сканы которого загружены в кабинете продавца по [инструкции](https://yandex.ru/support/marketplace/assortment/restrictions/certificates.html). | [optional]
**BoxCount** | Pointer to **int32** | Количество грузовых мест. Параметр используется, если товар представляет собой несколько коробок, упаковок и так далее. Например, кондиционер занимает два места — внешний и внутренний блоки в двух коробках. Для товаров, занимающих одно место, не передавайте этот параметр. | [optional]
**Condition** | Pointer to [**OfferConditionDTO**](OfferConditionDTO.md) | | [optional]
**Type** | Pointer to [**OfferType**](OfferType.md) | | [optional]
**Downloadable** | Pointer to **bool** | Признак цифрового товара. Укажите &#x60;true&#x60;, если товар доставляется по электронной почте. [Как работать с цифровыми товарами](../../step-by-step/digital.md) | [optional]
**Adult** | Pointer to **bool** | Параметр включает для товара пометку 18+. Устанавливайте ее только для товаров, которые относятся к удовлетворению сексуальных потребностей. | [optional]
**Age** | Pointer to [**AgeDTO**](AgeDTO.md) | | [optional]
**Params** | Pointer to [**[]OfferParamDTO**](OfferParamDTO.md) | {% note warning \&quot;При передаче характеристик используйте &#x60;parameterValues&#x60;.\&quot; %}   {% endnote %} Характеристики, которые есть только у товаров конкретной категории — например, диаметр колес велосипеда или материал подошвы обуви. | [optional]
## Methods
### NewBaseOfferDTO
`func NewBaseOfferDTO(offerId string, ) *BaseOfferDTO`
NewBaseOfferDTO instantiates a new BaseOfferDTO object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewBaseOfferDTOWithDefaults
`func NewBaseOfferDTOWithDefaults() *BaseOfferDTO`
NewBaseOfferDTOWithDefaults instantiates a new BaseOfferDTO object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetOfferId
`func (o *BaseOfferDTO) GetOfferId() string`
GetOfferId returns the OfferId field if non-nil, zero value otherwise.
### GetOfferIdOk
`func (o *BaseOfferDTO) GetOfferIdOk() (*string, bool)`
GetOfferIdOk returns a tuple with the OfferId field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetOfferId
`func (o *BaseOfferDTO) SetOfferId(v string)`
SetOfferId sets OfferId field to given value.
### GetName
`func (o *BaseOfferDTO) GetName() string`
GetName returns the Name field if non-nil, zero value otherwise.
### GetNameOk
`func (o *BaseOfferDTO) GetNameOk() (*string, bool)`
GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetName
`func (o *BaseOfferDTO) SetName(v string)`
SetName sets Name field to given value.
### HasName
`func (o *BaseOfferDTO) HasName() bool`
HasName returns a boolean if a field has been set.
### GetMarketCategoryId
`func (o *BaseOfferDTO) GetMarketCategoryId() int64`
GetMarketCategoryId returns the MarketCategoryId field if non-nil, zero value otherwise.
### GetMarketCategoryIdOk
`func (o *BaseOfferDTO) GetMarketCategoryIdOk() (*int64, bool)`
GetMarketCategoryIdOk returns a tuple with the MarketCategoryId field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetMarketCategoryId
`func (o *BaseOfferDTO) SetMarketCategoryId(v int64)`
SetMarketCategoryId sets MarketCategoryId field to given value.
### HasMarketCategoryId
`func (o *BaseOfferDTO) HasMarketCategoryId() bool`
HasMarketCategoryId returns a boolean if a field has been set.
### GetCategory
`func (o *BaseOfferDTO) GetCategory() string`
GetCategory returns the Category field if non-nil, zero value otherwise.
### GetCategoryOk
`func (o *BaseOfferDTO) GetCategoryOk() (*string, bool)`
GetCategoryOk returns a tuple with the Category field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCategory
`func (o *BaseOfferDTO) SetCategory(v string)`
SetCategory sets Category field to given value.
### HasCategory
`func (o *BaseOfferDTO) HasCategory() bool`
HasCategory returns a boolean if a field has been set.
### GetPictures
`func (o *BaseOfferDTO) GetPictures() []string`
GetPictures returns the Pictures field if non-nil, zero value otherwise.
### GetPicturesOk
`func (o *BaseOfferDTO) GetPicturesOk() (*[]string, bool)`
GetPicturesOk returns a tuple with the Pictures field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetPictures
`func (o *BaseOfferDTO) SetPictures(v []string)`
SetPictures sets Pictures field to given value.
### HasPictures
`func (o *BaseOfferDTO) HasPictures() bool`
HasPictures returns a boolean if a field has been set.
### SetPicturesNil
`func (o *BaseOfferDTO) SetPicturesNil(b bool)`
SetPicturesNil sets the value for Pictures to be an explicit nil
### UnsetPictures
`func (o *BaseOfferDTO) UnsetPictures()`
UnsetPictures ensures that no value is present for Pictures, not even an explicit nil
### GetVideos
`func (o *BaseOfferDTO) GetVideos() []string`
GetVideos returns the Videos field if non-nil, zero value otherwise.
### GetVideosOk
`func (o *BaseOfferDTO) GetVideosOk() (*[]string, bool)`
GetVideosOk returns a tuple with the Videos field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetVideos
`func (o *BaseOfferDTO) SetVideos(v []string)`
SetVideos sets Videos field to given value.
### HasVideos
`func (o *BaseOfferDTO) HasVideos() bool`
HasVideos returns a boolean if a field has been set.
### SetVideosNil
`func (o *BaseOfferDTO) SetVideosNil(b bool)`
SetVideosNil sets the value for Videos to be an explicit nil
### UnsetVideos
`func (o *BaseOfferDTO) UnsetVideos()`
UnsetVideos ensures that no value is present for Videos, not even an explicit nil
### GetManuals
`func (o *BaseOfferDTO) GetManuals() []OfferManualDTO`
GetManuals returns the Manuals field if non-nil, zero value otherwise.
### GetManualsOk
`func (o *BaseOfferDTO) GetManualsOk() (*[]OfferManualDTO, bool)`
GetManualsOk returns a tuple with the Manuals field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetManuals
`func (o *BaseOfferDTO) SetManuals(v []OfferManualDTO)`
SetManuals sets Manuals field to given value.
### HasManuals
`func (o *BaseOfferDTO) HasManuals() bool`
HasManuals returns a boolean if a field has been set.
### SetManualsNil
`func (o *BaseOfferDTO) SetManualsNil(b bool)`
SetManualsNil sets the value for Manuals to be an explicit nil
### UnsetManuals
`func (o *BaseOfferDTO) UnsetManuals()`
UnsetManuals ensures that no value is present for Manuals, not even an explicit nil
### GetVendor
`func (o *BaseOfferDTO) GetVendor() string`
GetVendor returns the Vendor field if non-nil, zero value otherwise.
### GetVendorOk
`func (o *BaseOfferDTO) GetVendorOk() (*string, bool)`
GetVendorOk returns a tuple with the Vendor field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetVendor
`func (o *BaseOfferDTO) SetVendor(v string)`
SetVendor sets Vendor field to given value.
### HasVendor
`func (o *BaseOfferDTO) HasVendor() bool`
HasVendor returns a boolean if a field has been set.
### GetBarcodes
`func (o *BaseOfferDTO) GetBarcodes() []string`
GetBarcodes returns the Barcodes field if non-nil, zero value otherwise.
### GetBarcodesOk
`func (o *BaseOfferDTO) GetBarcodesOk() (*[]string, bool)`
GetBarcodesOk returns a tuple with the Barcodes field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetBarcodes
`func (o *BaseOfferDTO) SetBarcodes(v []string)`
SetBarcodes sets Barcodes field to given value.
### HasBarcodes
`func (o *BaseOfferDTO) HasBarcodes() bool`
HasBarcodes returns a boolean if a field has been set.
### SetBarcodesNil
`func (o *BaseOfferDTO) SetBarcodesNil(b bool)`
SetBarcodesNil sets the value for Barcodes to be an explicit nil
### UnsetBarcodes
`func (o *BaseOfferDTO) UnsetBarcodes()`
UnsetBarcodes ensures that no value is present for Barcodes, not even an explicit nil
### GetDescription
`func (o *BaseOfferDTO) GetDescription() string`
GetDescription returns the Description field if non-nil, zero value otherwise.
### GetDescriptionOk
`func (o *BaseOfferDTO) GetDescriptionOk() (*string, bool)`
GetDescriptionOk returns a tuple with the Description field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetDescription
`func (o *BaseOfferDTO) SetDescription(v string)`
SetDescription sets Description field to given value.
### HasDescription
`func (o *BaseOfferDTO) HasDescription() bool`
HasDescription returns a boolean if a field has been set.
### GetManufacturerCountries
`func (o *BaseOfferDTO) GetManufacturerCountries() []string`
GetManufacturerCountries returns the ManufacturerCountries field if non-nil, zero value otherwise.
### GetManufacturerCountriesOk
`func (o *BaseOfferDTO) GetManufacturerCountriesOk() (*[]string, bool)`
GetManufacturerCountriesOk returns a tuple with the ManufacturerCountries field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetManufacturerCountries
`func (o *BaseOfferDTO) SetManufacturerCountries(v []string)`
SetManufacturerCountries sets ManufacturerCountries field to given value.
### HasManufacturerCountries
`func (o *BaseOfferDTO) HasManufacturerCountries() bool`
HasManufacturerCountries returns a boolean if a field has been set.
### SetManufacturerCountriesNil
`func (o *BaseOfferDTO) SetManufacturerCountriesNil(b bool)`
SetManufacturerCountriesNil sets the value for ManufacturerCountries to be an explicit nil
### UnsetManufacturerCountries
`func (o *BaseOfferDTO) UnsetManufacturerCountries()`
UnsetManufacturerCountries ensures that no value is present for ManufacturerCountries, not even an explicit nil
### GetWeightDimensions
`func (o *BaseOfferDTO) GetWeightDimensions() OfferWeightDimensionsDTO`
GetWeightDimensions returns the WeightDimensions field if non-nil, zero value otherwise.
### GetWeightDimensionsOk
`func (o *BaseOfferDTO) GetWeightDimensionsOk() (*OfferWeightDimensionsDTO, bool)`
GetWeightDimensionsOk returns a tuple with the WeightDimensions field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetWeightDimensions
`func (o *BaseOfferDTO) SetWeightDimensions(v OfferWeightDimensionsDTO)`
SetWeightDimensions sets WeightDimensions field to given value.
### HasWeightDimensions
`func (o *BaseOfferDTO) HasWeightDimensions() bool`
HasWeightDimensions returns a boolean if a field has been set.
### GetVendorCode
`func (o *BaseOfferDTO) GetVendorCode() string`
GetVendorCode returns the VendorCode field if non-nil, zero value otherwise.
### GetVendorCodeOk
`func (o *BaseOfferDTO) GetVendorCodeOk() (*string, bool)`
GetVendorCodeOk returns a tuple with the VendorCode field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetVendorCode
`func (o *BaseOfferDTO) SetVendorCode(v string)`
SetVendorCode sets VendorCode field to given value.
### HasVendorCode
`func (o *BaseOfferDTO) HasVendorCode() bool`
HasVendorCode returns a boolean if a field has been set.
### GetTags
`func (o *BaseOfferDTO) GetTags() []string`
GetTags returns the Tags field if non-nil, zero value otherwise.
### GetTagsOk
`func (o *BaseOfferDTO) GetTagsOk() (*[]string, bool)`
GetTagsOk returns a tuple with the Tags field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetTags
`func (o *BaseOfferDTO) SetTags(v []string)`
SetTags sets Tags field to given value.
### HasTags
`func (o *BaseOfferDTO) HasTags() bool`
HasTags returns a boolean if a field has been set.
### SetTagsNil
`func (o *BaseOfferDTO) SetTagsNil(b bool)`
SetTagsNil sets the value for Tags to be an explicit nil
### UnsetTags
`func (o *BaseOfferDTO) UnsetTags()`
UnsetTags ensures that no value is present for Tags, not even an explicit nil
### GetShelfLife
`func (o *BaseOfferDTO) GetShelfLife() TimePeriodDTO`
GetShelfLife returns the ShelfLife field if non-nil, zero value otherwise.
### GetShelfLifeOk
`func (o *BaseOfferDTO) GetShelfLifeOk() (*TimePeriodDTO, bool)`
GetShelfLifeOk returns a tuple with the ShelfLife field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetShelfLife
`func (o *BaseOfferDTO) SetShelfLife(v TimePeriodDTO)`
SetShelfLife sets ShelfLife field to given value.
### HasShelfLife
`func (o *BaseOfferDTO) HasShelfLife() bool`
HasShelfLife returns a boolean if a field has been set.
### GetLifeTime
`func (o *BaseOfferDTO) GetLifeTime() TimePeriodDTO`
GetLifeTime returns the LifeTime field if non-nil, zero value otherwise.
### GetLifeTimeOk
`func (o *BaseOfferDTO) GetLifeTimeOk() (*TimePeriodDTO, bool)`
GetLifeTimeOk returns a tuple with the LifeTime field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetLifeTime
`func (o *BaseOfferDTO) SetLifeTime(v TimePeriodDTO)`
SetLifeTime sets LifeTime field to given value.
### HasLifeTime
`func (o *BaseOfferDTO) HasLifeTime() bool`
HasLifeTime returns a boolean if a field has been set.
### GetGuaranteePeriod
`func (o *BaseOfferDTO) GetGuaranteePeriod() TimePeriodDTO`
GetGuaranteePeriod returns the GuaranteePeriod field if non-nil, zero value otherwise.
### GetGuaranteePeriodOk
`func (o *BaseOfferDTO) GetGuaranteePeriodOk() (*TimePeriodDTO, bool)`
GetGuaranteePeriodOk returns a tuple with the GuaranteePeriod field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetGuaranteePeriod
`func (o *BaseOfferDTO) SetGuaranteePeriod(v TimePeriodDTO)`
SetGuaranteePeriod sets GuaranteePeriod field to given value.
### HasGuaranteePeriod
`func (o *BaseOfferDTO) HasGuaranteePeriod() bool`
HasGuaranteePeriod returns a boolean if a field has been set.
### GetCustomsCommodityCode
`func (o *BaseOfferDTO) GetCustomsCommodityCode() string`
GetCustomsCommodityCode returns the CustomsCommodityCode field if non-nil, zero value otherwise.
### GetCustomsCommodityCodeOk
`func (o *BaseOfferDTO) GetCustomsCommodityCodeOk() (*string, bool)`
GetCustomsCommodityCodeOk returns a tuple with the CustomsCommodityCode field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCustomsCommodityCode
`func (o *BaseOfferDTO) SetCustomsCommodityCode(v string)`
SetCustomsCommodityCode sets CustomsCommodityCode field to given value.
### HasCustomsCommodityCode
`func (o *BaseOfferDTO) HasCustomsCommodityCode() bool`
HasCustomsCommodityCode returns a boolean if a field has been set.
### GetCommodityCodes
`func (o *BaseOfferDTO) GetCommodityCodes() []CommodityCodeDTO`
GetCommodityCodes returns the CommodityCodes field if non-nil, zero value otherwise.
### GetCommodityCodesOk
`func (o *BaseOfferDTO) GetCommodityCodesOk() (*[]CommodityCodeDTO, bool)`
GetCommodityCodesOk returns a tuple with the CommodityCodes field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCommodityCodes
`func (o *BaseOfferDTO) SetCommodityCodes(v []CommodityCodeDTO)`
SetCommodityCodes sets CommodityCodes field to given value.
### HasCommodityCodes
`func (o *BaseOfferDTO) HasCommodityCodes() bool`
HasCommodityCodes returns a boolean if a field has been set.
### SetCommodityCodesNil
`func (o *BaseOfferDTO) SetCommodityCodesNil(b bool)`
SetCommodityCodesNil sets the value for CommodityCodes to be an explicit nil
### UnsetCommodityCodes
`func (o *BaseOfferDTO) UnsetCommodityCodes()`
UnsetCommodityCodes ensures that no value is present for CommodityCodes, not even an explicit nil
### GetCertificates
`func (o *BaseOfferDTO) GetCertificates() []string`
GetCertificates returns the Certificates field if non-nil, zero value otherwise.
### GetCertificatesOk
`func (o *BaseOfferDTO) GetCertificatesOk() (*[]string, bool)`
GetCertificatesOk returns a tuple with the Certificates field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCertificates
`func (o *BaseOfferDTO) SetCertificates(v []string)`
SetCertificates sets Certificates field to given value.
### HasCertificates
`func (o *BaseOfferDTO) HasCertificates() bool`
HasCertificates returns a boolean if a field has been set.
### SetCertificatesNil
`func (o *BaseOfferDTO) SetCertificatesNil(b bool)`
SetCertificatesNil sets the value for Certificates to be an explicit nil
### UnsetCertificates
`func (o *BaseOfferDTO) UnsetCertificates()`
UnsetCertificates ensures that no value is present for Certificates, not even an explicit nil
### GetBoxCount
`func (o *BaseOfferDTO) GetBoxCount() int32`
GetBoxCount returns the BoxCount field if non-nil, zero value otherwise.
### GetBoxCountOk
`func (o *BaseOfferDTO) GetBoxCountOk() (*int32, bool)`
GetBoxCountOk returns a tuple with the BoxCount field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetBoxCount
`func (o *BaseOfferDTO) SetBoxCount(v int32)`
SetBoxCount sets BoxCount field to given value.
### HasBoxCount
`func (o *BaseOfferDTO) HasBoxCount() bool`
HasBoxCount returns a boolean if a field has been set.
### GetCondition
`func (o *BaseOfferDTO) GetCondition() OfferConditionDTO`
GetCondition returns the Condition field if non-nil, zero value otherwise.
### GetConditionOk
`func (o *BaseOfferDTO) GetConditionOk() (*OfferConditionDTO, bool)`
GetConditionOk returns a tuple with the Condition field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCondition
`func (o *BaseOfferDTO) SetCondition(v OfferConditionDTO)`
SetCondition sets Condition field to given value.
### HasCondition
`func (o *BaseOfferDTO) HasCondition() bool`
HasCondition returns a boolean if a field has been set.
### GetType
`func (o *BaseOfferDTO) GetType() OfferType`
GetType returns the Type field if non-nil, zero value otherwise.
### GetTypeOk
`func (o *BaseOfferDTO) GetTypeOk() (*OfferType, bool)`
GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetType
`func (o *BaseOfferDTO) SetType(v OfferType)`
SetType sets Type field to given value.
### HasType
`func (o *BaseOfferDTO) HasType() bool`
HasType returns a boolean if a field has been set.
### GetDownloadable
`func (o *BaseOfferDTO) GetDownloadable() bool`
GetDownloadable returns the Downloadable field if non-nil, zero value otherwise.
### GetDownloadableOk
`func (o *BaseOfferDTO) GetDownloadableOk() (*bool, bool)`
GetDownloadableOk returns a tuple with the Downloadable field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetDownloadable
`func (o *BaseOfferDTO) SetDownloadable(v bool)`
SetDownloadable sets Downloadable field to given value.
### HasDownloadable
`func (o *BaseOfferDTO) HasDownloadable() bool`
HasDownloadable returns a boolean if a field has been set.
### GetAdult
`func (o *BaseOfferDTO) GetAdult() bool`
GetAdult returns the Adult field if non-nil, zero value otherwise.
### GetAdultOk
`func (o *BaseOfferDTO) GetAdultOk() (*bool, bool)`
GetAdultOk returns a tuple with the Adult field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAdult
`func (o *BaseOfferDTO) SetAdult(v bool)`
SetAdult sets Adult field to given value.
### HasAdult
`func (o *BaseOfferDTO) HasAdult() bool`
HasAdult returns a boolean if a field has been set.
### GetAge
`func (o *BaseOfferDTO) GetAge() AgeDTO`
GetAge returns the Age field if non-nil, zero value otherwise.
### GetAgeOk
`func (o *BaseOfferDTO) GetAgeOk() (*AgeDTO, bool)`
GetAgeOk returns a tuple with the Age field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetAge
`func (o *BaseOfferDTO) SetAge(v AgeDTO)`
SetAge sets Age field to given value.
### HasAge
`func (o *BaseOfferDTO) HasAge() bool`
HasAge returns a boolean if a field has been set.
### GetParams
`func (o *BaseOfferDTO) GetParams() []OfferParamDTO`
GetParams returns the Params field if non-nil, zero value otherwise.
### GetParamsOk
`func (o *BaseOfferDTO) GetParamsOk() (*[]OfferParamDTO, bool)`
GetParamsOk returns a tuple with the Params field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetParams
`func (o *BaseOfferDTO) SetParams(v []OfferParamDTO)`
SetParams sets Params field to given value.
### HasParams
`func (o *BaseOfferDTO) HasParams() bool`
HasParams returns a boolean if a field has been set.
### SetParamsNil
`func (o *BaseOfferDTO) SetParamsNil(b bool)`
SetParamsNil sets the value for Params to be an explicit nil
### UnsetParams
`func (o *BaseOfferDTO) UnsetParams()`
UnsetParams ensures that no value is present for Params, not even an explicit nil
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

Some files were not shown because too many files have changed in this diff Show More