diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d89eb13 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine:latest +WORKDIR /app +COPY main . +COPY ".env" . +RUN apk add gcompat +CMD ["./main"] \ No newline at end of file diff --git a/api/generated/v1/marketplace/marketplace.pb.go b/api/generated/v1/marketplace/marketplace.pb.go index 8e19089..d0f6a3a 100644 --- a/api/generated/v1/marketplace/marketplace.pb.go +++ b/api/generated/v1/marketplace/marketplace.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6 -// protoc v6.31.0 +// protoc v6.31.1 // source: marketplace/marketplace.proto package marketplace diff --git a/api/generated/v1/marketplace/marketplace_grpc.pb.go b/api/generated/v1/marketplace/marketplace_grpc.pb.go index 1c6161d..e892757 100644 --- a/api/generated/v1/marketplace/marketplace_grpc.pb.go +++ b/api/generated/v1/marketplace/marketplace_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v6.31.0 +// - protoc v6.31.1 // source: marketplace/marketplace.proto package marketplace diff --git a/api/generated/v1/ozon/products/products.pb.go b/api/generated/v1/ozon/products/products.pb.go index 502acd5..8ce9288 100644 --- a/api/generated/v1/ozon/products/products.pb.go +++ b/api/generated/v1/ozon/products/products.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6 -// protoc v6.31.0 +// protoc v6.31.1 // source: ozon/products.proto package products @@ -110,6 +110,94 @@ func (x *GetListOfProductsResponse) GetProducts() []*Product { return nil } +type GetProductPriceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + MarketplaceId int64 `protobuf:"varint,1,opt,name=marketplace_id,json=marketplaceId,proto3" json:"marketplace_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetProductPriceRequest) Reset() { + *x = GetProductPriceRequest{} + mi := &file_ozon_products_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetProductPriceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProductPriceRequest) ProtoMessage() {} + +func (x *GetProductPriceRequest) ProtoReflect() protoreflect.Message { + mi := &file_ozon_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 GetProductPriceRequest.ProtoReflect.Descriptor instead. +func (*GetProductPriceRequest) Descriptor() ([]byte, []int) { + return file_ozon_products_proto_rawDescGZIP(), []int{2} +} + +func (x *GetProductPriceRequest) GetMarketplaceId() int64 { + if x != nil { + return x.MarketplaceId + } + return 0 +} + +type GetProductPriceResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ProductPrices []*ProductPrice `protobuf:"bytes,1,rep,name=product_prices,json=productPrices,proto3" json:"product_prices,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetProductPriceResponse) Reset() { + *x = GetProductPriceResponse{} + mi := &file_ozon_products_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetProductPriceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProductPriceResponse) ProtoMessage() {} + +func (x *GetProductPriceResponse) ProtoReflect() protoreflect.Message { + mi := &file_ozon_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 GetProductPriceResponse.ProtoReflect.Descriptor instead. +func (*GetProductPriceResponse) Descriptor() ([]byte, []int) { + return file_ozon_products_proto_rawDescGZIP(), []int{3} +} + +func (x *GetProductPriceResponse) GetProductPrices() []*ProductPrice { + if x != nil { + return x.ProductPrices + } + return nil +} + type Product struct { state protoimpl.MessageState `protogen:"open.v1"` Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -123,7 +211,7 @@ type Product struct { func (x *Product) Reset() { *x = Product{} - mi := &file_ozon_products_proto_msgTypes[2] + mi := &file_ozon_products_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -135,7 +223,7 @@ func (x *Product) String() string { func (*Product) ProtoMessage() {} func (x *Product) ProtoReflect() protoreflect.Message { - mi := &file_ozon_products_proto_msgTypes[2] + mi := &file_ozon_products_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -148,7 +236,7 @@ func (x *Product) ProtoReflect() protoreflect.Message { // Deprecated: Use Product.ProtoReflect.Descriptor instead. func (*Product) Descriptor() ([]byte, []int) { - return file_ozon_products_proto_rawDescGZIP(), []int{2} + return file_ozon_products_proto_rawDescGZIP(), []int{4} } func (x *Product) GetId() int64 { @@ -186,6 +274,74 @@ func (x *Product) GetStatuses() *Product_Status { return nil } +type ProductPrice struct { + state protoimpl.MessageState `protogen:"open.v1"` + Acquiring uint32 `protobuf:"varint,1,opt,name=acquiring,proto3" json:"acquiring,omitempty"` + Commissions *ProductPrice_Commissions `protobuf:"bytes,2,opt,name=commissions,proto3" json:"commissions,omitempty"` + OfferId string `protobuf:"bytes,4,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"` + ProductId uint32 `protobuf:"varint,7,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProductPrice) Reset() { + *x = ProductPrice{} + mi := &file_ozon_products_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProductPrice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProductPrice) ProtoMessage() {} + +func (x *ProductPrice) ProtoReflect() protoreflect.Message { + mi := &file_ozon_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 ProductPrice.ProtoReflect.Descriptor instead. +func (*ProductPrice) Descriptor() ([]byte, []int) { + return file_ozon_products_proto_rawDescGZIP(), []int{5} +} + +func (x *ProductPrice) GetAcquiring() uint32 { + if x != nil { + return x.Acquiring + } + return 0 +} + +func (x *ProductPrice) GetCommissions() *ProductPrice_Commissions { + if x != nil { + return x.Commissions + } + return nil +} + +func (x *ProductPrice) GetOfferId() string { + if x != nil { + return x.OfferId + } + return "" +} + +func (x *ProductPrice) GetProductId() uint32 { + if x != nil { + return x.ProductId + } + return 0 +} + type Product_Status struct { state protoimpl.MessageState `protogen:"open.v1"` StatusName string `protobuf:"bytes,1,opt,name=status_name,json=statusName,proto3" json:"status_name,omitempty"` @@ -195,7 +351,7 @@ type Product_Status struct { func (x *Product_Status) Reset() { *x = Product_Status{} - mi := &file_ozon_products_proto_msgTypes[3] + mi := &file_ozon_products_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -207,7 +363,7 @@ func (x *Product_Status) String() string { func (*Product_Status) ProtoMessage() {} func (x *Product_Status) ProtoReflect() protoreflect.Message { - mi := &file_ozon_products_proto_msgTypes[3] + mi := &file_ozon_products_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -220,7 +376,7 @@ func (x *Product_Status) ProtoReflect() protoreflect.Message { // Deprecated: Use Product_Status.ProtoReflect.Descriptor instead. func (*Product_Status) Descriptor() ([]byte, []int) { - return file_ozon_products_proto_rawDescGZIP(), []int{2, 0} + return file_ozon_products_proto_rawDescGZIP(), []int{4, 0} } func (x *Product_Status) GetStatusName() string { @@ -240,7 +396,7 @@ type Product_Stocks struct { func (x *Product_Stocks) Reset() { *x = Product_Stocks{} - mi := &file_ozon_products_proto_msgTypes[4] + mi := &file_ozon_products_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -252,7 +408,7 @@ func (x *Product_Stocks) String() string { func (*Product_Stocks) ProtoMessage() {} func (x *Product_Stocks) ProtoReflect() protoreflect.Message { - mi := &file_ozon_products_proto_msgTypes[4] + mi := &file_ozon_products_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -265,7 +421,7 @@ func (x *Product_Stocks) ProtoReflect() protoreflect.Message { // Deprecated: Use Product_Stocks.ProtoReflect.Descriptor instead. func (*Product_Stocks) Descriptor() ([]byte, []int) { - return file_ozon_products_proto_rawDescGZIP(), []int{2, 1} + return file_ozon_products_proto_rawDescGZIP(), []int{4, 1} } func (x *Product_Stocks) GetStocks() []*Product_Stock { @@ -294,7 +450,7 @@ type Product_Stock struct { func (x *Product_Stock) Reset() { *x = Product_Stock{} - mi := &file_ozon_products_proto_msgTypes[5] + mi := &file_ozon_products_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -306,7 +462,7 @@ func (x *Product_Stock) String() string { func (*Product_Stock) ProtoMessage() {} func (x *Product_Stock) ProtoReflect() protoreflect.Message { - mi := &file_ozon_products_proto_msgTypes[5] + mi := &file_ozon_products_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -319,7 +475,7 @@ func (x *Product_Stock) ProtoReflect() protoreflect.Message { // Deprecated: Use Product_Stock.ProtoReflect.Descriptor instead. func (*Product_Stock) Descriptor() ([]byte, []int) { - return file_ozon_products_proto_rawDescGZIP(), []int{2, 2} + return file_ozon_products_proto_rawDescGZIP(), []int{4, 2} } func (x *Product_Stock) GetPresent() int64 { @@ -350,6 +506,138 @@ func (x *Product_Stock) GetSource() string { return "" } +type ProductPrice_Commissions struct { + state protoimpl.MessageState `protogen:"open.v1"` + FboDelivToCustomerAmount float64 `protobuf:"fixed64,1,opt,name=fbo_deliv_to_customer_amount,json=fboDelivToCustomerAmount,proto3" json:"fbo_deliv_to_customer_amount,omitempty"` + FboDirectFlowTransMaxAmount float64 `protobuf:"fixed64,2,opt,name=fbo_direct_flow_trans_max_amount,json=fboDirectFlowTransMaxAmount,proto3" json:"fbo_direct_flow_trans_max_amount,omitempty"` + FboDirectFlowTransMinAmount float64 `protobuf:"fixed64,3,opt,name=fbo_direct_flow_trans_min_amount,json=fboDirectFlowTransMinAmount,proto3" json:"fbo_direct_flow_trans_min_amount,omitempty"` + FboReturnFlowAmount float64 `protobuf:"fixed64,4,opt,name=fbo_return_flow_amount,json=fboReturnFlowAmount,proto3" json:"fbo_return_flow_amount,omitempty"` + FbsDelivToCustomerAmount float64 `protobuf:"fixed64,5,opt,name=fbs_deliv_to_customer_amount,json=fbsDelivToCustomerAmount,proto3" json:"fbs_deliv_to_customer_amount,omitempty"` + FbsDirectFlowTransMaxAmount float64 `protobuf:"fixed64,6,opt,name=fbs_direct_flow_trans_max_amount,json=fbsDirectFlowTransMaxAmount,proto3" json:"fbs_direct_flow_trans_max_amount,omitempty"` + FbsDirectFlowTransMinAmount float64 `protobuf:"fixed64,7,opt,name=fbs_direct_flow_trans_min_amount,json=fbsDirectFlowTransMinAmount,proto3" json:"fbs_direct_flow_trans_min_amount,omitempty"` + FbsFirstMileMaxAmount float64 `protobuf:"fixed64,8,opt,name=fbs_first_mile_max_amount,json=fbsFirstMileMaxAmount,proto3" json:"fbs_first_mile_max_amount,omitempty"` + FbsFirstMileMinAmount float64 `protobuf:"fixed64,9,opt,name=fbs_first_mile_min_amount,json=fbsFirstMileMinAmount,proto3" json:"fbs_first_mile_min_amount,omitempty"` + FbsReturnFlowAmount float64 `protobuf:"fixed64,10,opt,name=fbs_return_flow_amount,json=fbsReturnFlowAmount,proto3" json:"fbs_return_flow_amount,omitempty"` + SalesPercentFbo float64 `protobuf:"fixed64,11,opt,name=sales_percent_fbo,json=salesPercentFbo,proto3" json:"sales_percent_fbo,omitempty"` + SalesPercentFbs float64 `protobuf:"fixed64,12,opt,name=sales_percent_fbs,json=salesPercentFbs,proto3" json:"sales_percent_fbs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProductPrice_Commissions) Reset() { + *x = ProductPrice_Commissions{} + mi := &file_ozon_products_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProductPrice_Commissions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProductPrice_Commissions) ProtoMessage() {} + +func (x *ProductPrice_Commissions) ProtoReflect() protoreflect.Message { + mi := &file_ozon_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 ProductPrice_Commissions.ProtoReflect.Descriptor instead. +func (*ProductPrice_Commissions) Descriptor() ([]byte, []int) { + return file_ozon_products_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *ProductPrice_Commissions) GetFboDelivToCustomerAmount() float64 { + if x != nil { + return x.FboDelivToCustomerAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFboDirectFlowTransMaxAmount() float64 { + if x != nil { + return x.FboDirectFlowTransMaxAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFboDirectFlowTransMinAmount() float64 { + if x != nil { + return x.FboDirectFlowTransMinAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFboReturnFlowAmount() float64 { + if x != nil { + return x.FboReturnFlowAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsDelivToCustomerAmount() float64 { + if x != nil { + return x.FbsDelivToCustomerAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsDirectFlowTransMaxAmount() float64 { + if x != nil { + return x.FbsDirectFlowTransMaxAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsDirectFlowTransMinAmount() float64 { + if x != nil { + return x.FbsDirectFlowTransMinAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsFirstMileMaxAmount() float64 { + if x != nil { + return x.FbsFirstMileMaxAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsFirstMileMinAmount() float64 { + if x != nil { + return x.FbsFirstMileMinAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetFbsReturnFlowAmount() float64 { + if x != nil { + return x.FbsReturnFlowAmount + } + return 0 +} + +func (x *ProductPrice_Commissions) GetSalesPercentFbo() float64 { + if x != nil { + return x.SalesPercentFbo + } + return 0 +} + +func (x *ProductPrice_Commissions) GetSalesPercentFbs() float64 { + if x != nil { + return x.SalesPercentFbs + } + return 0 +} + var File_ozon_products_proto protoreflect.FileDescriptor const file_ozon_products_proto_rawDesc = "" + @@ -358,7 +646,11 @@ const file_ozon_products_proto_rawDesc = "" + "\x18GetListOfProductsRequest\x12%\n" + "\x0emarketplace_id\x18\x01 \x01(\x03R\rmarketplaceId\"O\n" + "\x19GetListOfProductsResponse\x122\n" + - "\bproducts\x18\x01 \x03(\v2\x16.ozon.products.ProductR\bproducts\"\xb3\x03\n" + + "\bproducts\x18\x01 \x03(\v2\x16.ozon.products.ProductR\bproducts\"?\n" + + "\x16GetProductPriceRequest\x12%\n" + + "\x0emarketplace_id\x18\x01 \x01(\x03R\rmarketplaceId\"]\n" + + "\x17GetProductPriceResponse\x12B\n" + + "\x0eproduct_prices\x18\x01 \x03(\v2\x1b.ozon.products.ProductPriceR\rproductPrices\"\xb3\x03\n" + "\aProduct\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x19\n" + "\boffer_id\x18\x02 \x01(\tR\aofferId\x125\n" + @@ -375,9 +667,30 @@ const file_ozon_products_proto_rawDesc = "" + "\apresent\x18\x01 \x01(\x03R\apresent\x12\x1a\n" + "\breserved\x18\x02 \x01(\x03R\breserved\x12\x10\n" + "\x03SKU\x18\x03 \x01(\x03R\x03SKU\x12\x16\n" + - "\x06source\x18\x04 \x01(\tR\x06source2{\n" + + "\x06source\x18\x04 \x01(\tR\x06source\"\x93\a\n" + + "\fProductPrice\x12\x1c\n" + + "\tacquiring\x18\x01 \x01(\rR\tacquiring\x12I\n" + + "\vcommissions\x18\x02 \x01(\v2'.ozon.products.ProductPrice.CommissionsR\vcommissions\x12\x19\n" + + "\boffer_id\x18\x04 \x01(\tR\aofferId\x12\x1d\n" + + "\n" + + "product_id\x18\a \x01(\rR\tproductId\x1a\xdf\x05\n" + + "\vCommissions\x12>\n" + + "\x1cfbo_deliv_to_customer_amount\x18\x01 \x01(\x01R\x18fboDelivToCustomerAmount\x12E\n" + + " fbo_direct_flow_trans_max_amount\x18\x02 \x01(\x01R\x1bfboDirectFlowTransMaxAmount\x12E\n" + + " fbo_direct_flow_trans_min_amount\x18\x03 \x01(\x01R\x1bfboDirectFlowTransMinAmount\x123\n" + + "\x16fbo_return_flow_amount\x18\x04 \x01(\x01R\x13fboReturnFlowAmount\x12>\n" + + "\x1cfbs_deliv_to_customer_amount\x18\x05 \x01(\x01R\x18fbsDelivToCustomerAmount\x12E\n" + + " fbs_direct_flow_trans_max_amount\x18\x06 \x01(\x01R\x1bfbsDirectFlowTransMaxAmount\x12E\n" + + " fbs_direct_flow_trans_min_amount\x18\a \x01(\x01R\x1bfbsDirectFlowTransMinAmount\x128\n" + + "\x19fbs_first_mile_max_amount\x18\b \x01(\x01R\x15fbsFirstMileMaxAmount\x128\n" + + "\x19fbs_first_mile_min_amount\x18\t \x01(\x01R\x15fbsFirstMileMinAmount\x123\n" + + "\x16fbs_return_flow_amount\x18\n" + + " \x01(\x01R\x13fbsReturnFlowAmount\x12*\n" + + "\x11sales_percent_fbo\x18\v \x01(\x01R\x0fsalesPercentFbo\x12*\n" + + "\x11sales_percent_fbs\x18\f \x01(\x01R\x0fsalesPercentFbs2\xdf\x01\n" + "\x0fProductsService\x12h\n" + - "\x11GetListOfProducts\x12'.ozon.products.GetListOfProductsRequest\x1a(.ozon.products.GetListOfProductsResponse0\x01B\x11Z\x0f./ozon/productsb\x06proto3" + "\x11GetListOfProducts\x12'.ozon.products.GetListOfProductsRequest\x1a(.ozon.products.GetListOfProductsResponse0\x01\x12b\n" + + "\x0fGetProductPrice\x12%.ozon.products.GetProductPriceRequest\x1a&.ozon.products.GetProductPriceResponse0\x01B\x11Z\x0f./ozon/productsb\x06proto3" var ( file_ozon_products_proto_rawDescOnce sync.Once @@ -391,27 +704,35 @@ func file_ozon_products_proto_rawDescGZIP() []byte { return file_ozon_products_proto_rawDescData } -var file_ozon_products_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_ozon_products_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_ozon_products_proto_goTypes = []any{ (*GetListOfProductsRequest)(nil), // 0: ozon.products.GetListOfProductsRequest (*GetListOfProductsResponse)(nil), // 1: ozon.products.GetListOfProductsResponse - (*Product)(nil), // 2: ozon.products.Product - (*Product_Status)(nil), // 3: ozon.products.Product.Status - (*Product_Stocks)(nil), // 4: ozon.products.Product.Stocks - (*Product_Stock)(nil), // 5: ozon.products.Product.Stock + (*GetProductPriceRequest)(nil), // 2: ozon.products.GetProductPriceRequest + (*GetProductPriceResponse)(nil), // 3: ozon.products.GetProductPriceResponse + (*Product)(nil), // 4: ozon.products.Product + (*ProductPrice)(nil), // 5: ozon.products.ProductPrice + (*Product_Status)(nil), // 6: ozon.products.Product.Status + (*Product_Stocks)(nil), // 7: ozon.products.Product.Stocks + (*Product_Stock)(nil), // 8: ozon.products.Product.Stock + (*ProductPrice_Commissions)(nil), // 9: ozon.products.ProductPrice.Commissions } var file_ozon_products_proto_depIdxs = []int32{ - 2, // 0: ozon.products.GetListOfProductsResponse.products:type_name -> ozon.products.Product - 4, // 1: ozon.products.Product.stocks:type_name -> ozon.products.Product.Stocks - 3, // 2: ozon.products.Product.statuses:type_name -> ozon.products.Product.Status - 5, // 3: ozon.products.Product.Stocks.stocks:type_name -> ozon.products.Product.Stock - 0, // 4: ozon.products.ProductsService.GetListOfProducts:input_type -> ozon.products.GetListOfProductsRequest - 1, // 5: ozon.products.ProductsService.GetListOfProducts:output_type -> ozon.products.GetListOfProductsResponse - 5, // [5:6] is the sub-list for method output_type - 4, // [4:5] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 0: ozon.products.GetListOfProductsResponse.products:type_name -> ozon.products.Product + 5, // 1: ozon.products.GetProductPriceResponse.product_prices:type_name -> ozon.products.ProductPrice + 7, // 2: ozon.products.Product.stocks:type_name -> ozon.products.Product.Stocks + 6, // 3: ozon.products.Product.statuses:type_name -> ozon.products.Product.Status + 9, // 4: ozon.products.ProductPrice.commissions:type_name -> ozon.products.ProductPrice.Commissions + 8, // 5: ozon.products.Product.Stocks.stocks:type_name -> ozon.products.Product.Stock + 0, // 6: ozon.products.ProductsService.GetListOfProducts:input_type -> ozon.products.GetListOfProductsRequest + 2, // 7: ozon.products.ProductsService.GetProductPrice:input_type -> ozon.products.GetProductPriceRequest + 1, // 8: ozon.products.ProductsService.GetListOfProducts:output_type -> ozon.products.GetListOfProductsResponse + 3, // 9: ozon.products.ProductsService.GetProductPrice:output_type -> ozon.products.GetProductPriceResponse + 8, // [8:10] is the sub-list for method output_type + 6, // [6:8] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_ozon_products_proto_init() } @@ -425,7 +746,7 @@ func file_ozon_products_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_ozon_products_proto_rawDesc), len(file_ozon_products_proto_rawDesc)), NumEnums: 0, - NumMessages: 6, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/api/generated/v1/ozon/products/products_grpc.pb.go b/api/generated/v1/ozon/products/products_grpc.pb.go index 160e4b5..b64db43 100644 --- a/api/generated/v1/ozon/products/products_grpc.pb.go +++ b/api/generated/v1/ozon/products/products_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v6.31.0 +// - protoc v6.31.1 // source: ozon/products.proto package products @@ -20,6 +20,7 @@ const _ = grpc.SupportPackageIsVersion9 const ( ProductsService_GetListOfProducts_FullMethodName = "/ozon.products.ProductsService/GetListOfProducts" + ProductsService_GetProductPrice_FullMethodName = "/ozon.products.ProductsService/GetProductPrice" ) // ProductsServiceClient is the client API for ProductsService service. @@ -28,6 +29,7 @@ const ( type ProductsServiceClient interface { // Retrieves a list of products based on the provided request. GetListOfProducts(ctx context.Context, in *GetListOfProductsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetListOfProductsResponse], error) + GetProductPrice(ctx context.Context, in *GetProductPriceRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetProductPriceResponse], error) } type productsServiceClient struct { @@ -57,12 +59,32 @@ func (c *productsServiceClient) GetListOfProducts(ctx context.Context, in *GetLi // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type ProductsService_GetListOfProductsClient = grpc.ServerStreamingClient[GetListOfProductsResponse] +func (c *productsServiceClient) GetProductPrice(ctx context.Context, in *GetProductPriceRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetProductPriceResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &ProductsService_ServiceDesc.Streams[1], ProductsService_GetProductPrice_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[GetProductPriceRequest, GetProductPriceResponse]{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_GetProductPriceClient = grpc.ServerStreamingClient[GetProductPriceResponse] + // ProductsServiceServer is the server API for ProductsService service. // All implementations must embed UnimplementedProductsServiceServer // for forward compatibility. type ProductsServiceServer interface { // Retrieves a list of products based on the provided request. GetListOfProducts(*GetListOfProductsRequest, grpc.ServerStreamingServer[GetListOfProductsResponse]) error + GetProductPrice(*GetProductPriceRequest, grpc.ServerStreamingServer[GetProductPriceResponse]) error mustEmbedUnimplementedProductsServiceServer() } @@ -76,6 +98,9 @@ type UnimplementedProductsServiceServer struct{} func (UnimplementedProductsServiceServer) GetListOfProducts(*GetListOfProductsRequest, grpc.ServerStreamingServer[GetListOfProductsResponse]) error { return status.Errorf(codes.Unimplemented, "method GetListOfProducts not implemented") } +func (UnimplementedProductsServiceServer) GetProductPrice(*GetProductPriceRequest, grpc.ServerStreamingServer[GetProductPriceResponse]) error { + return status.Errorf(codes.Unimplemented, "method GetProductPrice not implemented") +} func (UnimplementedProductsServiceServer) mustEmbedUnimplementedProductsServiceServer() {} func (UnimplementedProductsServiceServer) testEmbeddedByValue() {} @@ -108,6 +133,17 @@ func _ProductsService_GetListOfProducts_Handler(srv interface{}, stream grpc.Ser // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type ProductsService_GetListOfProductsServer = grpc.ServerStreamingServer[GetListOfProductsResponse] +func _ProductsService_GetProductPrice_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(GetProductPriceRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ProductsServiceServer).GetProductPrice(m, &grpc.GenericServerStream[GetProductPriceRequest, GetProductPriceResponse]{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_GetProductPriceServer = grpc.ServerStreamingServer[GetProductPriceResponse] + // ProductsService_ServiceDesc is the grpc.ServiceDesc for ProductsService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -121,6 +157,11 @@ var ProductsService_ServiceDesc = grpc.ServiceDesc{ Handler: _ProductsService_GetListOfProducts_Handler, ServerStreams: true, }, + { + StreamName: "GetProductPrice", + Handler: _ProductsService_GetProductPrice_Handler, + ServerStreams: true, + }, }, Metadata: "ozon/products.proto", } diff --git a/api/generated/v1/wb/products/products.pb.go b/api/generated/v1/wb/products/products.pb.go index b9f6cb5..d3fc69b 100644 --- a/api/generated/v1/wb/products/products.pb.go +++ b/api/generated/v1/wb/products/products.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6 -// protoc v6.31.0 +// protoc v6.31.1 // source: wb/products.proto package products @@ -10,6 +10,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + sync "sync" unsafe "unsafe" ) @@ -20,20 +21,255 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetProductsRequest) Reset() { + *x = GetProductsRequest{} + mi := &file_wb_products_proto_msgTypes[0] + 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_wb_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 GetProductsRequest.ProtoReflect.Descriptor instead. +func (*GetProductsRequest) Descriptor() ([]byte, []int) { + return file_wb_products_proto_rawDescGZIP(), []int{0} +} + +func (x *GetProductsRequest) GetMarketplaceId() int64 { + if x != nil { + return x.MarketplaceId + } + return 0 +} + +type Product struct { + state protoimpl.MessageState `protogen:"open.v1"` + NmID int64 `protobuf:"varint,1,opt,name=nmID,proto3" json:"nmID,omitempty"` + SubjectID int64 `protobuf:"varint,2,opt,name=subjectID,proto3" json:"subjectID,omitempty"` + VendorCode string `protobuf:"bytes,3,opt,name=vendor_code,json=vendorCode,proto3" json:"vendor_code,omitempty"` + Sizes []*Product_Size `protobuf:"bytes,4,rep,name=sizes,proto3" json:"sizes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Product) Reset() { + *x = Product{} + mi := &file_wb_products_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Product) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Product) ProtoMessage() {} + +func (x *Product) ProtoReflect() protoreflect.Message { + mi := &file_wb_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 Product.ProtoReflect.Descriptor instead. +func (*Product) Descriptor() ([]byte, []int) { + return file_wb_products_proto_rawDescGZIP(), []int{1} +} + +func (x *Product) GetNmID() int64 { + if x != nil { + return x.NmID + } + return 0 +} + +func (x *Product) GetSubjectID() int64 { + if x != nil { + return x.SubjectID + } + return 0 +} + +func (x *Product) GetVendorCode() string { + if x != nil { + return x.VendorCode + } + return "" +} + +func (x *Product) GetSizes() []*Product_Size { + if x != nil { + return x.Sizes + } + return nil +} + +type GetProductsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetProductsResponse) Reset() { + *x = GetProductsResponse{} + mi := &file_wb_products_proto_msgTypes[2] + 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_wb_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 GetProductsResponse.ProtoReflect.Descriptor instead. +func (*GetProductsResponse) Descriptor() ([]byte, []int) { + return file_wb_products_proto_rawDescGZIP(), []int{2} +} + +func (x *GetProductsResponse) GetProducts() []*Product { + if x != nil { + return x.Products + } + return nil +} + +type Product_Size struct { + state protoimpl.MessageState `protogen:"open.v1"` + Skus []string `protobuf:"bytes,1,rep,name=skus,proto3" json:"skus,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Product_Size) Reset() { + *x = Product_Size{} + mi := &file_wb_products_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Product_Size) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Product_Size) ProtoMessage() {} + +func (x *Product_Size) ProtoReflect() protoreflect.Message { + mi := &file_wb_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 Product_Size.ProtoReflect.Descriptor instead. +func (*Product_Size) Descriptor() ([]byte, []int) { + return file_wb_products_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *Product_Size) GetSkus() []string { + if x != nil { + return x.Skus + } + return nil +} + var File_wb_products_proto protoreflect.FileDescriptor const file_wb_products_proto_rawDesc = "" + "\n" + - "\x11wb/products.proto\x12\vwb.products2\x11\n" + - "\x0fProductsServiceB\x0fZ\r./wb/productsb\x06proto3" + "\x11wb/products.proto\x12\vwb.products\";\n" + + "\x12GetProductsRequest\x12%\n" + + "\x0emarketplace_id\x18\x01 \x01(\x03R\rmarketplaceId\"\xa9\x01\n" + + "\aProduct\x12\x12\n" + + "\x04nmID\x18\x01 \x01(\x03R\x04nmID\x12\x1c\n" + + "\tsubjectID\x18\x02 \x01(\x03R\tsubjectID\x12\x1f\n" + + "\vvendor_code\x18\x03 \x01(\tR\n" + + "vendorCode\x12/\n" + + "\x05sizes\x18\x04 \x03(\v2\x19.wb.products.Product.SizeR\x05sizes\x1a\x1a\n" + + "\x04Size\x12\x12\n" + + "\x04skus\x18\x01 \x03(\tR\x04skus\"G\n" + + "\x13GetProductsResponse\x120\n" + + "\bproducts\x18\x01 \x03(\v2\x14.wb.products.ProductR\bproducts2e\n" + + "\x0fProductsService\x12R\n" + + "\vGetProducts\x12\x1f.wb.products.GetProductsRequest\x1a .wb.products.GetProductsResponse0\x01B\x0fZ\r./wb/productsb\x06proto3" -var file_wb_products_proto_goTypes = []any{} +var ( + file_wb_products_proto_rawDescOnce sync.Once + file_wb_products_proto_rawDescData []byte +) + +func file_wb_products_proto_rawDescGZIP() []byte { + file_wb_products_proto_rawDescOnce.Do(func() { + file_wb_products_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_wb_products_proto_rawDesc), len(file_wb_products_proto_rawDesc))) + }) + return file_wb_products_proto_rawDescData +} + +var file_wb_products_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_wb_products_proto_goTypes = []any{ + (*GetProductsRequest)(nil), // 0: wb.products.GetProductsRequest + (*Product)(nil), // 1: wb.products.Product + (*GetProductsResponse)(nil), // 2: wb.products.GetProductsResponse + (*Product_Size)(nil), // 3: wb.products.Product.Size +} var file_wb_products_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 3, // 0: wb.products.Product.sizes:type_name -> wb.products.Product.Size + 1, // 1: wb.products.GetProductsResponse.products:type_name -> wb.products.Product + 0, // 2: wb.products.ProductsService.GetProducts:input_type -> wb.products.GetProductsRequest + 2, // 3: wb.products.ProductsService.GetProducts:output_type -> wb.products.GetProductsResponse + 3, // [3:4] is the sub-list for method output_type + 2, // [2:3] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_wb_products_proto_init() } @@ -47,12 +283,13 @@ func file_wb_products_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wb_products_proto_rawDesc), len(file_wb_products_proto_rawDesc)), NumEnums: 0, - NumMessages: 0, + NumMessages: 4, NumExtensions: 0, NumServices: 1, }, GoTypes: file_wb_products_proto_goTypes, DependencyIndexes: file_wb_products_proto_depIdxs, + MessageInfos: file_wb_products_proto_msgTypes, }.Build() File_wb_products_proto = out.File file_wb_products_proto_goTypes = nil diff --git a/api/generated/v1/wb/products/products_grpc.pb.go b/api/generated/v1/wb/products/products_grpc.pb.go index 357130f..51cd9b7 100644 --- a/api/generated/v1/wb/products/products_grpc.pb.go +++ b/api/generated/v1/wb/products/products_grpc.pb.go @@ -1,13 +1,16 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v6.31.0 +// - protoc v6.31.1 // source: wb/products.proto package products import ( + context "context" 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 @@ -15,10 +18,15 @@ import ( // Requires gRPC-Go v1.64.0 or later. const _ = grpc.SupportPackageIsVersion9 +const ( + ProductsService_GetProducts_FullMethodName = "/wb.products.ProductsService/GetProducts" +) + // 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. type ProductsServiceClient interface { + GetProducts(ctx context.Context, in *GetProductsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetProductsResponse], error) } type productsServiceClient struct { @@ -29,10 +37,30 @@ func NewProductsServiceClient(cc grpc.ClientConnInterface) ProductsServiceClient return &productsServiceClient{cc} } +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[0], 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. // All implementations must embed UnimplementedProductsServiceServer // for forward compatibility. type ProductsServiceServer interface { + GetProducts(*GetProductsRequest, grpc.ServerStreamingServer[GetProductsResponse]) error mustEmbedUnimplementedProductsServiceServer() } @@ -43,6 +71,9 @@ type ProductsServiceServer interface { // pointer dereference when methods are called. type UnimplementedProductsServiceServer struct{} +func (UnimplementedProductsServiceServer) GetProducts(*GetProductsRequest, grpc.ServerStreamingServer[GetProductsResponse]) error { + return status.Errorf(codes.Unimplemented, "method GetProducts not implemented") +} func (UnimplementedProductsServiceServer) mustEmbedUnimplementedProductsServiceServer() {} func (UnimplementedProductsServiceServer) testEmbeddedByValue() {} @@ -64,6 +95,17 @@ func RegisterProductsServiceServer(s grpc.ServiceRegistrar, srv ProductsServiceS s.RegisterService(&ProductsService_ServiceDesc, srv) } +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. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -71,6 +113,12 @@ var ProductsService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "wb.products.ProductsService", HandlerType: (*ProductsServiceServer)(nil), Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "wb/products.proto", + Streams: []grpc.StreamDesc{ + { + StreamName: "GetProducts", + Handler: _ProductsService_GetProducts_Handler, + ServerStreams: true, + }, + }, + Metadata: "wb/products.proto", } diff --git a/api/generated/v1/yandexmarket/products/products.pb.go b/api/generated/v1/yandexmarket/products/products.pb.go index f6e5d58..0aba6bf 100644 --- a/api/generated/v1/yandexmarket/products/products.pb.go +++ b/api/generated/v1/yandexmarket/products/products.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6 -// protoc v6.31.0 +// protoc v6.31.1 // source: yandexmarket/products.proto package products diff --git a/api/generated/v1/yandexmarket/products/products_grpc.pb.go b/api/generated/v1/yandexmarket/products/products_grpc.pb.go index e597e88..7566657 100644 --- a/api/generated/v1/yandexmarket/products/products_grpc.pb.go +++ b/api/generated/v1/yandexmarket/products/products_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v6.31.0 +// - protoc v6.31.1 // source: yandexmarket/products.proto package products diff --git a/api/proto/v1 b/api/proto/v1 index c6df89a..2c4ca98 160000 --- a/api/proto/v1 +++ b/api/proto/v1 @@ -1 +1 @@ -Subproject commit c6df89a7a355ea20f9b573874d808c5df29acfdb +Subproject commit 2c4ca98d2d1c9809e1f49e423e20bba6dcdb3ff9 diff --git a/cmd/server/main.go b/cmd/server/main.go index 8150509..90f1d44 100755 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -8,9 +8,12 @@ import ( "google.golang.org/grpc" "net" "os" + "sipro-mps/internal/config" "sipro-mps/internal/marketplace" ozon "sipro-mps/internal/ozon/products" "sipro-mps/internal/redis" + "sipro-mps/internal/tasks/client" + wb "sipro-mps/internal/wb/products" ) func logMessage(level string, format string, a ...interface{}) { @@ -50,7 +53,11 @@ func createGrpcServer(pool *pgxpool.Pool) { fmt.Printf("failed to register Ozon Products gRPC server: %v\n", err) return } - + _, err = wb.RegisterAdapterGRPC(grpcServer, *repo) + if err != nil { + fmt.Printf("failed to register Wildberries Products gRPC server: %v\n", err) + return + } fmt.Println("gRPC server registered successfully.") // Start serving gRPC requests fmt.Println("gRPC server is starting on port 8080...") @@ -61,26 +68,64 @@ func createGrpcServer(pool *pgxpool.Pool) { fmt.Println("gRPC server created.") } -func main() { - // Initializing the dotenv file +func initDotenv() error { err := godotenv.Load() if err != nil { - logMessage("error", "Error loading .env file: %v", err) - return + return fmt.Errorf("error loading .env file: %w", err) } logMessage("info", "Dotenv file loaded successfully. 🌱") + return nil +} +func initRedisClient(ctx context.Context) error { + err := redis.InitClient(ctx) + if err != nil { + return fmt.Errorf("error initializing Redis client: %w", err) + } + //defer redis.CloseClient() + logMessage("info", "Redis client initialized successfully. πŸŸ₯") + return nil +} +func initRedisLocker() error { + err := redis.InitLocker() + if err != nil { + return fmt.Errorf("error initializing Redis locker: %w", err) + } + logMessage("info", "Redis locker initialized successfully. πŸŸ₯") + return nil +} + +func main() { + err := initDotenv() + if err != nil { + logMessage("error", "Failed to load .env file: %v", err) + return + } + logMessage("info", "Starting the SIPRO Marketplace Server... πŸš€1") ctx := context.Background() // Initializing the Redis client - err = redis.InitClient(ctx) + err = initRedisClient(ctx) if err != nil { logMessage("error", "Failed to initialize Redis client: %v", err) return } defer redis.CloseClient() - logMessage("info", "Redis client initialized successfully. πŸŸ₯") + // Initializing the Redis locker + err = initRedisLocker() + if err != nil { + logMessage("error", "Failed to initialize Redis locker: %v", err) + return + } + defer redis.CloseLocker() + cfg, err := config.LoadConfig() + if err != nil { + logMessage("error", "Failed to load configuration: %v", err) + return + } + + client.InitClient(*cfg.Redis) // Initializing pgx connection dbpool, err := pgxpool.New(ctx, os.Getenv("POSTGRES_URL")) if err != nil { @@ -88,11 +133,6 @@ func main() { return } defer dbpool.Close() - logMessage("info", "Connected to PostgreSQL successfully. 🐘") + createGrpcServer(dbpool) - } - -//for _, item := range items { -// //logMessage("info", "Product ID: %s, Name: %s, Price: %d", item.Price, item.Name, item.Price) -//} diff --git a/cmd/tasks_server/main.go b/cmd/tasks_server/main.go new file mode 100644 index 0000000..d1ef500 --- /dev/null +++ b/cmd/tasks_server/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "context" + "github.com/jackc/pgx/v5/pgxpool" + "sipro-mps/internal/config" + "sipro-mps/internal/redis" + "sipro-mps/internal/tasks/server" +) + +func main() { + cfg, err := config.LoadConfig() + if err != nil { + panic(err) + } + ctx := context.Background() + err = redis.InitClient(ctx) + if err != nil { + panic(err) + } + defer redis.CloseClient() + err = redis.InitLocker() + if err != nil { + panic(err) + } + defer redis.CloseLocker() + dbpool, err := pgxpool.New(ctx, cfg.Database.URL) + if err != nil { + panic(err) + } + + srv := server.NewAsynqServer(cfg.Redis, dbpool) + srv.Run() +} diff --git a/cmd/test/main.go b/cmd/test/main.go new file mode 100644 index 0000000..8f6f935 --- /dev/null +++ b/cmd/test/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "context" + "fmt" + "github.com/go-faster/errors" + "github.com/hibiken/asynq" + "github.com/joho/godotenv" + "github.com/redis/rueidis" + "sipro-mps/internal/config" + "sipro-mps/internal/redis" + "sipro-mps/internal/tasks" +) + +func main() { + godotenv.Load() + ctx := context.Background() + + redis.InitClient(ctx) + c := *redis.Client + key := fmt.Sprintf("wb:products:%d", "test") + v, err := c.Do(ctx, c.B().Get().Key(key).Build()).ToString() + if err != nil { + if errors.As(err, &rueidis.Nil) { + fmt.Println("Key does not exist in Redis:", key) + return + } + } + fmt.Println("Value from Redis:", v) + return + cfg, err := config.LoadConfig() + if err != nil { + panic(err) + } + client := asynq.NewClient(asynq.RedisClientOpt{Addr: cfg.Redis.Host + ":" + cfg.Redis.Port, Password: cfg.Redis.Password}) + defer func(client *asynq.Client) { + err := client.Close() + if err != nil { + panic(err) + } + }(client) + task, err := tasks.NewFetchProductsTask(1130) + 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") +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e50e52c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' +services: + app: + image: git.denco.store/fakz9/sipro-marketplaces:latest + depends_on: + - redis + networks: + - appnet + redis: + image: redis + networks: + - appnet +networks: + appnet: + driver: bridge diff --git a/go.mod b/go.mod index 5ae444d..07f9780 100755 --- a/go.mod +++ b/go.mod @@ -4,24 +4,55 @@ go 1.24 require ( git.denco.store/fakz9/ozon-api-client v1.18.1-0.20250526003754-c6c303092505 + github.com/go-faster/errors v0.7.1 + github.com/go-faster/jx v1.1.0 + github.com/golang-jwt/jwt/v5 v5.2.2 + github.com/google/uuid v1.6.0 + github.com/hibiken/asynq v0.25.1 github.com/jackc/pgx/v5 v5.7.5 github.com/joho/godotenv v1.5.1 github.com/lib/pq v1.10.9 + github.com/ogen-go/ogen v1.14.0 github.com/redis/rueidis v1.0.60 github.com/samber/lo v1.50.0 github.com/tidwall/gjson v1.18.0 + go.opentelemetry.io/otel v1.36.0 + go.opentelemetry.io/otel/metric v1.36.0 + go.opentelemetry.io/otel/trace v1.36.0 google.golang.org/grpc v1.72.2 google.golang.org/protobuf v1.36.5 ) require ( + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dlclark/regexp2 v1.11.5 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect + github.com/go-faster/yaml v0.4.6 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/redis/go-redis/v9 v9.7.0 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/spf13/cast v1.7.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - golang.org/x/crypto v0.37.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/text v0.24.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/crypto v0.38.0 // indirect + golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sync v0.14.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + golang.org/x/time v0.8.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 6bfa488..4a88cd1 100755 --- a/go.sum +++ b/go.sum @@ -1,18 +1,45 @@ git.denco.store/fakz9/ozon-api-client v1.18.1-0.20250526003754-c6c303092505 h1:5mviYMLXLIvsFEXLR0IlGuqMNzkB8X/yrmxZHYk0n84= git.denco.store/fakz9/ozon-api-client v1.18.1-0.20250526003754-c6c303092505/go.mod h1:1uPm278HN7mDkP507KHsLpnW+R9vWGEzp9BSMycjVbQ= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 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/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +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/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= +github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg= +github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo= +github.com/go-faster/jx v1.1.0 h1:ZsW3wD+snOdmTDy9eIVgQdjUpXRRV4rqW8NS3t+20bg= +github.com/go-faster/jx v1.1.0/go.mod h1:vKDNikrKoyUmpzaJ0OkIkRQClNHFX/nF3dnTJZb3skg= +github.com/go-faster/yaml v0.4.6 h1:lOK/EhI04gCpPgPhgt0bChS6bvw7G3WwI8xxVe0sw9I= +github.com/go-faster/yaml v0.4.6/go.mod h1:390dRIvV4zbnO7qC9FGo6YYutc+wyyUSHBgbXL52eXk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hibiken/asynq v0.25.1 h1:phj028N0nm15n8O2ims+IvJ2gz4k2auvermngh9JhTw= +github.com/hibiken/asynq v0.25.1/go.mod h1:pazWNOLBu0FEynQRBvHA26qdIKRSmfdIfUm4HdsLmXg= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= @@ -23,16 +50,37 @@ github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/ogen-go/ogen v1.14.0 h1:TU1Nj4z9UBsAfTkf+IhuNNp7igdFQKqkk9+6/y4XuWg= +github.com/ogen-go/ogen v1.14.0/go.mod h1:Iw1vkqkx6SU7I9th5ceP+fVPJ6Wge4e3kAVzAxJEpPE= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= +github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= github.com/redis/rueidis v1.0.60 h1:MGZX8uNdw7iyWz22JhjA/9iXzddfCUE/EMK4VxKoKpA= github.com/redis/rueidis v1.0.60/go.mod h1:Lkhr2QTgcoYBhxARU7kJRO8SyVlgUuEkcJO1Y8MCluA= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY= github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -47,26 +95,38 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 h1:Di6/M8l0O2lCLc6VVRWhgCiApHV8MnQurBnFSHsQtNY= +golang.org/x/exp v0.0.0-20230725093048-515e97ebf090/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +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/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= @@ -74,6 +134,10 @@ google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3i google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/config/config.go b/internal/config/config.go index c5e0b68..af87f59 100755 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,17 +1,18 @@ package config +import "github.com/joho/godotenv" + type Config struct { - DB string - HTTP string - GRPC string - Kafka string + Redis *RedisConfig + Database *DatabaseConfig } -func Load() Config { - return Config{ - DB: "dbname=test password=GjitkYf[eq user=postgres sslmode=disable", - HTTP: ":8080", - GRPC: ":50051", - Kafka: "localhost:9092", +func LoadConfig() (*Config, error) { + err := godotenv.Load() + if err != nil { + return nil, err } + redisConfig := LoadRedisConfig() + databaseConfig := LoadDatabaseConfig() + return &Config{Redis: redisConfig, Database: databaseConfig}, nil } diff --git a/internal/config/database.go b/internal/config/database.go new file mode 100644 index 0000000..a681989 --- /dev/null +++ b/internal/config/database.go @@ -0,0 +1,23 @@ +package config + +import "os" + +type DatabaseConfig struct { + Host string + Port string + Login string + Password string + Database string + URL string +} + +func LoadDatabaseConfig() *DatabaseConfig { + return &DatabaseConfig{ + Host: os.Getenv("POSTGRES_HOST"), + Port: os.Getenv("POSTGRES_PORT"), + Login: os.Getenv("POSTGRES_LOGIN"), + Password: os.Getenv("POSTGRES_PASSWORD"), + Database: os.Getenv("POSTGRES_DATABASE"), + URL: os.Getenv("POSTGRES_URL"), + } +} diff --git a/internal/config/redis.go b/internal/config/redis.go new file mode 100644 index 0000000..7abe74e --- /dev/null +++ b/internal/config/redis.go @@ -0,0 +1,23 @@ +package config + +import "os" + +type RedisConfig struct { + Host string + Port string + Password string + Addr string +} + +func LoadRedisConfig() *RedisConfig { + host := os.Getenv("REDIS_HOST") + port := os.Getenv("REDIS_PORT") + password := os.Getenv("REDIS_PASSWORD") + addr := os.Getenv("REDIS_ADDR") + return &RedisConfig{ + Host: host, + Port: port, + Password: password, + Addr: addr, + } +} diff --git a/internal/marketplace/db/models.go b/internal/marketplace/db/models.go index 239c76c..f19e645 100644 --- a/internal/marketplace/db/models.go +++ b/internal/marketplace/db/models.go @@ -14,4 +14,5 @@ type Marketplace struct { Name string AuthData pgtype.Text WarehouseID pgtype.Text + AuthDataJson []byte } diff --git a/internal/marketplace/db/query.sql.go b/internal/marketplace/db/query.sql.go index cafbe79..2da2fc9 100644 --- a/internal/marketplace/db/query.sql.go +++ b/internal/marketplace/db/query.sql.go @@ -10,7 +10,7 @@ import ( ) const getMarketplaceByID = `-- name: GetMarketplaceByID :one -SELECT id, base_marketplace, name, auth_data, warehouse_id FROM marketplaces +SELECT id, base_marketplace, name, auth_data, warehouse_id, auth_data_json FROM marketplaces WHERE id = $1 LIMIT 1 ` @@ -23,6 +23,7 @@ func (q *Queries) GetMarketplaceByID(ctx context.Context, id int32) (Marketplace &i.Name, &i.AuthData, &i.WarehouseID, + &i.AuthDataJson, ) return i, err } diff --git a/internal/marketplace/db/schema.sql b/internal/marketplace/db/schema.sql index ee22237..bc6ca22 100644 --- a/internal/marketplace/db/schema.sql +++ b/internal/marketplace/db/schema.sql @@ -1,9 +1,14 @@ create table marketplaces ( - id serial + id serial primary key, - base_marketplace integer not null, - name varchar not null, - auth_data varchar, - warehouse_id varchar + base_marketplace integer not null, + name varchar not null, + auth_data varchar, + warehouse_id varchar, + auth_data_json jsonb generated always as ( + CASE + WHEN ((auth_data)::text IS JSON) THEN (auth_data)::jsonb + ELSE NULL::jsonb + END) stored ); \ No newline at end of file diff --git a/internal/marketplace/entities.go b/internal/marketplace/entities.go index cae3fd3..3f21459 100644 --- a/internal/marketplace/entities.go +++ b/internal/marketplace/entities.go @@ -5,4 +5,5 @@ type Marketplace struct { BaseMarketplace int `json:"base_marketplace"` AuthData string `json:"auth_data"` WarehouseID string `json:"warehouse_id"` + AuthDataJson []byte `json:"auth_data_json,omitempty"` } diff --git a/internal/marketplace/repository_db.go b/internal/marketplace/repository_db.go index 857f7c8..f79c203 100644 --- a/internal/marketplace/repository_db.go +++ b/internal/marketplace/repository_db.go @@ -24,5 +24,6 @@ func (r *dbRepository) GetMarketplaceByID(ctx context.Context, id int) (*Marketp BaseMarketplace: int(marketplace.BaseMarketplace), AuthData: marketplace.AuthData.String, WarehouseID: marketplace.WarehouseID.String, + AuthDataJson: marketplace.AuthDataJson, }, nil } diff --git a/internal/ozon/products/mapping/converter.go b/internal/ozon/products/mapping/converter.go index 7bbf3ff..32e5a5d 100644 --- a/internal/ozon/products/mapping/converter.go +++ b/internal/ozon/products/mapping/converter.go @@ -5,7 +5,7 @@ import ( proto "sipro-mps/api/generated/v1/ozon/products" ) -//go:generate go run github.com/jmattheis/goverter/cmd/goverter gen -g 'ignoreUnexported yes' . +//go:generate go run github.com/jmattheis/goverter/cmd/goverter gen -global "ignoreUnexported yes" . // goverter:converter // goverter:extend Int632ToInt64 diff --git a/internal/ozon/products/mapping/generated/generated.go b/internal/ozon/products/mapping/generated/generated.go index 30dfc06..53e4681 100644 --- a/internal/ozon/products/mapping/generated/generated.go +++ b/internal/ozon/products/mapping/generated/generated.go @@ -5,9 +5,8 @@ package generated import ( ozon "git.denco.store/fakz9/ozon-api-client/ozon" - products "sipro-mps/api/generated/v1/ozon/products" - ozon "git.denco.store/fakz9/ozon-api-client/ozon" + mapping "sipro-mps/internal/ozon/products/mapping" ) type ConverterImpl struct{} diff --git a/internal/ozon/products/repository_api.go b/internal/ozon/products/repository_api.go index e946a3e..2f4513d 100644 --- a/internal/ozon/products/repository_api.go +++ b/internal/ozon/products/repository_api.go @@ -85,7 +85,7 @@ func (a *apiRepository) GetAllProducts(ctx context.Context, marketplaceId int) ( if err != nil { return nil, err } - items := []OzonProduct{} + var items []OzonProduct productIdsChan := make(chan []int64) producsChan := make(chan []OzonProduct) errChan := make(chan error) diff --git a/internal/ozon/rate_limiter.go b/internal/ozon/rate_limiter.go index 9ab61f1..264339d 100644 --- a/internal/ozon/rate_limiter.go +++ b/internal/ozon/rate_limiter.go @@ -50,7 +50,7 @@ func (t *RateLimitTransport) RoundTrip(req *http.Request) (*http.Response, error waitTime, err := rateLimiterScript.Exec(ctx, *redis.Client, []string{clientId}, []string{ fmt.Sprintf("%d", now), fmt.Sprintf("%d", int64(windowSize)), - fmt.Sprintf("%d", 50), + fmt.Sprintf("%d", rps), }).ToInt64() if err != nil { return nil, fmt.Errorf("failed to execute rate limit script: %w", err) diff --git a/internal/redis/client.go b/internal/redis/client.go index 02c9833..75d2bb4 100644 --- a/internal/redis/client.go +++ b/internal/redis/client.go @@ -11,6 +11,7 @@ var Client *rueidis.Client func InitClient(ctx context.Context) error { var err error host := os.Getenv("REDIS_HOST") + //host := "redis" port := os.Getenv("REDIS_PORT") password := os.Getenv("REDIS_PASSWORD") diff --git a/internal/redis/lock.go b/internal/redis/lock.go new file mode 100644 index 0000000..b66d43c --- /dev/null +++ b/internal/redis/lock.go @@ -0,0 +1,29 @@ +package redis + +import ( + "github.com/redis/rueidis" + "github.com/redis/rueidis/rueidislock" + "os" +) + +var Locker *rueidislock.Locker + +func InitLocker() error { + redisAddr := os.Getenv("REDIS_ADDR") + password := os.Getenv("REDIS_PASSWORD") + locker, err := rueidislock.NewLocker(rueidislock.LockerOption{ + ClientOption: rueidis.ClientOption{InitAddress: []string{redisAddr}, Password: password}, + }) + if err != nil { + return err + } + Locker = &locker + return nil +} +func CloseLocker() { + if Locker != nil { + (*Locker).Close() + } + Locker = nil + +} diff --git a/internal/tasks/client/client.go b/internal/tasks/client/client.go new file mode 100644 index 0000000..f8f5c50 --- /dev/null +++ b/internal/tasks/client/client.go @@ -0,0 +1,25 @@ +package client + +import ( + "github.com/hibiken/asynq" + "sipro-mps/internal/config" +) + +var Client *asynq.Client + +// InitClient initializes the Asynq client with the provided Redis configuration. +func InitClient(redisConfig config.RedisConfig) { + client := asynq.NewClient(asynq.RedisClientOpt{ + Addr: redisConfig.Addr, + Password: redisConfig.Password, + }) + Client = client +} + +func CloseClient() { + if Client != nil { + if err := Client.Close(); err != nil { + panic(err) + } + } +} diff --git a/internal/tasks/server/server.go b/internal/tasks/server/server.go new file mode 100644 index 0000000..1cd3aec --- /dev/null +++ b/internal/tasks/server/server.go @@ -0,0 +1,39 @@ +package server + +import ( + "github.com/hibiken/asynq" + "github.com/jackc/pgx/v5/pgxpool" + "sipro-mps/internal/config" + "sipro-mps/internal/tasks/types" + "sipro-mps/internal/tasks/wb" +) + +type AsynqServer struct { + redisConfig *config.RedisConfig + dbpool *pgxpool.Pool +} + +func NewAsynqServer(redisConfig *config.RedisConfig, dbpool *pgxpool.Pool) *AsynqServer { + return &AsynqServer{ + redisConfig: redisConfig, + dbpool: dbpool, + } +} +func (s *AsynqServer) createMux() *asynq.ServeMux { + mux := asynq.NewServeMux() + + // Register task handlers here + mux.Handle(types.TypeWbFetchProducts, &wb.FetchProductsProcessor{Dbpool: s.dbpool}) + return mux +} + +func (s *AsynqServer) Run() { + srv := asynq.NewServer( + asynq.RedisClientOpt{Addr: s.redisConfig.Addr, Password: s.redisConfig.Password}, + asynq.Config{Concurrency: 10}, + ) + mux := s.createMux() + if err := srv.Run(mux); err != nil { + panic(err) + } +} diff --git a/internal/tasks/types/common.go b/internal/tasks/types/common.go new file mode 100644 index 0000000..b530688 --- /dev/null +++ b/internal/tasks/types/common.go @@ -0,0 +1,5 @@ +package types + +const ( + TypeWbFetchProducts = "wb:fetch_products" +) diff --git a/internal/tasks/types/wb.go b/internal/tasks/types/wb.go new file mode 100644 index 0000000..00454a3 --- /dev/null +++ b/internal/tasks/types/wb.go @@ -0,0 +1,19 @@ +package types + +import ( + "encoding/json" + "github.com/hibiken/asynq" + "time" +) + +type FetchProductsTask struct { + MarketplaceId int +} + +func NewFetchProductsTask(marketplaceId int) (*asynq.Task, error) { + payload, err := json.Marshal(&FetchProductsTask{MarketplaceId: marketplaceId}) + if err != nil { + return nil, err + } + return asynq.NewTask(TypeWbFetchProducts, payload, asynq.MaxRetry(2), asynq.Timeout(20*time.Minute)), nil +} diff --git a/internal/tasks/wb/wb.go b/internal/tasks/wb/wb.go new file mode 100644 index 0000000..f3f8f31 --- /dev/null +++ b/internal/tasks/wb/wb.go @@ -0,0 +1,65 @@ +package wb + +import ( + "context" + "encoding/json" + "fmt" + "github.com/hibiken/asynq" + "github.com/jackc/pgx/v5/pgxpool" + "github.com/samber/lo" + pb "sipro-mps/api/generated/v1/wb/products" + mp_repo "sipro-mps/internal/marketplace" + "sipro-mps/internal/redis" + "sipro-mps/internal/tasks/types" + wb_products_repo "sipro-mps/internal/wb/products" + conv "sipro-mps/internal/wb/products/mapping/generated" +) + +type FetchProductsProcessor struct { + Dbpool *pgxpool.Pool + wbRepo wb_products_repo.Repository +} + +func (p *FetchProductsProcessor) ProcessTask(ctx context.Context, task *asynq.Task) error { + var payload types.FetchProductsTask + if err := json.Unmarshal(task.Payload(), &payload); err != nil { + return asynq.SkipRetry + } + marketplaceRepo := mp_repo.NewDBRepository(p.Dbpool) + repo := wb_products_repo.NewAPIRepository(marketplaceRepo) + _, sellerId, err := repo.ParseMarketplace(ctx, payload.MarketplaceId) + if err != nil { + return fmt.Errorf("failed to parse marketplace %d: %w", payload.MarketplaceId, err) + } + locker := *redis.Locker + _, cancel, err := locker.TryWithContext(ctx, fmt.Sprintf("wb:products:marketplace:%s:lock", sellerId)) + if err != nil { + fmt.Printf("Failed to acquire lock for marketplace %s: %v\n", sellerId, err) + return asynq.SkipRetry + + } + fmt.Println("Working on marketplace", payload.MarketplaceId, "with seller ID", sellerId) + + defer cancel() + + redisKey := fmt.Sprintf("wb:products:%s", sellerId) + productsRaw, err := repo.GetAllProducts(ctx, payload.MarketplaceId) + if err != nil { + return fmt.Errorf("failed to fetch products for marketplace %d: %w", payload.MarketplaceId, err) + } + converter := conv.ConverterImpl{} + products := lo.Map(productsRaw, func(item wb_products_repo.WbProduct, _ int) *pb.Product { + return converter.ToProto(&item) + }) + redisClient := *redis.Client + productsJson, err := json.Marshal(products) + if err != nil { + return fmt.Errorf("failed to marshal products: %w", err) + } + err = redisClient.Do(ctx, redisClient.B().Set().Key(redisKey).Value(string(productsJson)).Build()).Error() + if err != nil { + return err + } + + return nil +} diff --git a/internal/wb/common.go b/internal/wb/common.go new file mode 100644 index 0000000..6368852 --- /dev/null +++ b/internal/wb/common.go @@ -0,0 +1,59 @@ +package wb + +import ( + "encoding/json" + "fmt" + "github.com/golang-jwt/jwt/v5" + "net/http" + "sipro-mps/internal/marketplace" + wbclient "sipro-mps/pkg/api/wb/client" + "time" +) + +type WbAuthData struct { + Token string `json:"token"` +} + +func NewWbAuthData(token string) WbAuthData { + return WbAuthData{ + Token: token, + } +} + +func DecodeWildberriesJwt(token []byte) (WbAuthData, jwt.MapClaims, error) { + var authData WbAuthData + err := json.Unmarshal(token, &authData) + if err != nil { + return authData, nil, fmt.Errorf("failed to unmarshal JWT: %w", err) + } + claims := jwt.MapClaims{} + _, _, err = jwt.NewParser().ParseUnverified(authData.Token, claims) + if err != nil { + return authData, nil, fmt.Errorf("invalid JWT: %w", err) + } + + return authData, claims, nil +} + +func GetClientFromMarketplace(mp *marketplace.Marketplace) (*wbclient.Client, error) { + + authData, claims, err := DecodeWildberriesJwt(mp.AuthDataJson) + if err != nil { + return nil, fmt.Errorf("failed to decode Wildberries JWT") + } + exp := claims["exp"].(float64) + // chec if token is expired, for now unix date + now := float64(time.Now().Unix()) + if exp < now { + return nil, fmt.Errorf("token is expired") + } + securityHandler := NewWildberriesSecurityHandler(authData.Token) + httpClient := &http.Client{ + Transport: NewRateLimitTransport(), + } + client, err := wbclient.NewClient("https://content-api.wildberries.ru", securityHandler, wbclient.WithClient(httpClient)) + if err != nil { + return nil, fmt.Errorf("failed to create Wildberries client: %w", err) + } + return client, nil +} diff --git a/internal/wb/products/adapter_grpc.go b/internal/wb/products/adapter_grpc.go new file mode 100644 index 0000000..0d50374 --- /dev/null +++ b/internal/wb/products/adapter_grpc.go @@ -0,0 +1,63 @@ +package products + +import ( + "fmt" + "github.com/samber/lo" + "google.golang.org/grpc" + pb "sipro-mps/api/generated/v1/wb/products" + "sipro-mps/internal/marketplace" +) + +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() + resultChan := make(chan []pb.Product) + errChan := make(chan error) + go a.repo.StreamAllProductsCache(ctx, int(req.MarketplaceId), resultChan, errChan) + for { + select { + case <-ctx.Done(): + fmt.Println("context done") + return ctx.Err() + case products, ok := <-resultChan: + if !ok { + fmt.Println("result channel closed") + return nil + } + resp := &pb.GetProductsResponse{ + Products: lo.Map(products, func(p pb.Product, _ int) *pb.Product { + return &p + }), + } + if err := stream.Send(resp); err != nil { + fmt.Println("error sending response", err) + return err + } + case err, ok := <-errChan: + if !ok { + return nil + } + if ok && err != nil { + fmt.Println("error in channel", err) + return err + } + } + + } +} diff --git a/internal/wb/products/entities.go b/internal/wb/products/entities.go new file mode 100644 index 0000000..0d54187 --- /dev/null +++ b/internal/wb/products/entities.go @@ -0,0 +1,9 @@ +package products + +import ( + pb "sipro-mps/api/generated/v1/wb/products" + "sipro-mps/pkg/api/wb/client" +) + +type WbProduct = api.ContentV2GetCardsListPostOKCardsItem +type PbProduct = pb.Product diff --git a/internal/wb/products/mapping/converter.go b/internal/wb/products/mapping/converter.go new file mode 100644 index 0000000..210d8ef --- /dev/null +++ b/internal/wb/products/mapping/converter.go @@ -0,0 +1,28 @@ +package mapping + +import wbclient "sipro-mps/pkg/api/wb/client" + +// import ( +// +// proto "sipro-mps/api/generated/v1/wb/products" +// internal "sipro-mps/internal/wb/products" +// wbclient "sipro-mps/pkg/api/wb/client" +// +// ) +// +// //go:generate go run github.com/jmattheis/goverter/cmd/goverter gen -global "ignoreUnexported yes" . +// +// // goverter:converter +// // goverter:extend OptIntToInt64 OptStringToString +// +// type Converter interface { +// // goverter:ignore state sizeCache unknownFields +// +// ToProto(details *internal.WbProduct) *proto.Product +// } +func OptIntToInt64(i wbclient.OptInt) int64 { + return int64(i.Value) +} +func OptStringToString(s wbclient.OptString) string { + return s.Value +} diff --git a/internal/wb/products/mapping/generated/generated.go b/internal/wb/products/mapping/generated/generated.go new file mode 100644 index 0000000..d685421 --- /dev/null +++ b/internal/wb/products/mapping/generated/generated.go @@ -0,0 +1,40 @@ +// Code generated by github.com/jmattheis/goverter, DO NOT EDIT. +//go:build !goverter + +package generated + +import ( + products "sipro-mps/api/generated/v1/wb/products" + mapping "sipro-mps/internal/wb/products/mapping" + client "sipro-mps/pkg/api/wb/client" +) + +type ConverterImpl struct{} + +func (c *ConverterImpl) ToProto(source *client.ContentV2GetCardsListPostOKCardsItem) *products.Product { + var pProductsProduct *products.Product + if source != nil { + var productsProduct products.Product + productsProduct.NmID = mapping.OptIntToInt64((*source).NmID) + productsProduct.SubjectID = mapping.OptIntToInt64((*source).SubjectID) + productsProduct.VendorCode = mapping.OptStringToString((*source).VendorCode) + if (*source).Sizes != nil { + productsProduct.Sizes = make([]*products.Product_Size, len((*source).Sizes)) + for i := 0; i < len((*source).Sizes); i++ { + productsProduct.Sizes[i] = c.apiContentV2GetCardsListPostOKCardsItemSizesItemToPProductsProduct_Size((*source).Sizes[i]) + } + } + pProductsProduct = &productsProduct + } + return pProductsProduct +} +func (c *ConverterImpl) apiContentV2GetCardsListPostOKCardsItemSizesItemToPProductsProduct_Size(source client.ContentV2GetCardsListPostOKCardsItemSizesItem) *products.Product_Size { + var productsProduct_Size products.Product_Size + if source.Skus != nil { + productsProduct_Size.Skus = make([]string, len(source.Skus)) + for i := 0; i < len(source.Skus); i++ { + productsProduct_Size.Skus[i] = source.Skus[i] + } + } + return &productsProduct_Size +} diff --git a/internal/wb/products/repository.go b/internal/wb/products/repository.go new file mode 100644 index 0000000..eaf3000 --- /dev/null +++ b/internal/wb/products/repository.go @@ -0,0 +1,13 @@ +package products + +import ( + "context" + "sipro-mps/internal/marketplace" +) + +type Repository interface { + GetAllProducts(ctx context.Context, marketplaceId int) ([]WbProduct, error) + StreamAllProducts(ctx context.Context, marketplaceId int, resultChan chan<- []WbProduct, errChan chan<- error) + StreamAllProductsCache(ctx context.Context, marketplaceId int, resultChan chan<- []PbProduct, errChan chan<- error) + ParseMarketplace(ctx context.Context, marketplaceId int) (*marketplace.Marketplace, string, error) +} diff --git a/internal/wb/products/repository_api.go b/internal/wb/products/repository_api.go new file mode 100644 index 0000000..d37f62b --- /dev/null +++ b/internal/wb/products/repository_api.go @@ -0,0 +1,224 @@ +package products + +import ( + "context" + "encoding/json" + "fmt" + "github.com/go-faster/errors" + "github.com/redis/rueidis" + "github.com/samber/lo" + pb "sipro-mps/api/generated/v1/wb/products" + "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/products/mapping/generated" + wbapi "sipro-mps/pkg/api/wb/client" +) + +const ( + maxRetries = 5 + maxProductsPerRequest = 100 +) + +type apiRepository struct { + marketplaceRepository marketplace.Repository +} + +func (a apiRepository) ParseMarketplace(ctx context.Context, marketplaceId int) (*marketplace.Marketplace, string, error) { + marketplaceByID, err := a.marketplaceRepository.GetMarketplaceByID(ctx, marketplaceId) + if err != nil { + return nil, "", err + } + _, claims, err := wb.DecodeWildberriesJwt(marketplaceByID.AuthDataJson) + if err != nil { + return nil, "", err + } + sellerId := claims["sid"].(string) + return marketplaceByID, sellerId, nil +} + +func fetchProducts( + ctx context.Context, + client *wbapi.Client, + sellerId string, + resultChan chan<- []WbProduct, + errChan chan<- error, +) { + defer close(resultChan) + defer close(errChan) + request := wbapi.ContentV2GetCardsListPostReq{} + request.Settings.SetTo(wbapi.ContentV2GetCardsListPostReqSettings{}) + + request.Settings.Value.Cursor.SetTo(wbapi.ContentV2GetCardsListPostReqSettingsCursor{}) + request.Settings.Value.Cursor.Value.Limit.SetTo(maxProductsPerRequest) + + request.Settings.Value.Filter.SetTo(wbapi.ContentV2GetCardsListPostReqSettingsFilter{}) + request.Settings.Value.Filter.Value.WithPhoto.SetTo(-1) + currentRetry := 0 + for { + response, err := client.ContentV2GetCardsListPost(ctx, &request, wbapi.ContentV2GetCardsListPostParams{Locale: wbapi.NewOptString("ru")}) + if err != nil { + currentRetry++ + if currentRetry >= maxRetries { + errChan <- fmt.Errorf("fetching product IDs: %w", err) + return + } + continue + } + currentRetry = 0 + + switch r := response.(type) { + case *wbapi.ContentV2GetCardsListPostOKHeaders: + err = wb.SyncRateLimitRemaining(ctx, sellerId, r.XRatelimitRemaining.Value) + if err != nil { + errChan <- fmt.Errorf("syncing rate limit: %w", err) + return + } + resultChan <- r.Response.Cards + if r.Response.Cursor.Value.Total.Value < maxProductsPerRequest { + return + } + request.Settings.Value.Cursor.Value.UpdatedAt.SetTo(r.Response.Cursor.Value.UpdatedAt.Value) + request.Settings.Value.Cursor.Value.NmID.SetTo(r.Response.Cursor.Value.NmID.Value) + case *wbapi.R429Headers: + err = wb.SetRateLimitRetry(ctx, sellerId, r.XRatelimitRetry.Value, r.XRatelimitLimit.Value, r.XRatelimitReset.Value) + if err != nil { + errChan <- fmt.Errorf("setting rate limit retry: %w", err) + return + } + default: + errChan <- fmt.Errorf("unexpected response type: %T", r) + return + } + } +} + +func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId int, resultChan chan<- []pb.Product, errChan chan<- error) { + defer close(resultChan) + defer close(errChan) + _, sellerId, err := a.ParseMarketplace(ctx, marketplaceId) + if err != nil { + errChan <- err + return + } + 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(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) { + marketplaceByID, sellerId, err := a.ParseMarketplace(ctx, marketplaceId) + fromMarketplace, err := wb.GetClientFromMarketplace(marketplaceByID) + if err != nil { + return nil, err + } + resultChan := make(chan []WbProduct) + errChan := make(chan error) + go fetchProducts(ctx, fromMarketplace, sellerId, resultChan, errChan) + + var products []WbProduct + isWaiting := true + for { + if !isWaiting { + break + } + select { + case err, ok := <-errChan: + if !ok { + isWaiting = false + continue + } + return nil, err + case newProducts, ok := <-resultChan: + if !ok { + isWaiting = false + } + products = append(products, newProducts...) + } + } + return products, nil +} + +func (a apiRepository) StreamAllProducts(ctx context.Context, marketplaceId int, resultChan chan<- []WbProduct, errChan chan<- error) { + marketplaceByID, sellerId, err := a.ParseMarketplace(ctx, marketplaceId) + if err != nil { + errChan <- err + return + } + fromMarketplace, err := wb.GetClientFromMarketplace(marketplaceByID) + if err != nil { + errChan <- err + return + } + go fetchProducts(ctx, fromMarketplace, sellerId, resultChan, errChan) +} + +func NewAPIRepository(marketplaceRepository marketplace.Repository) Repository { + return &apiRepository{ + marketplaceRepository: marketplaceRepository, + } +} diff --git a/internal/wb/rate_limiter.go b/internal/wb/rate_limiter.go new file mode 100644 index 0000000..9c7aa27 --- /dev/null +++ b/internal/wb/rate_limiter.go @@ -0,0 +1,170 @@ +package wb + +import ( + "context" + "encoding/json" + "fmt" + "github.com/redis/rueidis" + "net/http" + "sipro-mps/internal/redis" + "time" +) + +const ( + defaultBucketCapacity = 10 // max burst size + refillRate = 100.0 / 60000 // 300 requests per minute β†’ 1 token per 200ms + tokenTTLMillis = 60000 // Redis key TTL: 60s +) + +var tokenBucketScript = rueidis.NewLuaScript(` +local key = KEYS[1] +local now = tonumber(ARGV[1]) +local default_capacity = tonumber(ARGV[2]) +local refill_rate = tonumber(ARGV[3]) +local ttl = tonumber(ARGV[4]) + +-- Retry lock +local retry_key = key .. ":retry_until" +local retry_until = tonumber(redis.call("GET", retry_key)) +if retry_until and now < retry_until then + return retry_until - now +end + +-- Token Bucket +local capacity_key = key .. ":capacity" +local token_key = key .. ":tokens" +local time_key = key .. ":last_refill" + +local capacity = tonumber(redis.call("GET", capacity_key)) or default_capacity +local tokens = tonumber(redis.call("GET", token_key)) +local last_refill = tonumber(redis.call("GET", time_key)) + +if tokens == nil then tokens = capacity end +if last_refill == nil then last_refill = now end + +local elapsed = now - last_refill +local refill = elapsed * refill_rate +tokens = math.min(capacity, tokens + refill) +last_refill = now + +if tokens >= 1 then + tokens = tokens - 1 + redis.call("SET", token_key, tokens) + redis.call("SET", time_key, last_refill) + redis.call("PEXPIRE", token_key, ttl) + redis.call("PEXPIRE", time_key, ttl) + return 0 +else + local wait_time = math.ceil((1 - tokens) / refill_rate) + return wait_time +end +`) + +type RateLimitTransport struct { + http.RoundTripper +} + +func (t *RateLimitTransport) RoundTrip(req *http.Request) (*http.Response, error) { + ctx := req.Context() + + tokenString := req.Header.Get("Authorization") + authData := NewWbAuthData(tokenString) + authDataBytes, err := json.Marshal(authData) + if err != nil { + return nil, fmt.Errorf("failed to marshal Wildberries auth data: %w", err) + } + _, claims, err := DecodeWildberriesJwt(authDataBytes) + if err != nil { + return nil, fmt.Errorf("failed to decode Wildberries JWT: %w", err) + } + sellerId := claims["sid"].(string) + if sellerId == "" { + return nil, fmt.Errorf("sellerId is required in JWT claims") + } + now := time.Now().UnixMilli() + client := *redis.Client + + waitTime, err := tokenBucketScript.Exec(ctx, client, []string{sellerId}, []string{ + fmt.Sprintf("%d", now), + fmt.Sprintf("%d", defaultBucketCapacity), + fmt.Sprintf("%f", refillRate), + fmt.Sprintf("%d", tokenTTLMillis), + }).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) +} + +func SyncRateLimitRemaining(ctx context.Context, sellerId string, remaining int) error { + if sellerId == "" || remaining < 0 { + return fmt.Errorf("invalid sellerId or remaining") + } + now := time.Now().UnixMilli() + client := *redis.Client + + cmds := []rueidis.Completed{ + client.B().Set().Key(sellerId + ":capacity").Value(fmt.Sprintf("%d", defaultBucketCapacity)).Ex(time.Minute).Build(), + client.B().Set().Key(sellerId + ":tokens").Value(fmt.Sprintf("%d", remaining)).Ex(time.Minute).Build(), + client.B().Set().Key(sellerId + ":last_refill").Value(fmt.Sprintf("%d", now)).Ex(time.Minute).Build(), + } + + results := client.DoMulti(ctx, cmds...) + for _, res := range results { + if res.Error() != nil { + return fmt.Errorf("failed to sync rate limit: %w", res.Error()) + } + } + return nil +} + +func SetRateLimitRetry(ctx context.Context, sellerId string, retrySeconds int, limit int, resetSeconds int) error { + if sellerId == "" { + return fmt.Errorf("sellerId is required") + } + now := time.Now() + retryUntil := now.Add(time.Duration(retrySeconds) * time.Second).UnixMilli() + client := *redis.Client + + cmds := []rueidis.Completed{ + client.B().Set(). + Key(sellerId + ":retry_until"). + Value(fmt.Sprintf("%d", retryUntil)). + Px(time.Duration(retrySeconds+5) * time.Second).Build(), + } + + if limit > 0 { + cmds = append(cmds, client.B().Set(). + Key(sellerId+":capacity"). + Value(fmt.Sprintf("%d", limit)). + Ex(time.Hour).Build()) + } + + if resetSeconds > 0 { + resetAt := now.Add(time.Duration(resetSeconds) * time.Second) + fmt.Printf("Seller %s rate limit resets at %v (limit: %d)\n", sellerId, resetAt, limit) + } + + results := client.DoMulti(ctx, cmds...) + for _, res := range results { + if res.Error() != nil { + return fmt.Errorf("failed to set retry info: %w", res.Error()) + } + } + + return nil +} + +func NewRateLimitTransport() *RateLimitTransport { + return &RateLimitTransport{RoundTripper: http.DefaultTransport} +} diff --git a/internal/wb/security_handler.go b/internal/wb/security_handler.go new file mode 100644 index 0000000..293a379 --- /dev/null +++ b/internal/wb/security_handler.go @@ -0,0 +1,22 @@ +package wb + +import ( + "context" + wbclient "sipro-mps/pkg/api/wb/client" +) + +type WildberriesSecurityHandler struct { + ApiKey string +} + +func (sh WildberriesSecurityHandler) HeaderApiKey(ctx context.Context, operationName wbclient.OperationName, client *wbclient.Client) (wbclient.HeaderApiKey, error) { + return wbclient.HeaderApiKey{ + APIKey: sh.ApiKey, + Roles: nil, + }, nil +} +func NewWildberriesSecurityHandler(apiKey string) WildberriesSecurityHandler { + return WildberriesSecurityHandler{ + ApiKey: apiKey, + } +} diff --git a/internal/wb/types.go b/internal/wb/types.go new file mode 100644 index 0000000..c281d03 --- /dev/null +++ b/internal/wb/types.go @@ -0,0 +1 @@ +package wb diff --git a/pkg/api/wb/02-products.yaml b/pkg/api/wb/02-products.yaml new file mode 100644 index 0000000..7be7ba1 --- /dev/null +++ b/pkg/api/wb/02-products.yaml @@ -0,0 +1,5572 @@ +openapi: 3.0.1 +info: + title: Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌΠΈ + version: products + description: | +
+ Π£Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² бизнСс-кСйсах, ΠΌΠΎΠΆΠ½ΠΎ Π² инструкции ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌΠΈ +
+ + Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя: + 1. [Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov) ΠΈ [Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅](/openapi/work-with-products#tag/Kartochki-tovarov) ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²: Π² Ρ‚ΠΎΠΌ числС, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ [ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈ характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki) ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ [ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ²](/openapi/work-with-products#tag/Mediafajly). + 2. Настройку [ярлыков](/openapi/work-with-products#tag/Yarlyki) для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ поиска Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + 3. Установку [Ρ†Π΅Π½ ΠΈ скидок](/openapi/work-with-products#tag/Ceny-i-skidki). + 4. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ [остатками Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca) ΠΈ [складами](/openapi/work-with-products#tag/Sklady-prodavca), Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆ со склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + x-file-name: products +security: + - HeaderApiKey: [ ] +tags: + - name: ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + description: '' + - name: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: '' + - name: ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: '' + - name: ΠœΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ + description: '' + - name: Π―Ρ€Π»Ρ‹ΠΊΠΈ + description: '' + - name: Π¦Π΅Π½Ρ‹ ΠΈ скидки + description: '' + - name: Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: '' + - name: ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Π½Π° складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: '' +paths: + /content/v2/object/parent/all: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ поля ΠΎΡ‚Π²Π΅Ρ‚Π° `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + items: + type: object + properties: + name: + description: НазваниС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ + type: string + example: Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° + id: + description: ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ + type: integer + example: 479 + isVisible: + description: Π’ΠΈΠ΄Π΅Π½ Π½Π° сайтС + type: boolean + example: true + error: + description: Π€Π»Π°Π³ наличия ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/object/all: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Бписок ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + schema: + type: string + example: en + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π°: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + - name: name + in: query + schema: + type: string + example: Носки + description: Поиск ΠΏΠΎ названию ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° (Носки), поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ подстрокС, ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° любом ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… языков. + - name: limit + in: query + schema: + type: integer + example: 1000 + default: 30 + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², максимум 1000 + - name: offset + in: query + schema: + type: integer + example: 5000 + default: 0 + description: НомСр ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ + - name: parentID + in: query + schema: + type: integer + example: 1000 + description: ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: array + description: ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ + items: + type: object + properties: + subjectID: + type: integer + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + parentID: + type: integer + description: ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ + subjectName: + type: string + description: НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + parentName: + type: string + description: НазваниС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ + error: + type: boolean + description: Π€Π»Π°Π³ наличия ошибки + errorText: + type: string + description: ВСкст ошибки + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: string + example: + data: + - subjectID: 2560 + parentID: 479 + subjectName: 3D ΠΎΡ‡ΠΊΠΈ + parentName: Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° + - subjectID: 1152 + parentID: 858 + subjectName: 3D-ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ + parentName: ΠžΡ€Π³Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° + error: false + errorText: '' + additionalErrors: null + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /content/v2/object/charcs/{subjectId}: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π₯арактСристики ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). + +
+ Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: subjectId + in: path + required: true + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + schema: + type: integer + example: 105 + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: array + description: Π”Π°Π½Π½Ρ‹Π΅ + items: + type: object + properties: + charcID: + type: integer + description: ID характСристики + subjectName: + type: string + description: НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + subjectID: + type: integer + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + name: + type: string + description: НазваниС характСристики + required: + type: boolean + description: true - характСристику Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. false - характСристику Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ + unitName: + type: string + description: Π•Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния + maxCount: + type: integer + description: | + МаксимальноС ΠΊΠΎΠ»-Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ характСристикС. + Если 0, Ρ‚ΠΎ Π½Π΅Ρ‚ ограничСния. + popular: + description: Π₯арактСристика популярна Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (true - Π΄Π°, false - Π½Π΅Ρ‚) + type: boolean + charcType: + type: integer + description: Π’ΠΈΠΏ характСристики (1 ΠΈ 0 - строка ΠΈΠ»ΠΈ массив строк; 4 - число ΠΈΠ»ΠΈ массив чисСл) + error: + type: boolean + description: Π€Π»Π°Π³ наличия ошибки + errorText: + type: string + description: ВСкст ошибки + additionalErrors: + type: string + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + example: + data: + - charcID: 54337 + subjectName: ΠšΡ€ΠΎΡΡΠΎΠ²ΠΊΠΈ + subjectID: 105 + name: Π Π°Π·ΠΌΠ΅Ρ€ + required: false + unitName: см + maxCount: 0 + popular: false + charcType: 4 + error: false + errorText: '' + additionalErrors: null + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/colors: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π¦Π²Π΅Ρ‚ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + items: + type: object + properties: + name: + description: НаимСнованиС Ρ†Π²Π΅Ρ‚Π° + type: string + example: пСрсиковый ΠΌΠ΅Π»ΠΎΠΊ + parentName: + description: НаимСнованиС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° + type: string + example: ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/kinds: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Пол + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + description: Массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Ρ…Π°Ρ€-ΠΊΠΈ Пол + type: array + items: + type: string + example: ΠœΡƒΠΆΡΠΊΠΎΠΉ + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/countries: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π‘Ρ‚Ρ€Π°Π½Π° производства + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + items: + type: object + properties: + name: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики Π‘Ρ‚Ρ€Π°Π½Ρ‹ + type: string + example: Афганистан + fullName: + description: ПолноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ страны + type: string + example: Исламский Π­ΠΌΠΈΡ€Π°Ρ‚ Афганистан + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/seasons: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π‘Π΅Π·ΠΎΠ½ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + description: Массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Ρ…Π°Ρ€-ΠΊΠΈ Π‘Π΅Π·ΠΎΠ½ + type: array + items: + type: string + example: дСмисСзон + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/vat: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π‘Ρ‚Π°Π²ΠΊΠ° НДБ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: ru + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: string + error: + type: boolean + description: Π€Π»Π°Π³ наличия ошибки + errorText: + type: string + description: ВСкст ошибки + additionalErrors: + nullable: true + type: string + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + example: + data: + - '0' + - '10' + - '20' + - Π‘Π΅Π· НДБ + - '13' + error: false + errorText: '' + additionalErrors: null + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/directory/tnved: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: ВНВЭД-ΠΊΠΎΠ΄ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΠΈ характСристики + parameters: + - name: subjectID + in: query + required: true + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + schema: + type: integer + example: 105 + - name: search + in: query + description: Поиск ΠΏΠΎ ВНВЭД-ΠΊΠΎΠ΄Ρƒ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ°Ρ€Π΅ с `subjectID` + schema: + type: integer + example: 6106903000 + - name: locale + in: query + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π°: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + schema: + type: string + example: en + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + description: Π”Π°Π½Π½Ρ‹Π΅ + type: array + items: + type: object + properties: + tnved: + type: string + description: ВНВЭД-ΠΊΠΎΠ΄ + isKiz: + type: boolean + description: | + - `true` - ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ трСбуСтся + - `false` - ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ трСбуСтся + error: + type: boolean + description: Π€Π»Π°Π³ наличия ошибки + example: false + errorText: + type: string + description: ВСкст ошибки + additionalErrors: + nullable: true + type: string + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + example: + data: + - tnved: '6106903000' + isKiz: true + error: false + errorText: '' + additionalErrors: null + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/tags: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Бписок ярлыков + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π―Ρ€Π»Ρ‹ΠΊΠΈ + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + properties: + id: + description: Числовой ID ярлыка + type: integer + color: + description: Π¦Π²Π΅Ρ‚ ярлыка + type: string + name: + description: Имя ярлыка + type: string + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + example: + data: + - id: 1 + color: D1CFD7 + name: Sale + error: false + errorText: '' + additionalErrors: '' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/tag: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ярлыка + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΎΠ΄ΠΈΠ½ ярлык ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 15 ярлыков для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Максимальная Π΄Π»ΠΈΠ½Π° ярлыка β€” 15 символов. +
Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ ярлык ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ [спискС](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π―Ρ€Π»Ρ‹ΠΊΠΈ + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + color: + description: | + Π¦Π²Π΅Ρ‚ ярлыка. +
+
ДоступныС Ρ†Π²Π΅Ρ‚Π°:
+
D1CFD7 - сСрый
+
FEE0E0 - красный
+
ECDAFF - Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ
+
E4EAFF - синий
+
DEF1DD - Π·Π΅Π»Π΅Π½Ρ‹ΠΉ
+
FFECC7 - ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ
+
+ type: string + example: D1CFD7 + name: + description: Имя ярлыка + type: string + example: Sale + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseContentError6' + examples: + responseOK200: + $ref: '#/components/examples/responseOK200' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseBodyContentError400' + - $ref: '#/components/schemas/responseContentError4' + - $ref: '#/components/schemas/responseContentError6' + examples: + responseBodyContentError400: + $ref: '#/components/examples/responseBodyContentError400' + responseBody400LenName: + $ref: '#/components/examples/responseBody400LenName' + responseBodyLimitTag: + $ref: '#/components/examples/responseBodyLimitTag' + responseBodyNameNotExist: + $ref: '#/components/examples/responseBodyNameNotExist' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/tag/{id}: + servers: + - url: https://content-api.wildberries.ru + patch: + security: + - HeaderApiKey: [ ] + summary: ИзмСнСниС ярлыка + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ замСняСт Π΄Π°Π½Π½Ρ‹Π΅ ярлыка: имя ΠΈ Ρ†Π²Π΅Ρ‚. +
НовыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ [спискС](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π―Ρ€Π»Ρ‹ΠΊΠΈ + parameters: + - name: id + in: path + schema: + type: integer + example: 1 + description: Числовой ID ярлыка + required: true + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + color: + description: Π¦Π²Π΅Ρ‚ ярлыка + type: string + example: D1CFD7 + name: + description: Имя ярлыка + type: string + example: Sale + responses: + '200': + description: УспСшно + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseContentError6' + - $ref: '#/components/schemas/responseContentError4' + examples: + responseOK200: + $ref: '#/components/examples/responseOK200' + responseNotFound200: + $ref: '#/components/examples/responseNotFound200' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseBodyContentError400' + - $ref: '#/components/schemas/responseContentError4' + examples: + responseBodyContentError400: + $ref: '#/components/examples/responseBodyContentError400' + responseBody400LenName: + $ref: '#/components/examples/responseBody400LenName' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + delete: + security: + - HeaderApiKey: [ ] + summary: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ярлыка + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт ярлык ΠΈΠ· [списка ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π―Ρ€Π»Ρ‹ΠΊΠΈ + parameters: + - name: id + in: path + schema: + type: integer + example: 1 + description: Числовой ID ярлыка + required: true + responses: + '200': + description: УспСшно + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseContentError6' + - $ref: '#/components/schemas/responseContentError5' + examples: + responseOK200: + $ref: '#/components/examples/responseOK200' + responseNotFound200Del: + $ref: '#/components/examples/responseNotFound200Del' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseBodyContentError400' + - $ref: '#/components/schemas/responseContentError5' + examples: + responseBodyContentError400: + $ref: '#/components/examples/responseBodyContentError400' + responseBodyTagNotExist: + $ref: '#/components/examples/responseBodyTagNotExist' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/tag/nomenclature/link: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ярлыками Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+ ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ удаляСтся ΠΈΠ· [списка ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π―Ρ€Π»Ρ‹ΠΊΠΈ + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + nmID: + description: Артикул WB + type: integer + tagsIDs: + description: | + Массив числовых ID ярлыков.
+ Π§Ρ‚ΠΎ Π±Ρ‹ ΡΠ½ΡΡ‚ΡŒ ярлыки с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ пустой массив.
+ Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ярлыки ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² запросС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ярлыки ΠΈ ярлыки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + type: array + items: + type: integer + description: Числовой ID ярлыка. + example: + nmID: 179891389 + tagsIDs: + - 123456 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseContentError6' + examples: + responseOK200: + $ref: '#/components/examples/responseOK200' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseContentError4' + examples: + IncorrectRequest4: + $ref: '#/components/examples/IncorrectRequest4' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/get/cards/list: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + summary: Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | +
+ ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +
+ + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + +
+ Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. +
+ + Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + +
    +
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +
    +                {
    +                  "settings": {                      
    +                    "cursor": {
    +                      "limit": 100
    +                    },
    +                    "filter": {
    +                      "withPhoto": -1
    +                    }
    +                  }
    +                }
    +
  2. +
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +
  6. +
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса cursor.
  8. +
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ parameters: + - name: locale + in: query + schema: + type: string + example: ru + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `name`, `value` ΠΈ `object`: \n - `ru` β€” русский\n - `en` β€” английский\n - `zh` β€” китайский\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС. \n" + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + settings: + type: object + description: Настройки + properties: + sort: + description: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки + type: object + properties: + ascending: + type: boolean + description: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полю **updatedAt** (`false` - ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, `true` - ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ) + filter: + description: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ + type: object + properties: + withPhoto: + type: integer + description: "Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ\_Ρ„ΠΎΡ‚ΠΎ:\n \n * `0`\_β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π· Ρ„ΠΎΡ‚ΠΎ\n * `1`\_β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ с\_Ρ„ΠΎΡ‚ΠΎ\n * `-1`\_β€” всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\n" + textSearch: + type: string + description: Поиск ΠΏΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ WB, Π±Π°Ρ€ΠΊΠΎΠ΄Ρƒ + tagIDs: + type: array + description: Поиск ΠΏΠΎ ID ярлыков + items: + type: integer + allowedCategoriesOnly: + description: "Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. `true` - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅, `false` - всС. НС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС" + type: boolean + objectIDs: + type: array + description: Поиск ΠΏΠΎ id ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² + items: + type: integer + brands: + type: array + description: Поиск ΠΏΠΎ Π±Ρ€Π΅Π½Π΄Π°ΠΌ + items: + type: string + imtID: + description: Поиск ΠΏΠΎ ID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: integer + cursor: + description: | + ΠšΡƒΡ€ΡΠΎΡ€ + type: object + properties: + limit: + type: integer + description: Бколько ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ + updatedAt: + type: string + nmID: + type: integer + description: Артикул WB послСднСй ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ + example: + settings: + sort: + ascending: false + filter: + textSearch: '4603743187500888' + allowedCategoriesOnly: true + tagIDs: + - 345 + - 415 + objectIDs: + - 235 + - 67 + brands: + - ΡƒΠ»Π»Ρƒ + - EkkE + imtID: 328632 + withPhoto: -1 + cursor: + updatedAt: '2023-12-06T11:17:00.96577Z' + nmID: 370870300 + limit: 11 + responses: + '200': + description: УспСшно + headers: + X-Ratelimit-Remaining: + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ + schema: + type: integer + example: 99 + content: + application/json: + schema: + type: object + properties: + cards: + type: array + description: Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + items: + type: object + properties: + nmID: + type: integer + description: Артикул WB + imtID: + type: integer + description: ID ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
Π•Π΄ΠΈΠ½ для всСх Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»ΠΎΠ² WB ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
Π•ΡΡ‚ΡŒ Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° Π½Π΅ объСдинСна Π½ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ + nmUUID: + type: string + format: uuid + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ тСхничСский ID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + subjectID: + type: integer + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + subjectName: + type: string + description: НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + brand: + type: string + description: Π‘Ρ€Π΅Π½Π΄ + title: + type: string + description: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + description: + type: string + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° + needKiz: + description: | + ВрСбуСтся Π»ΠΈ [ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ](https://чСстныйзнак.Ρ€Ρ„/) для этого Ρ‚ΠΎΠ²Π°Ρ€Π° +
+ * `false` β€” Π½Π΅ трСбуСтся +
+ * `true` β€” трСбуСтся + type: boolean + photos: + type: array + description: Массив Ρ„ΠΎΡ‚ΠΎ + items: + type: object + properties: + big: + description: URL Ρ„ΠΎΡ‚ΠΎ `900Ρ…1200` + type: string + c246x328: + description: URL Ρ„ΠΎΡ‚ΠΎ `248Ρ…328` + type: string + c516x688: + description: URL Ρ„ΠΎΡ‚ΠΎ `516Ρ…688` + type: string + square: + description: URL Ρ„ΠΎΡ‚ΠΎ `600Ρ…600` + type: string + tm: + description: URL Ρ„ΠΎΡ‚ΠΎ `75Ρ…100` + type: string + video: + type: string + description: URL Π²ΠΈΠ΄Π΅ΠΎ + dimensions: + description: Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³ + type: object + properties: + length: + type: integer + description: Π”Π»ΠΈΠ½Π°, см + width: + type: integer + description: Π¨ΠΈΡ€ΠΈΠ½Π°, см + height: + type: integer + description: Высота, см + weightBrutto: + type: number + description: ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3 + isValid: + type: boolean + description: | + ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π³Π°Π±Π°Ρ€ΠΈΡ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°: + + - `true` β€” Π½Π΅ выявлСна. `"isValid":true` Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) `"isValid":true` Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… значСниях, ΠΊΡ€ΠΎΠΌΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…. + + - `false` β€” ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π³Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ срСдних ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ). РСкомСндуСтся ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° Π² ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ **Π² сантимСтрах**. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π² Ρ‚ΠΎΠΌ числС начислСниС логистики ΠΈ хранСния, ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Логистика ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ β€” ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°ΠΌ. Π’Π°ΠΊΠΆΠ΅ `"isValid":false` возвращаСтся ΠΏΡ€ΠΈ отсутствии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ любой стороны. + characteristics: + type: array + description: Π₯арактСристики + items: + type: object + properties: + id: + type: integer + description: ID характСристики + name: + type: string + description: НазваниС характСристики + value: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° характСристики + sizes: + type: array + description: Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° + items: + type: object + properties: + chrtID: + type: integer + description: Числовой ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° WB + techSize: + type: string + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (А, XXL, 57 ΠΈ Π΄Ρ€.) + wbSize: + type: string + description: Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + skus: + type: array + description: Π‘Π°Ρ€ΠΊΠΎΠ΄ Ρ‚ΠΎΠ²Π°Ρ€Π° + items: + type: string + example: 12345Ejf5 + tags: + description: Π―Ρ€Π»Ρ‹ΠΊΠΈ + type: array + items: + type: object + properties: + id: + type: integer + description: ID ярлыка + name: + type: string + description: НазваниС ярлыка + color: + type: string + description: | + Π¦Π²Π΅Ρ‚ ярлыка +
+
ДоступныС Ρ†Π²Π΅Ρ‚Π°:
+
D1CFD7 - сСрый
+
FEE0E0 - красный
+
ECDAFF - Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ
+
E4EAFF - синий
+
DEF1DD - Π·Π΅Π»Π΅Π½Ρ‹ΠΉ
+
FFECC7 - ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ
+
+ createdAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя создания + updatedAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя измСнСния + cursor: + type: object + description: ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€ + properties: + updatedAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + nmID: + type: integer + description: Артикул WB, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + total: + type: integer + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + example: + cards: + - nmID: 12345678 + imtID: 123654789 + nmUUID: 01bda0b1-5c0b-736c-b2be-d0a6543e9be + subjectID: 7771 + subjectName: AKF систСмы + vendorCode: wb7f6mumjr1 + brand: ВСст + title: ВСст-систСма + description: ВСстовоС описаниС + needKiz: false + photos: + - big: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/big/1.webp + c246x328: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/c246x328/1.webp + c516x688: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/c516x688/1.webp + square: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/square/1.webp + tm: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/tm/1.webp + video: https://videonme-basket-12.wbbasket.ru/vol137/part22557/225577433/hls/1440p/index.m3u8 + dimensions: + length: 55 + width: 40 + height: 15 + weightBrutto: 6.24 + isValid: false + characteristics: + - id: 14177449 + name: Π¦Π²Π΅Ρ‚ + value: + - красно-сирСнСвый + sizes: + - chrtID: 316399238 + techSize: '0' + skus: + - '987456321654' + tags: + - id: 592569 + name: ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ + color: D1CFD7 + createdAt: '2023-12-06T11:17:00.96577Z' + updatedAt: '2023-12-06T11:17:00.96577Z' + cursor: + updatedAt: '2023-12-06T11:17:00.96577Z' + nmID: 123654123 + total: 1 + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + plain/text: + example: Request body can not be decoded + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/error/list: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Бписок нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ошибками + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ошибки, с описаниСм этих ошибок. + +
+ Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + parameters: + - name: locale + in: query + schema: + type: string + example: en + description: "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Ρ‹Π±ΠΎΡ€Π° языка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° (для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдусмотрСна ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ).\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС.\n" + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + object: + description: ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создавалась ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° + type: string + example: Π‘Π»ΡƒΠ·ΠΊΠΈ + vendorCode: + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + type: string + example: '6000000001' + updateAt: + description: Π”Π°Ρ‚Π° ΠΈ врСмя запроса Π½Π° созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: string + example: '2022-06-15T14:37:13Z' + errors: + description: Бписок ошибок, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ обработался запрос Π½Π° созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: array + items: + type: string + example: Поля Рос. Ρ€Π°Π·ΠΌΠ΅Ρ€, Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ для заполнСния + objectID: + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + type: integer + example: 41 + error: + description: Π€Π»Π°Π³ ошибки. + type: boolean + example: false + errorText: + description: ОписаниС ошибки. + type: string + example: '' + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + type: string + example: '' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/update: + servers: + - url: https://content-api.wildberries.ru + post: + tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + summary: Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + +
+ ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. +
+ + НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+ Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +

+ Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +
+ requestBody: + content: + application/json: + schema: + type: array + items: + type: object + required: + - nmID + - vendorCode + - sizes + properties: + nmID: + type: integer + description: Артикул WB + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + brand: + type: string + description: Π‘Ρ€Π΅Π½Π΄ + title: + type: string + description: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + maxLength: 60 + description: + type: string + description: | + ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ МаксимальноС количСство символов зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries.ru/help-center/article/A-113#описаниС) Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² + dimensions: + description: | + Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого Ρ‚ΠΎΠ²Π°Ρ€Π° + type: object + properties: + length: + type: integer + description: Π”Π»ΠΈΠ½Π°, см + width: + type: integer + description: Π¨ΠΈΡ€ΠΈΠ½Π°, см + height: + type: integer + description: Высота, см + weightBrutto: + type: number + description: ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3 + characteristics: + description: Π₯арактСристики Ρ‚ΠΎΠ²Π°Ρ€Π° + type: array + items: + type: object + properties: + id: + type: integer + description: ID характСристики + value: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° характСристики + sizes: + type: array + description: | + Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ Для Π±Π΅Π·Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° всё Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ массив Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (wbSize ΠΈ techSize), Π½ΠΎ с Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ + items: + type: object + properties: + chrtID: + type: integer + description: | + ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° WB
+ ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½ ΠΊ заполнСнию для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ Для добавляСмых Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅ указываСтся + techSize: + type: string + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, S, 45) + wbSize: + type: string + description: Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + skus: + type: array + items: + type: string + description: Π‘Π°Ρ€ΠΊΠΎΠ΄Ρ‹ + example: + - nmID: 11111111 + vendorCode: wbiz72wmro + brand: '' + title: Π‘Π²ΠΈΡ‚Π΅Ρ€ ТСнский овСрсайз с Π³ΠΎΡ€Π»ΠΎΠΌ + description: '12345' + dimensions: + length: 35 + width: 40 + height: 15 + weightBrutto: 3 + characteristics: + - id: 14177450 + value: + - Ρ…Π»ΠΎΠΏΠΎΠΊ 50% Π°ΠΊΡ€ΠΈΠ» 50% + - id: 50 + value: + - свободный ΠΊΡ€ΠΎΠΉ + sizes: + - chrtID: 12345678 + techSize: ONE SIZE + wbSize: 78-90 + skus: + - '123487653460134' + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseCardCreate' + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '413': + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросС + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки + detail: + type: string + description: Π”Π΅Ρ‚Π°Π»ΠΈ ошибки + code: + type: string + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки + requestId: + type: string + description: Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса + origin: + type: string + description: ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB + status: + type: number + description: HTTP статус-ΠΊΠΎΠ΄ + statusText: + type: string + description: Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π° + example: + title: request body too long + detail: https://openapi.wildberries.ru/content/api/ru/ + code: 71d3de1b-001e-488f-bbf5-55c31254fbeb + requestId: MN8usr6RfrzWHZfucSvNgb + origin: s2s-api-auth-content + status: 413 + statusText: Request Entity Too Large + '429': + $ref: '#/components/responses/429' + /content/v2/cards/moveNm: + servers: + - url: https://content-api.wildberries.ru + post: + tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + summary: ОбъСдинСниС ΠΈ Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈ Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΌΠΈ, Ссли Ρƒ Π½ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ imtID. +

+ Для объСдинСния ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² сдСлайтС запрос **с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ** `imtID`. МоТно ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+ Для Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² сдСлайтС запрос **Π±Π΅Π· указания** `imtID`. Для Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ сгСнСрированы Π½ΠΎΠ²Ρ‹Π΅ `imtID`. +

+ Если Π²Ρ‹ Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколько ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², эти ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ `imtID`.
+ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ `imtID`, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° Π·Π° запрос.
+
+ ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб. + +
+ ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌΠΈ. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/requestMoveNmsImtConn' + - $ref: '#/components/schemas/requestMoveNmsImtDisconn' + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseCardCreate' + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/responseContentError1' + - $ref: '#/components/schemas/responseCardCreate' + - $ref: '#/components/schemas/responseIncorrectDate' + examples: + responseExceededLimit: + $ref: '#/components/examples/responseExceededLimit' + responseCombining: + $ref: '#/components/examples/responseCombining' + responseIncorrectRequestFormat: + $ref: '#/components/examples/responseIncorrectRequestFormat' + responseNonExistentNmId: + $ref: '#/components/examples/responseNonExistentNmId' + responseNonExistentImt: + $ref: '#/components/examples/responseNonExistentImt' + responseCardCreate1: + $ref: '#/components/examples/responseCardCreate1' + responseDuplicateRequests: + $ref: '#/components/examples/responseDuplicateRequests' + responseAllCardsInSameGroup: + $ref: '#/components/examples/responseAllCardsInSameGroup' + responseIncorrectBeginDate: + $ref: '#/components/examples/responseIncorrectBeginDate' + responseIncorrectEndDate: + $ref: '#/components/examples/responseIncorrectEndDate' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseCardCreate' + '413': + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросС + content: + application/json: + schema: + type: string + examples: + BodySizeExceedsTheGivenLimit: + $ref: '#/components/examples/BodySizeExceedsTheGivenLimit' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/delete/trash: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). + +
+ ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. +
+ + ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+ ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + nmIDs: + description: Артикул WB (max. 1000) + type: array + items: + type: integer + example: + nmIDs: + - 123456789 + - 987654321 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/recover: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: ВосстановлСниС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + +
+ ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + nmIDs: + description: Артикул WB (max. 1000) + type: array + items: + type: integer + example: + nmIDs: + - 123456789 + - 987654321 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/get/cards/trash: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ + description: | +
+ ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +
+ + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+ + Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + +
    +
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +
    +                {
    +                  "settings": {                      
    +                    "cursor": {
    +                      "limit": 100
    +                    },
    +                    "filter": {
    +                      "withPhoto": -1
    +                    }
    +                  }
    +                }
    +
  2. +
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +
  6. +
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса cursor.
  8. +
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + parameters: + - name: locale + in: query + schema: + type: string + enum: + - ru + - en + - zh + description: "Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `name`, `value` ΠΈ `object`: `ru`, `en`, `zh`.\n\nНС\_ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²\_пСсочницС\n" + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + settings: + type: object + description: Настройки + properties: + sort: + description: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки + type: object + properties: + ascending: + type: boolean + description: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ `trashedAt` (`false` - ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, `true` - ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ) + cursor: + description: ΠšΡƒΡ€ΡΠΎΡ€ + type: object + properties: + limit: + type: integer + description: Бколько ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ + filter: + description: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ + type: object + properties: + textSearch: + type: string + description: Поиск ΠΏΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ WB, Π±Π°Ρ€ΠΊΠΎΠ΄Ρƒ. + example: + settings: + sort: + ascending: false + filter: + textSearch: '4603743187500888' + cursor: + trashedAt: '2023-12-06T11:17:00.96577Z' + nmID: 370870300 + limit: 11 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + cards: + description: Массив ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + type: array + items: + type: object + properties: + nmID: + type: integer + description: Артикул WB + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + subjectID: + type: integer + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + subjectName: + type: string + description: НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + photos: + type: array + description: Массив Ρ„ΠΎΡ‚ΠΎ + items: + type: object + properties: + big: + description: URL Ρ„ΠΎΡ‚ΠΎ `900Ρ…1200` + type: string + c246x328: + description: URL Ρ„ΠΎΡ‚ΠΎ `248Ρ…328` + type: string + c516x688: + description: URL Ρ„ΠΎΡ‚ΠΎ `516Ρ…688` + type: string + square: + description: URL Ρ„ΠΎΡ‚ΠΎ `600Ρ…600` + type: string + tm: + description: URL Ρ„ΠΎΡ‚ΠΎ `75Ρ…100` + type: string + video: + type: string + description: URL Π²ΠΈΠ΄Π΅ΠΎ + sizes: + type: array + description: Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² + items: + type: object + properties: + chrtID: + type: integer + description: ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π° + techSize: + type: string + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + wbSize: + type: string + description: Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + skus: + type: array + description: Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² + items: + type: string + example: 12345Ejf5 + dimensions: + type: object + description: Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³ + properties: + length: + type: integer + description: Π”Π»ΠΈΠ½Π°, см + width: + type: integer + description: Π¨ΠΈΡ€ΠΈΠ½Π°, см + height: + type: integer + description: Высота, см + weightBrutto: + type: number + description: ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3 + isValid: + type: boolean + description: | + ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π³Π°Π±Π°Ρ€ΠΈΡ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°: + + - `true` β€” Π½Π΅ выявлСна. `"isValid":true` Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) `"isValid":true` Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… значСниях, ΠΊΡ€ΠΎΠΌΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…. + + - `false` β€” ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π³Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ срСдних ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ). РСкомСндуСтся ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° Π² ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ **Π² сантимСтрах**. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π² Ρ‚ΠΎΠΌ числС начислСниС логистики ΠΈ хранСния, ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Логистика ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ β€” ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°ΠΌ. Π’Π°ΠΊΠΆΠ΅ `"isValid":false` возвращаСтся ΠΏΡ€ΠΈ отсутствии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ любой стороны. + characteristics: + type: array + description: Π₯арактСристики + items: + type: object + properties: + id: + type: integer + description: ID характСристики + name: + type: string + description: НазваниС характСристики + value: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° характСристики + createdAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя создания + trashedAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя помСщСния Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ + cursor: + type: object + description: ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€ + properties: + trashedAt: + type: string + description: Π”Π°Ρ‚Π° ΠΈ врСмя, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + nmID: + type: integer + description: Артикул WB, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + total: + type: integer + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + example: + cards: + - nmID: 1234567 + vendorCode: wb5xsy5ftj + subjectID: 1436 + subjectName: Π’Π΅Π΄Ρ€Π° хозяйствСнныС + photos: + - big: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/big/1.webp + c246x328: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/c246x328/1.webp + c516x688: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/c516x688/1.webp + square: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/square/1.webp + tm: https://basket-10.wbbasket.ru/vol1592/part159206/159206280/images/tm/1.webp + video: https://videonme-basket-12.wbbasket.ru/vol137/part22557/225577433/hls/1440p/index.m3u8 + sizes: + - chrtID: 111111111 + techSize: '0' + skus: + - xxxxxxxxxxxx + dimensions: + length: 35 + width: 40 + height: 15 + weightBrutto: 2.9 + isValid: false + createdAt: '2023-12-05T14:55:09.323462Z' + trashedAt: '2023-12-06T10:57:42.193028Z' + cursor: + trashedAt: '2023-12-06T10:57:42.193028Z' + nmID: 194128521 + total: 1 + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + plain/text: + example: Request body can not be decoded + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/limits: + servers: + - url: https://content-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + summary: Π›ΠΈΠΌΠΈΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+ + Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: + + > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + + Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + freeLimits: + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ бСсплатных Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² + type: integer + paidLimits: + description: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ»Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² + type: integer + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: string + nullable: true + example: + data: + freeLimits: 1500 + paidLimits: 10 + error: false + errorText: '' + additionalErrors: null + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/barcodes: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: ГСнСрация Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +
+ tags: + - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + count: + description: Кол-Π²ΠΎ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, максимальноС доступноС количСство Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ - `5 000` + type: integer + example: 100 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + description: Массив сгСнСрированных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² + type: array + items: + type: string + example: '5032781145187' + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ОписаниС ошибки + type: string + example: '' + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: string + example: '' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError403' + '429': + $ref: '#/components/responses/429' + /content/v2/cards/upload: + servers: + - url: https://content-api.wildberries.ru + post: + tags: + - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + summary: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
\n\n
\n Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².\n
\n\nΠ“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`.\n

\nΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
\nΠ’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ\_Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎ\_30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²\_ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
\nЕсли ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get).\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + requestBody: + content: + application/json: + schema: + type: array + items: + type: object + required: + - subjectID + - variants + properties: + subjectID: + type: integer + description: ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° + variants: + description: | + Массив Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + type: array + items: + type: object + required: + - vendorCode + properties: + brand: + type: string + description: Π‘Ρ€Π΅Π½Π΄ + title: + type: string + description: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + maxLength: 60 + description: + type: string + description: | + ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ МаксимальноС количСство символов зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries.ru/help-center/article/A-113#описаниС) Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + dimensions: + description: | + Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса + type: object + properties: + length: + type: integer + description: Π”Π»ΠΈΠ½Π°, см + width: + type: integer + description: Π¨ΠΈΡ€ΠΈΠ½Π°, см + height: + type: integer + description: Высота, см + weightBrutto: + type: number + description: ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3 + sizes: + type: array + description: | + Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° (ΠΎΠ±ΡƒΠ²ΡŒ, ΠΎΠ΄Π΅ΠΆΠ΄Π° ΠΈ Π΄Ρ€.), сгСнСрируСтся автоматичСски с `techSize` = "A", `wbSize` = "1" ΠΈ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ + items: + type: object + properties: + techSize: + type: string + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, 45) + wbSize: + type: string + description: Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + price: + type: integer + description: Π¦Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° + skus: + type: array + items: + type: string + description: Π‘Π°Ρ€ΠΊΠΎΠ΄. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски + characteristics: + type: array + description: Массив характСристик Ρ‚ΠΎΠ²Π°Ρ€Π° + items: + type: object + required: + - id + - value + properties: + id: + type: integer + description: ID характСристики + value: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° характСристики + examples: + creatingOneCard: + $ref: '#/components/examples/creatingOneCard' + creatingMergedCards: + $ref: '#/components/examples/creatingMergedCards' + creatingGroupOfIndividualCards: + $ref: '#/components/examples/creatingGroupOfIndividualCards' + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseCardCreate' + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + examples: + InvalidRequestFormatContent: + $ref: '#/components/examples/InvalidRequestFormatContent' + CardCreatedWithoutVendorCode: + $ref: '#/components/examples/CardCreatedWithoutVendorCode' + CardsVendorCodeUsedInOtherCards: + $ref: '#/components/examples/CardsVendorCodeUsedInOtherCards' + ThisCategoryDoesNotExist: + $ref: '#/components/examples/ThisCategoryDoesNotExist' + '401': + $ref: '#/components/responses/401' + '413': + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросС + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки + detail: + type: string + description: Π”Π΅Ρ‚Π°Π»ΠΈ ошибки + code: + type: string + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки + requestId: + type: string + description: Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса + origin: + type: string + description: ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB + status: + type: number + description: HTTP статус-ΠΊΠΎΠ΄ + statusText: + type: string + description: Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π° + example: + title: request body too long + detail: https://openapi.wildberries.ru/content/api/ru/ + code: 71d3de1b-001e-488f-bbf5-55c31254fbeb + requestId: MN8usr6RfrzWHZfucSvNgb + origin: s2s-api-auth-content + status: 413 + statusText: Request Entity Too Large + '429': + $ref: '#/components/responses/429' + /content/v2/cards/upload/add: + servers: + - url: https://content-api.wildberries.ru + post: + tags: + - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + summary: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с присоСдинСниСм + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. + + Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +

+ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +
+ requestBody: + content: + application/json: + schema: + type: object + properties: + imtID: + type: integer + description: | + `imtID` ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ присоСдиняСтся ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° + cardsToAdd: + description: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° присоСдиняСмой ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: array + items: + type: object + required: + - vendorCode + properties: + brand: + type: string + description: Π‘Ρ€Π΅Π½Π΄ + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + title: + type: string + description: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + maxLength: 60 + description: + type: string + description: | + ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ МаксимальноС количСство символов зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries.ru/help-center/article/A-113#описаниС) Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² + dimensions: + description: | + Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого Ρ‚ΠΎΠ²Π°Ρ€Π°
+ Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса + type: object + properties: + length: + type: integer + description: Π”Π»ΠΈΠ½Π°, см + width: + type: integer + description: Π¨ΠΈΡ€ΠΈΠ½Π°, см + height: + type: integer + description: Высота, см + weightBrutto: + type: number + description: ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3 + sizes: + type: array + description: | + Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° (ΠΎΠ±ΡƒΠ²ΡŒ, ΠΎΠ΄Π΅ΠΆΠ΄Π° ΠΈ Π΄Ρ€.), сгСнСрируСтся автоматичСски с `techSize` = "A", `wbSize` = "1" ΠΈ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ + items: + type: object + properties: + techSize: + type: string + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, 45) + wbSize: + type: string + description: Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + price: + type: integer + description: Π¦Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° + skus: + type: array + items: + type: string + description: Π‘Π°Ρ€ΠΊΠΎΠ΄. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски + characteristics: + type: array + description: Массив характСристик Ρ‚ΠΎΠ²Π°Ρ€Π° + items: + type: object + required: + - id + - value + properties: + id: + type: integer + description: ID характСристики + value: + description: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° характСристики + example: + imtID: 987654321 + cardsToAdd: + - vendorCode: myVariant1 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 9 + width: 6 + height: 3 + weightBrutto: 0.893 + characteristics: + - id: 12 + value: + - Russian flag + - id: 25471 + value: 1300 + - id: 14177449 + value: + - blue + sizes: + - skus: + - '12345678' + - vendorCode: myVariant2 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 8 + width: 8 + height: 8 + weightBrutto: 1.04 + characteristics: + - id: 12 + value: + - Russian flag + - id: 25471 + value: 1300 + - id: 14177449 + value: + - blue + sizes: + - skus: + - '222222222222' + responses: + '200': + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/responseCardCreate' + example: + data: null + error: false + errorText: '' + additionalErrors: { } + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/responseBodyContentError400' + examples: + InvalidRequestFormatContent: + $ref: '#/components/examples/InvalidRequestFormatContent' + CardCreatedWithoutVendorCode: + $ref: '#/components/examples/CardCreatedWithoutVendorCode' + CardsVendorCodeUsedInOtherCards: + $ref: '#/components/examples/CardsVendorCodeUsedInOtherCards' + ThisCategoryDoesNotExist: + $ref: '#/components/examples/ThisCategoryDoesNotExist' + '401': + $ref: '#/components/responses/401' + '413': + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросС + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки + detail: + type: string + description: Π”Π΅Ρ‚Π°Π»ΠΈ ошибки + code: + type: string + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки + requestId: + type: string + description: Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса + origin: + type: string + description: ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB + status: + type: number + description: HTTP статус-ΠΊΠΎΠ΄ + statusText: + type: string + description: Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π° + example: + title: request body too long + detail: https://openapi.wildberries.ru/content/api/ru/ + code: 71d3de1b-001e-488f-bbf5-55c31254fbeb + requestId: MN8usr6RfrzWHZfucSvNgb + origin: s2s-api-auth-content + status: 413 + statusText: Request Entity Too Large + '429': + $ref: '#/components/responses/429' + /content/v3/media/file: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°.\n\nВрСбования ΠΊ изобраТСниям:\n * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\_β€” 30\n * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px\n * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€\_β€” 32\_Мб\n * минимальноС качСство\_β€” 65%\n * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹\_β€” JPG, PNG, BMP, GIF (статичныС), WebP\n\nВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ:\n * максимум ΠΎΠ΄Π½ΠΎ\_Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\n * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€\_β€” 50\_Мб\n * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹\_β€” MOV, MP4\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²\n
\n" + tags: + - ΠœΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ + parameters: + - name: X-Nm-Id + in: header + description: Артикул WB + schema: + type: string + example: '213864079' + required: true + - name: X-Photo-Number + in: header + description: "НомСр ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Π° Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, начинаСтся с\_`1`. ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π²ΠΈΠ΄Π΅ΠΎ всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ `1`.\n\nΠ§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ, Π½ΠΎΠΌΠ΅Ρ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС количСства ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ².\n" + schema: + type: integer + example: 2 + required: true + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + uploadfile: + type: string + format: binary + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + example: + data: { } + error: false + errorText: '' + additionalErrors: null + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + plain/text: + example: Invalid 'boundary' for 'multipart/form-data' request + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + '429': + $ref: '#/components/responses/429' + /content/v3/media/save: + servers: + - url: https://content-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + summary: Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ссылкам + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС.\n\n
\n НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹.\n
\n\nВрСбования ΠΊ изобраТСниям:\n * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\_β€” 30\n * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px\n * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€\_β€” 32\_Мб\n * минимальноС качСство\_β€” 65%\n * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹\_β€” JPG, PNG, BMP, GIF (статичныС), WebP\n\nВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ:\n * максимум ΠΎΠ΄Π½ΠΎ\_Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\n * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€\_β€” 50\_Мб\n * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹\_β€” MOV, MP4\n\nЕсли Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится.\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²\n
\n" + tags: + - ΠœΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + nmId: + description: Артикул WB + type: integer + data: + description: "Бсылки Π½Π° изобраТСния Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²\_ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, Π½Π° любой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ массива" + type: array + items: + type: string + example: + nmId: 213864079 + data: + - https://basket-stage-02.dasec.ru/vol669/part66964/66964260/images/big/2.jpg + - https://sample-videos.com/video321/mp4/720/big_buck_bunny_720p_mb.mp4 + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + example: + data: { } + error: false + errorText: '' + additionalErrors: null + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + '401': + $ref: '#/components/responses/401' + '403': + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + '409': + description: Ошибка сохранСния части ссылок + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + '422': + description: ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nmId + content: + application/json: + schema: + $ref: '#/components/schemas/mediaErrors' + '429': + $ref: '#/components/responses/429' + /api/v2/upload/task: + servers: + - url: https://discounts-prices-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². \n

\nΠ§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post).\n\n
\n ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + requestBody: + $ref: '#/components/requestBodies/SupplierTaskRequest' + responses: + '200': + $ref: '#/components/responses/SuccessTaskResponse' + '208': + $ref: '#/components/responses/Responses208' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UploadLimitExceeded: + $ref: '#/components/examples/UploadLimitExceeded' + DuplicateItemNos: + $ref: '#/components/examples/DuplicateItemNos' + TheSpecifiedPricesAndDiscountsAreAlreadySet: + $ref: '#/components/examples/TheSpecifiedPricesAndDiscountsAreAlreadySet' + InvalidDataFormat: + $ref: '#/components/examples/InvalidDataFormat' + PriceShouldBeAWholeNumber: + $ref: '#/components/examples/PriceShouldBeAWholeNumber' + InvalidPriceValue: + $ref: '#/components/examples/InvalidPriceValue' + InvalidDiscountValue: + $ref: '#/components/examples/InvalidDiscountValue' + InvalidItemNo: + $ref: '#/components/examples/InvalidItemNo' + PriceAndDiscountNotSpecified: + $ref: '#/components/examples/PriceAndDiscountNotSpecified' + EmptyData: + $ref: '#/components/examples/EmptyData' + AllItemNosAreSpecifiedIncorrectlyOrPricesAndDiscounts: + $ref: '#/components/examples/AllItemNosAreSpecifiedIncorrectlyOrPricesAndDiscounts' + '401': + $ref: '#/components/responses/401' + '422': + description: НСоТидаСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UnexpectedResult: + $ref: '#/components/examples/UnexpectedResult' + '429': + $ref: '#/components/responses/429' + /api/v2/upload/task/size: + servers: + - url: https://discounts-prices-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².\n\nΠ Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для [Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`.\n\nΠ§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post).\n\n
\n ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + requestBody: + $ref: '#/components/requestBodies/SupplierTaskRequestSize' + responses: + '200': + $ref: '#/components/responses/SuccessTaskResponse' + '208': + $ref: '#/components/responses/Responses208' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UploadLimitExceeded: + $ref: '#/components/examples/UploadLimitExceeded' + DuplicateItemNos: + $ref: '#/components/examples/DuplicateItemNos' + DuplicateSizeIDs: + $ref: '#/components/examples/DuplicateSizeIDs' + TheSpecifiedPricesAreAlreadySet: + $ref: '#/components/examples/TheSpecifiedPricesAreAlreadySet' + InvalidDataFormat: + $ref: '#/components/examples/InvalidDataFormat' + PriceShouldBeAWholeNumber: + $ref: '#/components/examples/PriceShouldBeAWholeNumber' + InvalidPriceValue: + $ref: '#/components/examples/InvalidPriceValue' + InvalidItemNo: + $ref: '#/components/examples/InvalidItemNo' + InvalidSize: + $ref: '#/components/examples/InvalidSize' + PriceNotSpecified: + $ref: '#/components/examples/PriceNotSpecified' + EmptyData: + $ref: '#/components/examples/EmptyData' + AllItemNosAreSpecifiedIncorrectlyOrPrices: + $ref: '#/components/examples/AllItemNosAreSpecifiedIncorrectlyOrPrices' + '401': + $ref: '#/components/responses/401' + '422': + description: НСоТидаСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UnexpectedResult: + $ref: '#/components/examples/UnexpectedResult' + '429': + $ref: '#/components/responses/429' + /api/v2/upload/task/club-discount: + servers: + - url: https://discounts-prices-api.wildberries.ru + post: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ скидки WB ΠšΠ»ΡƒΠ±Π° + description: "УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337).\n\n
\n ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + requestBody: + $ref: '#/components/requestBodies/SupplierTaskRequestClubDisc' + responses: + '200': + $ref: '#/components/responses/SuccessTaskResponse' + '208': + $ref: '#/components/responses/Responses208' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + CheckTheWBClubDiscount: + $ref: '#/components/examples/CheckTheWBClubDiscount' + DiscountsAreTheSameAsThoseAlreadySet: + $ref: '#/components/examples/DiscountsAreTheSameAsThoseAlreadySet' + AllItemNosAreSpecifiedIncorrectlyOrDiscounts: + $ref: '#/components/examples/AllItemNosAreSpecifiedIncorrectlyOrDiscounts' + InvalidDiscountValue: + $ref: '#/components/examples/InvalidDiscountValue' + '401': + $ref: '#/components/responses/401' + '422': + description: НСоТидаСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UnexpectedResult: + $ref: '#/components/examples/UnexpectedResult' + '429': + $ref: '#/components/responses/429' + /api/v2/history/tasks: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: БостояниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок.\n\n
\n ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/uploadID' + responses: + '200': + $ref: '#/components/responses/ResponseTaskHistory' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + type: boolean + example: true + errorText: + type: string + example: Invalid request parameters + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/history/goods/task: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: ДСтализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.\n\n
\n ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/uploadID' + responses: + '200': + $ref: '#/components/responses/ResponseGoodHistories' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + type: boolean + example: true + errorText: + type: string + example: Invalid request parameters + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/buffer/tasks: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: БостояниС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.\n\n
\n НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° Π°ΠΊΡ†ΠΈΠΈ.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/uploadID' + responses: + '200': + $ref: '#/components/responses/ResponseTaskBuffer' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + type: boolean + example: true + errorText: + type: string + example: Invalid request parameters + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/buffer/goods/task: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: ДСтализация Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.\n\n
\n НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° Π°ΠΊΡ†ΠΈΠΈ.\n
\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/uploadID' + responses: + '200': + $ref: '#/components/responses/ResponseGoodBufferHistories' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + type: object + properties: + data: + type: object + nullable: true + error: + type: boolean + example: true + errorText: + type: string + example: Invalid request parameters + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/list/goods/filter: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ с Ρ†Π΅Π½Π°ΠΌΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post).\n

\nΠ§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get).\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/filterNmID' + responses: + '200': + $ref: '#/components/responses/ResponseGoodsLists' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + SortError: + $ref: '#/components/examples/SortError' + InvalidRequestParameters: + $ref: '#/components/examples/InvalidRequestParameters' + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/list/goods/size/nm: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° с Ρ†Π΅Π½Π°ΠΌΠΈ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post).\n

\nΠ Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. \n

\nΠ§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get).\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/nmID' + responses: + '200': + $ref: '#/components/responses/ResponseSizeLists' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + InvalidRequestParameters: + $ref: '#/components/examples/InvalidRequestParameters' + '401': + $ref: '#/components/responses/401' + '429': + $ref: '#/components/responses/429' + /api/v2/quarantine/goods: + servers: + - url: https://discounts-prices-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π¦Π΅Π½Ρ‹ ΠΈ скидки + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅ + description: "ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅.\n

\nЕсли новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²\_3 Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π²\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ\_старой Ρ†Π΅Π½Π΅. Ошибка ΠΎΠ±\_этом Π±ΡƒΠ΄Π΅Ρ‚ Π²\_ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get).\n

\nΠ’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²\_Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine).\n

\nДля Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся.\n\n
\n ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ\_10\_запросов Π·Π°\_6\_сСкунд для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°\n
\n" + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + $ref: '#/components/responses/ResponseQuarantineGoods' + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + InvalidRequestParameters: + $ref: '#/components/examples/InvalidRequestParameters' + '401': + $ref: '#/components/responses/401' + '422': + description: НСоТидаСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + examples: + UnexpectedResult: + $ref: '#/components/examples/UnexpectedResult' + '429': + $ref: '#/components/responses/429' + /api/v3/stocks/{warehouseId}: + servers: + - url: https://marketplace-api.wildberries.ru + put: + security: + - HeaderApiKey: [ ] + tags: + - ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Π½Π° складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + +
+ Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ parameters: + - $ref: '#/components/parameters/Warehouse' + requestBody: + content: + application/json: + schema: + type: object + required: + - stocks + properties: + stocks: + type: array + minItems: 1 + maxItems: 1000 + description: Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ ΠΈΡ… остатков + items: + type: object + properties: + sku: + type: string + description: Π‘Π°Ρ€ΠΊΠΎΠ΄ + example: BarcodeTest123 + amount: + type: integer + maximum: 100000 + description: ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ + example: 10 + responses: + '204': + description: ОбновлСно + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/StocksWarehouseError' + examples: + IncorrectRequestBody: + $ref: '#/components/examples/IncorrectRequestBody' + IncorrectRequest: + $ref: '#/components/examples/IncorrectRequest' + IncorrectParameter: + $ref: '#/components/examples/IncorrectParameter' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + $ref: '#/components/responses/NotFound' + '406': + $ref: '#/components/responses/StatusNotAcceptable' + '409': + description: Ошибка обновлСния остатков + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + SubjectDBSRestriction: + $ref: '#/components/examples/SubjectDBSRestriction' + SubjectFBSRestriction: + $ref: '#/components/examples/SubjectFBSRestriction' + UploadDataLimit: + $ref: '#/components/examples/UploadDataLimit' + CargoWarehouseRestrictionMGT: + $ref: '#/components/examples/CargoWarehouseRestrictionMGT' + CargoWarehouseRestrictionSGT: + $ref: '#/components/examples/CargoWarehouseRestrictionSGT' + CargoWarehouseRestrictionSGTKGTPlus: + $ref: '#/components/examples/CargoWarehouseRestrictionSGTKGTPlus' + CargoWarehouseRestrictionKGTPlus: + $ref: '#/components/examples/CargoWarehouseRestrictionKGTPlus' + NotFound: + $ref: '#/components/examples/NotFound' + StoreIsProcessing: + $ref: '#/components/examples/StoreIsProcessing' + '429': + $ref: '#/components/responses/429' + delete: + security: + - HeaderApiKey: [ ] + tags: + - ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Π½Π° складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: Π£Π΄Π°Π»ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + +
+ ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ parameters: + - $ref: '#/components/parameters/Warehouse' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + skus: + type: array + nullable: false + minItems: 1 + maxItems: 1000 + description: Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² + items: + type: string + nullable: false + example: BarcodeTest123 + responses: + '204': + description: Π£Π΄Π°Π»Π΅Π½ΠΎ + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + IncorrectRequestBody: + $ref: '#/components/examples/IncorrectRequestBody' + IncorrectRequest: + $ref: '#/components/examples/IncorrectRequest' + IncorrectParameter: + $ref: '#/components/examples/IncorrectParameter' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + description: НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: NotFound + message: НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ + data: + skuTest1: null + skuTest2: null + '409': + description: Ошибка удалСния остатков + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + StoreIsProcessing: + $ref: '#/components/examples/StoreIsProcessing' + '429': + $ref: '#/components/responses/429' + post: + security: + - HeaderApiKey: [ ] + tags: + - ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Π½Π° складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ parameters: + - $ref: '#/components/parameters/Warehouse' + requestBody: + required: true + content: + application/json: + schema: + type: object + nullable: false + properties: + skus: + type: array + description: Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² + minItems: 1 + maxItems: 1000 + items: + type: string + example: BarcodeTest123 + required: + - skus + responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: object + properties: + stocks: + type: array + nullable: false + items: + type: object + properties: + sku: + type: string + nullable: false + description: Π‘Π°Ρ€ΠΊΠΎΠ΄ + example: BarcodeTest123 + amount: + type: integer + nullable: false + description: ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ + example: 10 + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + IncorrectRequestBody: + $ref: '#/components/examples/IncorrectRequestBody' + IncorrectRequest: + $ref: '#/components/examples/IncorrectRequest' + IncorrectParameter: + $ref: '#/components/examples/IncorrectParameter' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/429' + /api/v3/offices: + servers: + - url: https://marketplace-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов WB + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: array + nullable: false + description: Бписок складов WB + items: + $ref: '#/components/schemas/Office' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '429': + $ref: '#/components/responses/429' + /api/v3/warehouses: + servers: + - url: https://marketplace-api.wildberries.ru + get: + security: + - HeaderApiKey: [ ] + tags: + - Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ responses: + '200': + description: УспСшно + content: + application/json: + schema: + type: array + nullable: false + description: Бписок складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + items: + $ref: '#/components/schemas/Warehouse' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '429': + $ref: '#/components/responses/429' + post: + security: + - HeaderApiKey: [ ] + tags: + - Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + +
+ НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + nullable: false + minLength: 1 + maxLength: 200 + description: Имя склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: Π‘ΠΊΠ»Π°Π΄ КолСдино + officeId: + type: integer + nullable: false + minimum: 1 + description: ID склада WB + example: 15 + required: + - name + - officeId + responses: + '201': + description: Π‘ΠΎΠ·Π΄Π°Π½ΠΎ + content: + application/json: + schema: + type: object + properties: + id: + type: integer + nullable: false + description: ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: 2 + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + IncorrectRequestBody: + $ref: '#/components/examples/IncorrectRequestBody' + WarehouseNameInvalid: + $ref: '#/components/examples/WarehouseNameInvalid' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + $ref: '#/components/responses/NotFound' + '409': + description: Ошибка создания Π½ΠΎΠ²ΠΎΠ³ΠΎ склада + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + $ref: '#/components/responses/429' + /api/v3/warehouses/{warehouseId}: + servers: + - url: https://marketplace-api.wildberries.ru + put: + security: + - HeaderApiKey: [ ] + tags: + - Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. + +
+ НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +
+ +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ parameters: + - $ref: '#/components/parameters/Warehouse' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + nullable: false + minLength: 1 + maxLength: 200 + description: Имя склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: Π‘ΠΊΠ»Π°Π΄ КолСдино + officeId: + type: integer + nullable: false + minimum: 1 + description: ID склада WB + example: 15 + required: + - name + - officeId + responses: + '204': + description: ОбновлСно + '400': + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + IncorrectRequestBody: + $ref: '#/components/examples/IncorrectRequestBody' + WarehouseNameInvalid: + $ref: '#/components/examples/WarehouseNameInvalid' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + $ref: '#/components/responses/NotFound' + '409': + description: Ошибка обновлСния склада + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + $ref: '#/components/responses/429' + delete: + security: + - HeaderApiKey: [ ] + tags: + - Π‘ΠΊΠ»Π°Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + summary: Π£Π΄Π°Π»ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + description: | + ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). + +
+ ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +

+ Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 запросов +
+ parameters: + - $ref: '#/components/parameters/Warehouse' + responses: + '204': + description: Π£Π΄Π°Π»Π΅Π½ΠΎ + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/AccessDenied' + '404': + $ref: '#/components/responses/NotFound' + '429': + $ref: '#/components/responses/429' +components: + schemas: + responseCardCreate: + type: object + properties: + data: + type: object + nullable: true + example: null + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + oneOf: + - type: object + nullable: true + properties: + string: + type: string + additionalProperties: false + - type: string + nullable: true + requestMoveNmsImtConn: + type: object + required: + - targetIMT + - nmIDs + properties: + targetIMT: + description: Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° `imtID`, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + type: integer + example: 123 + nmIDs: + description: '`nmID`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ (максимум 30)' + type: array + items: + type: integer + example: + - 837459235 + - 828572090 + requestMoveNmsImtDisconn: + type: object + required: + - nmIDs + properties: + nmIDs: + description: '`nmID`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ (max 30)' + type: array + items: + type: integer + example: + - 837459235 + - 828572090 + additionalProperties: false + responseIncorrectDate: + type: object + properties: + error: + type: string + additionalProperties: false + responseContentError1: + type: object + properties: + data: + type: object + nullable: true + example: null + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + properties: + error: + type: string + additionalProperties: false + responseBodyContentError400: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + properties: + MoveNmsToTrash: + type: string + example: + data: null + error: true + errorText: ВСкст ошибки + additionalErrors: + MoveNmsToTrash: Bad request + responseBodyContentError403: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: string + example: + data: null + error: true + errorText: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ + additionalErrors: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ + responseContentError4: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: object + properties: + description: + type: string + responseContentError5: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + nullable: true + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: object + properties: + tagID: + type: string + responseContentError6: + type: object + properties: + data: + type: object + nullable: true + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + type: string + nullable: true + example: + data: null + error: false + errorText: '' + additionalErrors: null + mediaErrors: + type: object + properties: + additionalErrors: + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки + nullable: true + type: object + data: + type: object + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ОписаниС ошибки + type: string + example: + additionalErrors: null + data: null + error: true + errorText: ВСкст ошибки + ResponseError: + type: object + properties: + data: + type: object + nullable: true + error: + type: boolean + errorText: + type: string + RequestAlreadyExistsError: + type: object + properties: + data: + type: object + properties: + id: + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + type: integer + alreadyExists: + description: "Π€Π»Π°Π³ дублирования Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: `true`\_β€” такая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ\n" + type: boolean + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + errorText: + description: ВСкст ошибки + type: string + StocksWarehouseError: + type: array + items: + type: object + properties: + code: + description: Error code + type: string + data: + description: Additional data enriching the error + nullable: true + type: object + message: + description: Error description + type: string + TaskCreated: + type: object + properties: + data: + type: object + properties: + id: + type: integer + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + alreadyExists: + type: boolean + description: "Π€Π»Π°Π³ дублирования Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: `true`\_β€” такая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ\n" + example: false + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ВСкст ошибки + type: string + example: '' + Goods: + type: array + description: "Π’ΠΎΠ²Π°Ρ€Ρ‹, Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Π½ΠΈΡ…. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1\_000\_Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π¦Π΅Π½Π° ΠΈ скидка Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пустыми ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.\n

\nЕсли новая Ρ†Π΅Π½Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ хотя Π±Ρ‹ Π²\_3 Ρ€Π°Π·Π° мСньшС старой, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π²\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ\_старой Ρ†Π΅Π½Π΅. Ошибка ΠΎΠ±\_этом Π±ΡƒΠ΄Π΅Ρ‚ Π²\_ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояний Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ.\n

\nΠ’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²\_Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine)\n" + items: + $ref: '#/components/schemas/Good' + Good: + type: object + required: + - nmID + properties: + nmID: + type: integer + example: 123 + description: Артикул WB + price: + type: integer + example: 999 + description: "Π¦Π΅Π½Π°. Π’Π°Π»ΡŽΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎ\_Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `currencyIsoCode4217`" + discount: + type: integer + example: 30 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ°,\_%" + SizeGoodsBody: + description: "Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ†Π΅Π½Ρ‹ для Π½ΠΈΡ…. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1\_000 Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².\n

\nДля Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой Ρ†Π΅Π½ ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся\n" + type: array + items: + $ref: '#/components/schemas/SizeGoodReq' + SizeGoodReq: + type: object + required: + - nmID + - sizeID + - price + properties: + nmID: + type: integer + example: 123 + description: Артикул WB + sizeID: + type: integer + example: 98989887 + description: "ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎ\_Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `sizeID`. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`" + price: + type: integer + example: 999 + description: "Π¦Π΅Π½Π°. Π’Π°Π»ΡŽΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎ\_Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `currencyIsoCode4217`" + ClubDisc: + type: array + description: "Π’ΠΎΠ²Π°Ρ€Ρ‹ ΠΈ скидки WB ΠšΠ»ΡƒΠ±Π° для Π½ΠΈΡ…. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1\_000\_Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².\n" + items: + $ref: '#/components/schemas/ClubDiscReq' + ClubDiscReq: + type: object + required: + - nmID + - clubDiscount + properties: + nmID: + type: integer + example: 123 + description: Артикул WB + clubDiscount: + type: integer + example: 5 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,\_%" + GoodsList: + type: object + description: Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° + properties: + nmID: + type: integer + description: Артикул WB + example: 98486 + vendorCode: + type: string + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: '07326060' + sizes: + type: array + description: Π Π°Π·ΠΌΠ΅Ρ€ + items: + type: object + properties: + sizeID: + type: integer + description: ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID` + format: int64 + example: 3123515574 + price: + type: integer + description: Π¦Π΅Π½Π° + example: 500 + discountedPrice: + type: number + description: Π¦Π΅Π½Π° со скидкой + example: 350 + clubDiscountedPrice: + type: number + description: Π¦Π΅Π½Π° со скидкой, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ скидку WB ΠšΠ»ΡƒΠ±Π° + example: 332.5 + techSizeName: + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: string + example: '42' + currencyIsoCode4217: + type: string + description: Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217 + example: RUB + discount: + type: integer + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ°,\_%" + example: 30 + clubDiscount: + type: integer + example: 5 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,\_%" + editableSizePrice: + description: "МоТно Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²: `true`\_β€” ΠΌΠΎΠΆΠ½ΠΎ, `false`\_β€” нСльзя. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\n" + type: boolean + example: true + SizeGood: + type: object + description: "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ\_Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅" + properties: + nmID: + type: integer + example: 123 + description: Артикул WB + sizeID: + description: "ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎ\_Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `sizeID`. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`" + type: integer + example: 98989887 + vendorCode: + type: string + example: '34552332' + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + price: + type: integer + example: 1000 + description: Π¦Π΅Π½Π° + currencyIsoCode4217: + type: string + description: Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217 + example: RUB + discountedPrice: + type: number + example: 700 + description: "Π¦Π΅Π½Π° со\_скидкой" + clubDiscountedPrice: + type: number + description: Π¦Π΅Π½Π° со скидкой, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ скидку WB ΠšΠ»ΡƒΠ±Π° + example: 665 + discount: + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ°,\_%" + type: integer + example: 30 + clubDiscount: + type: integer + example: 5 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,\_%" + techSizeName: + description: Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: string + example: '42' + editableSizePrice: + description: "МоТно Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²: `true`\_β€” ΠΌΠΎΠΆΠ½ΠΎ, `false`\_β€” нСльзя. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°\n" + type: boolean + example: true + GoodBufferHistory: + type: object + properties: + nmID: + type: integer + example: 544833232 + description: Артикул WB + vendorCode: + type: string + example: '34552332' + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + sizeID: + type: integer + example: 54483342 + description: ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID` + techSizeName: + type: string + example: XXL + description: Π Π°Π·ΠΌΠ΅Ρ€ + price: + type: integer + example: 1500 + description: Π¦Π΅Π½Π° + currencyIsoCode4217: + type: string + example: RUB + description: Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217 + discount: + type: integer + example: 25 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ°,\_%" + clubDiscount: + type: integer + example: 5 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,\_%" + status: + $ref: '#/components/schemas/GoodStatusBuffer' + errorText: + type: string + example: null + description: ВСкст ошибки + GoodHistory: + type: object + properties: + nmID: + type: integer + example: 544833232 + description: Артикул WB + vendorCode: + type: string + example: '34552332' + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + sizeID: + type: integer + example: 54483342 + description: ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID` + techSizeName: + type: string + example: '42' + description: Π Π°Π·ΠΌΠ΅Ρ€ + price: + type: integer + example: 1500 + description: Π¦Π΅Π½Π° + currencyIsoCode4217: + type: string + example: RUB + description: Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217 + discount: + type: integer + example: 25 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ°,\_%" + clubDiscount: + type: integer + example: 5 + description: "Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,\_%" + nullable: true + status: + $ref: '#/components/schemas/GoodStatus' + errorText: + type: string + example: The new price is several times lower than the current price. Item has been moved to Price Quarantine + description: "ВСкст ошибки\n\n
\n Ошибка The new price is several times lower than the current price. Item has been moved to Price Quarantine Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли новая Ρ†Π΅Π½Π° со скидкой хотя Π±Ρ‹ Π²\_3 Ρ€Π°Π·Π° мСньшС старой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° Π²\_Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅\n
\n" + SupplierTaskMetadata: + properties: + uploadID: + type: integer + example: 395643565 + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + status: + $ref: '#/components/schemas/TaskStatus' + uploadDate: + $ref: '#/components/schemas/Date' + activationDate: + $ref: '#/components/schemas/Date1' + overAllGoodsNumber: + description: ВсСго Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + type: integer + successGoodsNumber: + description: Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π±Π΅Π· ошибок + type: integer + SupplierTaskMetadataBuffer: + properties: + uploadID: + type: integer + example: 395643565 + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + status: + $ref: '#/components/schemas/TaskStatusBuffer' + uploadDate: + $ref: '#/components/schemas/Date' + activationDate: + $ref: '#/components/schemas/Date1' + overAllGoodsNumber: + description: ВсСго Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + type: integer + example: 100 + successGoodsNumber: + description: Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π±Π΅Π· ошибок (0, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅) + type: integer + example: 0 + Date: + type: string + example: '2022-08-21T22:00:13+02:00' + format: date-time + description: Π”Π°Ρ‚Π° ΠΈ врСмя, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° создана + Date1: + type: string + example: '2022-08-21T22:00:13+02:00' + format: date-time + description: "Π”Π°Ρ‚Π° ΠΈ врСмя, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° отправляСтся Π²\_ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ" + TaskStatus: + description: "Бтатус Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: \n * `3`\_β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°, Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π½Π΅Ρ‚ ошибок, Ρ†Π΅Π½Ρ‹ ΠΈ скидки обновились\n * `4`\_β€” ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°\n * `5`\_β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°, Π½ΠΎ Π²\_Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π΅ΡΡ‚ΡŒ ошибки. Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π±Π΅Π· ошибок Ρ†Π΅Π½Ρ‹ ΠΈ скидки обновились, Π° ошибки Π²\_ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с\_ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ДСтализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1goods~1task/get)\n * `6`\_β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°, Π½ΠΎ\_Π²ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π΅ΡΡ‚ΡŒ ошибки. Π˜Ρ… Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с\_ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ДСтализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ](./work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1goods~1task/get)\n" + type: integer + example: 3 + TaskStatusBuffer: + description: "Бтатус Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: `1`\_β€” Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅\n" + type: integer + example: 1 + GoodStatus: + description: "Бтатус Ρ‚ΠΎΠ²Π°Ρ€Π°: \n * `2`\_β€” Ρ‚ΠΎΠ²Π°Ρ€ Π±Π΅Π· ошибок, Ρ†Π΅Π½Π° ΠΈ/ΠΈΠ»ΠΈ скидка обновилась\n * `3`\_β€” Π΅ΡΡ‚ΡŒ ошибки, Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ обновились\n" + type: integer + example: 1 + GoodStatusBuffer: + description: "Бтатус Ρ‚ΠΎΠ²Π°Ρ€Π°: `1`\_β€” Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅\n" + type: integer + example: 1 + Error: + type: object + nullable: false + properties: + code: + type: string + description: Код ошибки + nullable: false + message: + type: string + description: ОписаниС ошибки + nullable: false + data: + type: object + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ + nullable: true + QuarantineGoods: + type: object + properties: + nmID: + type: integer + example: 206025152 + description: Артикул WB + sizeID: + description: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + type: integer + example: null + techSizeName: + description: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + type: string + example: '' + currencyIsoCode4217: + type: string + description: Π’Π°Π»ΡŽΡ‚Π° ΠΏΠΎ стандарту ISO 4217 + example: RUB + newPrice: + type: number + format: float + example: 134 + description: Новая Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π΄ΠΎ скидки + oldPrice: + type: number + format: float + example: 4000 + description: ВСкущая Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π΄ΠΎ скидки + newDiscount: + type: integer + example: 25 + description: Новая скидка ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, % + oldDiscount: + type: integer + example: 25 + description: ВСкущая скидка ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, % + priceDiff: + type: number + format: float + description: 'Π Π°Π·Π½ΠΈΡ†Π°: `newPrice` * (1 - `newDiscount` / 100) - `oldPrice` * (1 - `oldDiscount` / 100)' + example: -2899.5 + Office: + type: object + description: Π”Π°Π½Π½Ρ‹Π΅ ΠΎ складС WB + properties: + address: + type: string + nullable: false + description: АдрСс + example: ΡƒΠ». Вроицкая, Подольск, Московская ΠΎΠ±Π». + name: + type: string + nullable: false + description: НазваниС + example: Москва (КолСдино) + city: + type: string + nullable: false + description: Π“ΠΎΡ€ΠΎΠ΄ + example: Москва + id: + type: integer + format: int64 + nullable: false + description: ID + example: 15 + longitude: + type: number + format: float64 + nullable: false + description: Π”ΠΎΠ»Π³ΠΎΡ‚Π° + example: 55.386871 + latitude: + type: number + format: float64 + nullable: false + description: Π¨ΠΈΡ€ΠΎΡ‚Π° + example: 37.588898 + cargoType: + description: | +
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад:
1 - ΠœΠ“Π’ (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
+ type: integer + enum: + - 1 + - 2 + - 3 + example: 1 + deliveryType: + type: integer + description: | + Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: + - `1` β€” доставка Π½Π° склад WB (FBS) + - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) + - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) + - `5` β€” самовывоз (C&C) + - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS) + enum: + - 1 + - 2 + - 3 + - 5 + - 6 + example: 1 + selected: + type: boolean + nullable: false + description: ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ склад ΡƒΠΆΠ΅ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠΌ + Warehouse: + type: object + description: Π”Π°Π½Π½Ρ‹Π΅ ΠΎ складС ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + properties: + name: + type: string + nullable: false + description: НазваниС склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: ΡƒΠ». Вроицкая, Подольск, Московская ΠΎΠ±Π». + officeId: + type: integer + format: int64 + nullable: false + description: ID склада WB + example: 15 + id: + type: integer + format: int64 + nullable: false + description: ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + example: 1 + cargoType: + description: | +
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°:
1 - ΠœΠ“Π’ (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
+ type: integer + enum: + - 1 + - 2 + - 3 + example: 1 + deliveryType: + type: integer + description: | + Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: + - `1` β€” доставка Π½Π° склад WB (FBS) + - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) + - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) + - `5` β€” самовывоз (C&C) + - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS) + enum: + - 1 + - 2 + - 3 + - 5 + - 6 + example: 1 + parameters: + Warehouse: + name: warehouseId + in: path + required: true + description: ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + schema: + type: integer + format: int64 + example: 1 + uploadID: + in: query + name: uploadID + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + required: true + schema: + type: integer + example: 146567 + limit: + in: query + name: limit + description: "Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1\_000 элСмСнтов" + schema: + type: integer + format: uint + example: 10 + required: true + offset: + in: query + name: offset + description: ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ + schema: + type: integer + format: uint + minimum: 0 + example: 0 + nmID: + in: query + name: nmID + description: Артикул WB + schema: + type: integer + example: 1 + required: true + filterNmID: + in: query + description: Артикул WB, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ + name: filterNmID + schema: + type: integer + example: 44589768676 + requestBodies: + SupplierTaskRequest: + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/Goods' + SupplierTaskRequestSize: + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SizeGoodsBody' + SupplierTaskRequestClubDisc: + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ClubDisc' + responses: + '401': + description: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½ + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки + detail: + type: string + description: Π”Π΅Ρ‚Π°Π»ΠΈ ошибки + code: + type: string + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки + requestId: + type: string + description: Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса + origin: + type: string + description: ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB + status: + type: number + description: HTTP статус-ΠΊΠΎΠ΄ + statusText: + type: string + description: Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π° + timestamp: + type: string + format: date-time + description: Π”Π°Ρ‚Π° ΠΈ врСмя запроса + example: + title: unauthorized + detail: 'token problem; token is malformed: could not base64 decode signature: illegal base64 data at input byte 84' + code: 07e4668e--a53a3d31f8b0-[UK-oWaVDUqNrKG]; 03bce=277; 84bd353bf-75 + requestId: 7b80742415072fe8b6b7f7761f1d1211 + origin: s2s-api-auth-catalog + status: 401 + statusText: Unauthorized + timestamp: '2024-09-30T06:52:38Z' + '429': + description: Блишком ΠΌΠ½ΠΎΠ³ΠΎ запросов + headers: + X-Ratelimit-Retry: + description: Π§Π΅Ρ€Π΅Π· сколько сСкунд Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ запрос. Если Π²Ρ‹ сдСлаСтС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Ρ€Π°Π½ΡŒΡˆΠ΅, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ 429. + schema: + type: integer + format: int + example: 60 + X-Ratelimit-Limit: + description: МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всплСска запросов β€” burst, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ восстановлСно Ρ‡Π΅Ρ€Π΅Π· X-Ratelimit-Reset сСкунд + schema: + type: integer + format: int + example: 1000 + X-Ratelimit-Reset: + description: Π§Π΅Ρ€Π΅Π· сколько сСкунд допустимый всплСск запросов восстановится Π΄ΠΎ максимального значСния, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² X-Ratelimit-Limit. + schema: + type: integer + format: int + example: 100 + content: + application/problem+json: + schema: + type: object + properties: + title: + type: string + description: Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки + detail: + type: string + description: Π”Π΅Ρ‚Π°Π»ΠΈ ошибки + code: + type: string + description: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки + requestId: + type: string + description: Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса + origin: + type: string + description: ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB + status: + type: number + description: HTTP статус-ΠΊΠΎΠ΄ + statusText: + type: string + description: Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π° + timestamp: + type: string + format: date-time + description: Π”Π°Ρ‚Π° ΠΈ врСмя запроса + example: + title: too many requests + detail: limited by c122a060-a7fb-4bb4-abb0-32fd4e18d489 + code: 07e4668e-ac2242c5c8c5-[UK-4dx7JUdskGZ] + requestId: 9d3c02cc698f8b041c661a7c28bed293 + origin: s2s-api-auth-catalog + status: 429 + statusText: Too Many Requests + timestamp: '2024-09-30T06:52:38Z' + NotFound: + description: НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: NotFound + message: НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ + AccessDenied: + description: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: AccessDenied + message: Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ + ResponseGoodsLists: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + listGoods: + description: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… + type: array + items: + $ref: '#/components/schemas/GoodsList' + ResponseGoodHistories: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + uploadID: + type: integer + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + example: 3235236546 + nullable: true + historyGoods: + type: array + description: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ + items: + $ref: '#/components/schemas/GoodHistory' + ResponseGoodBufferHistories: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + uploadID: + type: integer + description: ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ + example: 3235236546 + bufferGoods: + type: array + description: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ + items: + $ref: '#/components/schemas/GoodBufferHistory' + error: + type: boolean + description: Π€Π»Π°Π³ ошибки + example: false + errorText: + type: string + description: ВСкст ошибки + example: '' + ResponseTaskHistory: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + nullable: true + $ref: '#/components/schemas/SupplierTaskMetadata' + error: + type: boolean + description: Π€Π»Π°Π³ ошибки + example: false + errorText: + description: "ВСкст ошибки\n\n
\n Ошибка The new price is several times lower than the current price. Item has been moved to Price Quarantine Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли новая Ρ†Π΅Π½Π° со скидкой хотя Π±Ρ‹ Π²\_3 Ρ€Π°Π·Π° мСньшС старой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·\_ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° Π²\_Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅\n
\n" + type: string + example: The new price is several times lower than the current price. Item has been moved to Price Quarantine + ResponseTaskBuffer: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + nullable: true + $ref: '#/components/schemas/SupplierTaskMetadataBuffer' + error: + type: boolean + description: Π€Π»Π°Π³ ошибки + example: false + errorText: + type: string + description: ВСкст ошибки + example: '' + ResponseSizeLists: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + listGoods: + description: Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° + type: array + items: + $ref: '#/components/schemas/SizeGood' + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ВСкст ошибки + type: string + SuccessTaskResponse: + description: УспСшно + content: + application/json: + schema: + $ref: '#/components/schemas/TaskCreated' + ResponseQuarantineGoods: + description: УспСшно + content: + application/json: + schema: + type: object + properties: + data: + nullable: true + type: object + properties: + quarantineGoods: + description: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅ + type: array + items: + $ref: '#/components/schemas/QuarantineGoods' + error: + description: Π€Π»Π°Π³ ошибки + type: boolean + example: false + errorText: + description: ВСкст ошибки + type: string + example: '' + Responses208: + description: Вакая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ + content: + application/json: + schema: + $ref: '#/components/schemas/RequestAlreadyExistsError' + examples: + This task already exists: + description: Вакая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ + value: + data: + id: 1111111 + alreadyExists: true + error: false + errorText: This task already exists + StatusNotAcceptable: + description: ОбновлСниС остатков Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΎ + content: + application/json: + schema: + properties: + code: + type: string + description: Код ошибки + nullable: false + example: StatusNotAcceptable + message: + type: string + description: ОписаниС ошибки + nullable: false + example: ОбновлСниС остатков Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² связи с Π±Π°Π½ΠΎΠΌ поставщика + data: + type: object + description: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ + nullable: true + examples: + WarehouseNameInvalid: + value: + code: WarehouseNameInvalid + message: НСкоррСктноС имя склада + StoreIsProcessing: + description: Π‘ΠΊΠ»Π°Π΄ находится Π² процСссС обновлСния ΠΈΠ»ΠΈ удалСния. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд. + value: + code: StoreIsProcessing + message: The store is processing + IncorrectRequestBody: + value: + code: IncorrectRequestBody + message: НСкоррСктноС Ρ‚Π΅Π»ΠΎ запроса + IncorrectRequest: + value: + code: IncorrectRequest + message: ΠŸΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ + SubjectDBSRestriction: + description: ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Ρ‚ΠΎΠ²Π°Ρ€Π° нСдоступна для ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΠΎ схСмС FBS. + value: + code: SubjectDBSRestriction + message: The product category cannot be sold with 'Fulfillment By Wildberries'. + data: + sku: skuTest1 + stock: 0 + SubjectFBSRestriction: + description: ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Ρ‚ΠΎΠ²Π°Ρ€Π° нСдоступна для ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΠΎ схСмС DBS. + value: + code: SubjectFBSRestriction + message: The product category cannot be sold with 'Delivery By Supplier'. + data: + sku: skuTest2 + stock: 1 + UploadDataLimit: + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… + value: + code: UploadDataLimit + message: Upload limit exceeded. + data: + sku: skuTest2 + stock: 100001 + CargoWarehouseRestrictionMGT: + description: Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ склад Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ Β«ΠœΠ“Π’ (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹Π΅ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹)Β». Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ остатки Π½Π° склад Π±Π΅Π· ΠΌΠ΅Ρ‚ΠΊΠΈ Π‘Π“Π’ ΠΈΠ»ΠΈ ΠšΠ“Π’+ + value: + code: CargoWarehouseRestrictionMGT + message: The selected warehouse is not suitable for goods with the type "LCL (Less than Container Load)". Upload the balances to the warehouse without the ODC or CD+ mark + data: + sku: skuTest3 + stock: 10 + CargoWarehouseRestrictionSGT: + description: Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ склад Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ Β«Π‘Π“Π’Β». Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ остатки Π½Π° склад с ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ β€” Π‘Π“Π’ + value: + code: CargoWarehouseRestrictionSGT + message: The selected warehouse is not suitable for goods with the type "ODC". Upload the balances to the warehouse marked - ODC + data: + sku: skuTest3 + stock: 10 + CargoWarehouseRestrictionSGTKGTPlus: + description: Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ склад Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ Β«Π‘Π“Π’/ΠšΠ“Π’+Β». Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ остатки Π½Π° склад с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ β€” Π‘Π“Π’ ΠΈΠ»ΠΈ ΠšΠ“Π’+ + value: + code: CargoWarehouseRestrictionSGTKGTPlus + message: The selected warehouse is not suitable for goods with the type "ODC/CD+". Upload the balances to the warehouse with the label - ODC or CD+ + data: + sku: skuTest3 + stock: 10 + CargoWarehouseRestrictionKGTPlus: + description: Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ склад Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ Β«ΠšΠ“Π’+Β». Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ остатки Π½Π° склад с ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ β€” ΠšΠ“Π’+ + value: + code: CargoWarehouseRestrictionKGTPlus + message: The selected warehouse is not suitable for goods with the type "CD+". Upload the balances to the warehouse marked - CD+ + data: + sku: skuTest3 + stock: 10 + NotFound: + description: НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ + value: + code: NotFound + message: Not found. + data: + sku: skuTest4 + stock: 10 + IncorrectParameter: + value: + code: IncorrectParameter + message: ΠŸΠ΅Ρ€Π΅Π΄Π°Π½ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ + creatingOneCard: + description: '' + value: + - subjectID: 105 + variants: + - vendorCode: ΠΡ€Ρ‚ΠΈΠΊΡƒΠ»ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†Π° + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 12 + width: 7 + height: 5 + weightBrutto: 1.242 + characteristics: + - id: 12 + value: + - Turkish flag + - id: 25471 + value: 1200 + - id: 14177449 + value: + - red + sizes: + - techSize: S + wbSize: '42' + price: 5000 + skus: + - '88005553535' + creatingMergedCards: + description: '' + value: + - subjectID: 3091 + variants: + - vendorCode: ΠΡ€Ρ‚ΠΈΠΊΡƒΠ»ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†Π°11 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° 1 + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° 1 + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 55 + width: 40 + height: 15 + weightBrutto: 6.24 + characteristics: + - id: 12 + value: + - Turkish flag + - id: 25471 + value: 1200 + - id: 14177449 + value: + - red + sizes: + - skus: + - '111111111133111' + - vendorCode: ΠΡ€Ρ‚ΠΈΠΊΡƒΠ»ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†Π°22 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° 2 + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° 2 + brand: Π‘Ρ€Π΅Π½Π΄Π”Ρ€ΡƒΠ³ΠΎΠΉ + dimensions: + length: 55 + width: 40 + height: 15 + weightBrutto: 6.241 + characteristics: + - id: 12 + value: + - Turkish flag + - id: 25471 + value: 1200 + - id: 14177449 + value: + - red + sizes: + - skus: + - '111111111441111' + creatingGroupOfIndividualCards: + description: '' + value: + - subjectID: 3091 + variants: + - vendorCode: ΠΡ€Ρ‚ΠΈΠΊΡƒΠ»ΠŸΡ€ΠΎΠ΄Π°Π²Ρ†Π°1 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° 1 + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° 1 + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 55 + width: 40 + height: 15 + weightBrutto: 6 + characteristics: + - id: 12 + value: + - Turkish flag + - id: 25471 + value: 1200 + - id: 14177449 + value: + - red + sizes: + - skus: + - '1111111111111' + - subjectID: 105 + variants: + - vendorCode: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° 2 + title: НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π° 2 + description: ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π° 2 + brand: Π‘Ρ€Π΅Π½Π΄ + dimensions: + length: 14 + width: 5 + height: 4 + weightBrutto: 0.94 + characteristics: + - id: 12 + value: + - Turkish flag + - id: 25471 + value: 1200 + - id: 14177449 + value: + - red + sizes: + - techSize: S + wbSize: '42' + price: 5000 + skus: + - '2222222222222' + responseIncorrectBeginDate: + description: НСкоррСктная Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° + value: + error: НСкоррСктная Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° + responseIncorrectEndDate: + description: НСкоррСктная Π΄Π°Ρ‚Π° ΠΊΠΎΠ½Ρ†Π° + value: + error: НСкоррСктная Π΄Π°Ρ‚Π° ΠΊΠΎΠ½Ρ†Π° + responseExceededLimit: + description: '' + value: + data: null + error: true + errorText: Π’ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π½Π΅ большС 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ + additionalErrors: + error: Π’ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π½Π΅ большС 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ + responseCombining: + description: '' + value: + data: null + error: true + errorText: ОбъСдинСниС Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ + additionalErrors: + error: ОбъСдинСниС Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ + responseIncorrectRequestFormat: + description: '' + value: + data: null + error: true + errorText: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ запроса + additionalErrors: + error: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ запроса + responseNonExistentNmId: + description: '' + value: + data: null + error: true + errorText: Π£ΠΊΠ°Π·Π°Π½ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ nmID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + additionalErrors: + error: Π£ΠΊΠ°Π·Π°Π½ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ nmID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + responseNonExistentImt: + description: '' + value: + data: null + error: true + errorText: Π£ΠΊΠ°Π·Π°Π½ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ imt + additionalErrors: + error: Π£ΠΊΠ°Π·Π°Π½ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ imt + responseDuplicateRequests: + description: '' + value: + data: null + error: true + errorText: НСдопустимо ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ запросы! + additionalErrors: + error: НСдопустимо ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ запросы! + responseAllCardsInSameGroup: + description: '' + value: + data: null + error: true + errorText: ВсС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ находятся Π² ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ + additionalErrors: + error: ВсС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ находятся Π² ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ + responseCardCreate1: + description: '' + value: + data: null + error: true + errorText: string + additionalErrors: + string: string + InvalidRequestFormatContent: + description: НСкоррСктный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ запроса + value: + data: null + error: true + errorText: Invalid request format + additionalErrors: { } + CardCreatedWithoutVendorCode: + description: ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π΅Π· Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + value: + data: null + error: true + errorText: A card cannot be created without a vendorCode + additionalErrors: { } + CardsVendorCodeUsedInOtherCards: + description: Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° + value: + data: null + error: true + errorText: bad request; Unexpected the specified card's vendor code is used in other cards + additionalErrors: { } + ThisCategoryDoesNotExist: + description: Π’Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° Π½Π΅ сущСствуСт + value: + data: null + error: true + errorText: This category does not exist + additionalErrors: + id: '342342' + responseBodyContentError400: + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + value: + data: null + error: true + errorText: ВСкст ошибки + additionalErrors: + MoveNmsToTrash: Bad request + responseOK200: + description: УспСшно + value: + data: null + error: false + errorText: '' + additionalErrors: null + responseBody400LenName: + description: '' + value: + data: null + error: true + errorText: НСдопустимоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ наимСнования ярлыка + additionalErrors: + description: Блишком Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ярлыка. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 15 символов + responseBodyLimitTag: + description: '' + value: + data: null + error: true + errorText: Π˜ΡΡ‡Π΅Ρ€ΠΏΠ°Π½ Π»ΠΈΠΌΠΈΡ‚ Π½Π° созданиС ярлыков + additionalErrors: null + responseBodyNameNotExist: + description: '' + value: + data: null + error: true + errorText: Π―Ρ€Π»Ρ‹ΠΊ с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΠΆΠ΅ сущСствуСт + additionalErrors: null + responseNotFound200: + description: УспСшно + value: + data: null + error: true + errorText: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + additionalErrors: + description: Π’Π°ΠΊΠΎΠ³ΠΎ ярлыка Π½Π΅ сущСствуСт Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + responseNotFound200Del: + description: '' + value: + data: null + error: true + errorText: Π’Π°ΠΊΠΎΠ³ΠΎ ярлыка Π½Π΅ сущСствуСт + additionalErrors: + tagID: '1234' + IncorrectRequest4: + description: '' + value: + data: null + error: true + errorText: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ запрос + additionalErrors: + description: Π£ΠΊΠ°Π·Π°Π½Ρ‹ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ярлыки + responseBodyTagNotExist: + description: '' + value: + data: null + error: true + errorText: Π’Π°ΠΊΠΎΠ³ΠΎ ярлыка Π½Π΅ сущСствуСт + additionalErrors: + tagID: '1234' + BodySizeExceedsTheGivenLimit: + description: ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² запросС + value: body size exceeds the given limit + InvalidRequestParameters: + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса + value: + data: null + error: true + errorText: Invalid request parameters + UploadLimitExceeded: + description: Π’ запросС слишком ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ `1000 items`) + value: + data: null + error: true + errorText: 'Upload limit exceeded: You can upload a maximum of 10 000 items' + DuplicateItemNos: + description: Π’ запросС нСсколько ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… `nmID` + value: + data: null + error: true + errorText: Duplicate item Nos. + DuplicateSizeIDs: + description: Π’ запросС нСсколько ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… `sizeID` + value: + data: null + error: true + errorText: Duplicate size IDs + TheSpecifiedPricesAndDiscountsAreAlreadySet: + description: Π¦Π΅Π½Ρ‹ ΠΈ скидки Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ сСйчас + value: + data: null + error: true + errorText: The specified prices and discounts are already set + TheSpecifiedPricesAreAlreadySet: + description: Π¦Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ сСйчас + value: + data: null + error: true + errorText: The specified prices and discounts are already set + InvalidDataFormat: + description: НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ запрос ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ + value: + data: null + error: true + errorText: Invalid data format + PriceShouldBeAWholeNumber: + description: Π£ Ρ†Π΅Π½Ρ‹ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ + value: + data: null + error: true + errorText: Price should be a whole number + InvalidPriceValue: + description: НСкоррСктная Ρ†Π΅Π½Π° + value: + data: null + error: true + errorText: Invalid price value + InvalidDiscountValue: + description: НСкоррСктная скидка + value: + data: null + error: true + errorText: Invalid discount value + InvalidItemNo: + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ `nmID` + value: + data: null + error: true + errorText: Invalid item No. + InvalidSize: + description: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ `sizeID` + value: + data: null + error: true + errorText: Invalid size + PriceAndDiscountNotSpecified: + description: Π¦Π΅Π½Π° ΠΈ скидка Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ + value: + data: null + error: true + errorText: Price and discount not specified + PriceNotSpecified: + description: Π¦Π΅Π½Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° + value: + data: null + error: true + errorText: Price and discount not specified + EmptyData: + description: НСт Π΄Π°Π½Π½Ρ‹Ρ… + value: + data: null + error: true + errorText: Empty data + AllItemNosAreSpecifiedIncorrectlyOrPricesAndDiscounts: + description: Π’Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ), ΠΈΠ»ΠΈ Ρ†Π΅Π½Ρ‹ ΠΈ скидки Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ сСйчас + value: + data: null + error: true + errorText: All item Nos. are specified incorrectly, or the specified prices and discounts are already set + AllItemNosAreSpecifiedIncorrectlyOrPrices: + description: Π’Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ), ΠΈΠ»ΠΈ Ρ†Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ сСйчас + value: + data: null + error: true + errorText: All item Nos. are specified incorrectly, or the specified prices and discounts are already set + SortError: + description: МоТно ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΏΠΎ Ρ†Π΅Π½Π΅, Π»ΠΈΠ±ΠΎ ΠΏΠΎ скидкС + value: + data: null + error: true + errorText: You can't sort items by price and discount at the same time + CheckTheWBClubDiscount: + description: Π‘ΠΊΠΈΠ΄ΠΊΠΈ WB ΠšΠ»ΡƒΠ±Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ значСния + value: + data: null + error: true + errorText: 'Check the field values in the WB Club Discount column. Field format: a whole number between {{.WbClubMinDiscount}} and {{.WbClubMaxDiscount}}, without dots or commas' + DiscountsAreTheSameAsThoseAlreadySet: + description: НСкоторыС ΠΈΠ· скидок Π² запросС ΡƒΠΆΠ΅ установлСны + value: + data: null + error: true + errorText: Discounts in the file are the same as those already set. To change discounts, edit the file and upload it again + AllItemNosAreSpecifiedIncorrectlyOrDiscounts: + description: Π’Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ), ΠΈΠ»ΠΈ скидки Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ сСйчас + value: + data: null + error: true + errorText: All item Nos. are specified incorrectly, or the specified discounts are already set + UnexpectedResult: + description: НСоТидаСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, создайтС Π΄ΠΈΠ°Π»ΠΎΠ³ Π² ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ², катСгория API + value: + data: null + error: true + errorText: Unexpected result + securitySchemes: + HeaderApiKey: + type: apiKey + name: Authorization + in: header diff --git a/pkg/api/wb/client/oas_cfg_gen.go b/pkg/api/wb/client/oas_cfg_gen.go new file mode 100644 index 0000000..fc3ff34 --- /dev/null +++ b/pkg/api/wb/client/oas_cfg_gen.go @@ -0,0 +1,283 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/otelogen" +) + +var ( + // Allocate option closure once. + clientSpanKind = trace.WithSpanKind(trace.SpanKindClient) + // Allocate option closure once. + serverSpanKind = trace.WithSpanKind(trace.SpanKindServer) +) + +type ( + optionFunc[C any] func(*C) + otelOptionFunc func(*otelConfig) +) + +type otelConfig struct { + TracerProvider trace.TracerProvider + Tracer trace.Tracer + MeterProvider metric.MeterProvider + Meter metric.Meter +} + +func (cfg *otelConfig) initOTEL() { + if cfg.TracerProvider == nil { + cfg.TracerProvider = otel.GetTracerProvider() + } + if cfg.MeterProvider == nil { + cfg.MeterProvider = otel.GetMeterProvider() + } + cfg.Tracer = cfg.TracerProvider.Tracer(otelogen.Name, + trace.WithInstrumentationVersion(otelogen.SemVersion()), + ) + cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name, + metric.WithInstrumentationVersion(otelogen.SemVersion()), + ) +} + +// ErrorHandler is error handler. +type ErrorHandler = ogenerrors.ErrorHandler + +type serverConfig struct { + otelConfig + NotFound http.HandlerFunc + MethodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string) + ErrorHandler ErrorHandler + Prefix string + Middleware Middleware + MaxMultipartMemory int64 +} + +// ServerOption is server config option. +type ServerOption interface { + applyServer(*serverConfig) +} + +var _ ServerOption = (optionFunc[serverConfig])(nil) + +func (o optionFunc[C]) applyServer(c *C) { + o(c) +} + +var _ ServerOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyServer(c *serverConfig) { + o(&c.otelConfig) +} + +func newServerConfig(opts ...ServerOption) serverConfig { + cfg := serverConfig{ + NotFound: http.NotFound, + MethodNotAllowed: func(w http.ResponseWriter, r *http.Request, allowed string) { + status := http.StatusMethodNotAllowed + if r.Method == "OPTIONS" { + w.Header().Set("Access-Control-Allow-Methods", allowed) + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") + status = http.StatusNoContent + } else { + w.Header().Set("Allow", allowed) + } + w.WriteHeader(status) + }, + ErrorHandler: ogenerrors.DefaultErrorHandler, + Middleware: nil, + MaxMultipartMemory: 32 << 20, // 32 MB + } + for _, opt := range opts { + opt.applyServer(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseServer struct { + cfg serverConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (s baseServer) notFound(w http.ResponseWriter, r *http.Request) { + s.cfg.NotFound(w, r) +} + +func (s baseServer) notAllowed(w http.ResponseWriter, r *http.Request, allowed string) { + s.cfg.MethodNotAllowed(w, r, allowed) +} + +func (cfg serverConfig) baseServer() (s baseServer, err error) { + s = baseServer{cfg: cfg} + if s.requests, err = otelogen.ServerRequestCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.errors, err = otelogen.ServerErrorsCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.duration, err = otelogen.ServerDurationHistogram(s.cfg.Meter); err != nil { + return s, err + } + return s, nil +} + +type clientConfig struct { + otelConfig + Client ht.Client +} + +// ClientOption is client config option. +type ClientOption interface { + applyClient(*clientConfig) +} + +var _ ClientOption = (optionFunc[clientConfig])(nil) + +func (o optionFunc[C]) applyClient(c *C) { + o(c) +} + +var _ ClientOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyClient(c *clientConfig) { + o(&c.otelConfig) +} + +func newClientConfig(opts ...ClientOption) clientConfig { + cfg := clientConfig{ + Client: http.DefaultClient, + } + for _, opt := range opts { + opt.applyClient(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseClient struct { + cfg clientConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (cfg clientConfig) baseClient() (c baseClient, err error) { + c = baseClient{cfg: cfg} + if c.requests, err = otelogen.ClientRequestCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.errors, err = otelogen.ClientErrorsCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.duration, err = otelogen.ClientDurationHistogram(c.cfg.Meter); err != nil { + return c, err + } + return c, nil +} + +// Option is config option. +type Option interface { + ServerOption + ClientOption +} + +// WithTracerProvider specifies a tracer provider to use for creating a tracer. +// +// If none is specified, the global provider is used. +func WithTracerProvider(provider trace.TracerProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.TracerProvider = provider + } + }) +} + +// WithMeterProvider specifies a meter provider to use for creating a meter. +// +// If none is specified, the otel.GetMeterProvider() is used. +func WithMeterProvider(provider metric.MeterProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.MeterProvider = provider + } + }) +} + +// WithClient specifies http client to use. +func WithClient(client ht.Client) ClientOption { + return optionFunc[clientConfig](func(cfg *clientConfig) { + if client != nil { + cfg.Client = client + } + }) +} + +// WithNotFound specifies Not Found handler to use. +func WithNotFound(notFound http.HandlerFunc) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if notFound != nil { + cfg.NotFound = notFound + } + }) +} + +// WithMethodNotAllowed specifies Method Not Allowed handler to use. +func WithMethodNotAllowed(methodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string)) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if methodNotAllowed != nil { + cfg.MethodNotAllowed = methodNotAllowed + } + }) +} + +// WithErrorHandler specifies error handler to use. +func WithErrorHandler(h ErrorHandler) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if h != nil { + cfg.ErrorHandler = h + } + }) +} + +// WithPathPrefix specifies server path prefix. +func WithPathPrefix(prefix string) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + cfg.Prefix = prefix + }) +} + +// WithMiddleware specifies middlewares to use. +func WithMiddleware(m ...Middleware) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + switch len(m) { + case 0: + cfg.Middleware = nil + case 1: + cfg.Middleware = m[0] + default: + cfg.Middleware = middleware.ChainMiddlewares(m...) + } + }) +} + +// WithMaxMultipartMemory specifies limit of memory for storing file parts. +// File parts which can't be stored in memory will be stored on disk in temporary files. +func WithMaxMultipartMemory(max int64) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if max > 0 { + cfg.MaxMultipartMemory = max + } + }) +} diff --git a/pkg/api/wb/client/oas_client_gen.go b/pkg/api/wb/client/oas_client_gen.go new file mode 100644 index 0000000..2529af5 --- /dev/null +++ b/pkg/api/wb/client/oas_client_gen.go @@ -0,0 +1,6749 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/url" + "strings" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + "go.opentelemetry.io/otel/trace" + + "github.com/ogen-go/ogen/conv" + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/uri" +) + +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + +// Invoker invokes operations described by OpenAPI v3 specification. +type Invoker interface { + // APIV2BufferGoodsTaskGet invokes GET /api/v2/buffer/goods/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² + // Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. + //
+ // НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ + // скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° + // Π°ΠΊΡ†ΠΈΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/buffer/goods/task + APIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (APIV2BufferGoodsTaskGetRes, error) + // APIV2BufferTasksGet invokes GET /api/v2/buffer/tasks operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. + //
+ // НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ + // скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° + // Π°ΠΊΡ†ΠΈΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/buffer/tasks + APIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (APIV2BufferTasksGetRes, error) + // APIV2HistoryGoodsTaskGet invokes GET /api/v2/history/goods/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± + // ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. + //
+ // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок + // для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/history/goods/task + APIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (APIV2HistoryGoodsTaskGetRes, error) + // APIV2HistoryTasksGet invokes GET /api/v2/history/tasks operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ + // Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок. + //
+ // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок + // для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/history/tasks + APIV2HistoryTasksGet(ctx context.Context, params APIV2HistoryTasksGetParams) (APIV2HistoryTasksGetRes, error) + // APIV2ListGoodsFilterGet invokes GET /api/v2/list/goods/filter operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… + // Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB + // ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, + // ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² + // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству + // записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` + // плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, + // ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ + // [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/list/goods/filter + APIV2ListGoodsFilterGet(ctx context.Context, params APIV2ListGoodsFilterGetParams) (APIV2ListGoodsFilterGetRes, error) + // APIV2ListGoodsSizeNmGet invokes GET /api/v2/list/goods/size/nm operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… + // ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки + // для [WB + // ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). + //

+ // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для + // Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/list/goods/size/nm + APIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (APIV2ListGoodsSizeNmGetRes, error) + // APIV2QuarantineGoodsGet invokes GET /api/v2/quarantine/goods operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. + //

+ // Если новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Β 3 + // Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π² + // ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ + // ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ по старой Ρ†Π΅Π½Π΅. Ошибка об этом Π±ΡƒΠ΄Π΅Ρ‚ Π² + // ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний + // Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get). + //

+ // Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ + // вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ + // ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine). + //

+ // Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой + // Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) + // ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/quarantine/goods + APIV2QuarantineGoodsGet(ctx context.Context, params APIV2QuarantineGoodsGetParams) (APIV2QuarantineGoodsGetRes, error) + // APIV2UploadTaskClubDiscountPost invokes POST /api/v2/upload/task/club-discount operation. + // + // УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB + // ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task/club-discount + APIV2UploadTaskClubDiscountPost(ctx context.Context, request *APIV2UploadTaskClubDiscountPostReq) (APIV2UploadTaskClubDiscountPostRes, error) + // APIV2UploadTaskPost invokes POST /api/v2/upload/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task + APIV2UploadTaskPost(ctx context.Context, request *APIV2UploadTaskPostReq) (APIV2UploadTaskPostRes, error) + // APIV2UploadTaskSizePost invokes POST /api/v2/upload/task/size operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для + // [Ρ‚Π°ΠΊΠΈΡ… + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`. + // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task/size + APIV2UploadTaskSizePost(ctx context.Context, request *APIV2UploadTaskSizePostReq) (APIV2UploadTaskSizePostRes, error) + // APIV3OfficesGet invokes GET /api/v3/offices operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для + // привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для + // опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ + // ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // GET /api/v3/offices + APIV3OfficesGet(ctx context.Context) (APIV3OfficesGetRes, error) + // APIV3StocksWarehouseIdDelete invokes DELETE /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· + // [списка + // остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток + // Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для + // возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // DELETE /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdDelete(ctx context.Context, request *APIV3StocksWarehouseIdDeleteReq, params APIV3StocksWarehouseIdDeleteParams) (APIV3StocksWarehouseIdDeleteRes, error) + // APIV3StocksWarehouseIdPost invokes POST /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° + // [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // POST /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdPost(ctx context.Context, request *APIV3StocksWarehouseIdPostReq, params APIV3StocksWarehouseIdPostParams) (APIV3StocksWarehouseIdPostRes, error) + // APIV3StocksWarehouseIdPut invokes PUT /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + // ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² + // спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ + // ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ + // ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // PUT /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdPut(ctx context.Context, request OptAPIV3StocksWarehouseIdPutReq, params APIV3StocksWarehouseIdPutParams) (APIV3StocksWarehouseIdPutRes, error) + // APIV3WarehousesGet invokes GET /api/v3/warehouses operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + // ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // GET /api/v3/warehouses + APIV3WarehousesGet(ctx context.Context) (APIV3WarehousesGetRes, error) + // APIV3WarehousesPost invokes POST /api/v3/warehouses operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + //
+ // НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // POST /api/v3/warehouses + APIV3WarehousesPost(ctx context.Context, request *APIV3WarehousesPostReq) (APIV3WarehousesPostRes, error) + // APIV3WarehousesWarehouseIdDelete invokes DELETE /api/v3/warehouses/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка + // складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // DELETE /api/v3/warehouses/{warehouseId} + APIV3WarehousesWarehouseIdDelete(ctx context.Context, params APIV3WarehousesWarehouseIdDeleteParams) (APIV3WarehousesWarehouseIdDeleteRes, error) + // APIV3WarehousesWarehouseIdPut invokes PUT /api/v3/warehouses/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС + // складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). + // Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС + // WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ + // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. + //
+ // НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // PUT /api/v3/warehouses/{warehouseId} + APIV3WarehousesWarehouseIdPut(ctx context.Context, request *APIV3WarehousesWarehouseIdPutReq, params APIV3WarehousesWarehouseIdPutParams) (APIV3WarehousesWarehouseIdPutRes, error) + // ContentV2BarcodesPost invokes POST /content/v2/barcodes operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для + // создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ + // Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/barcodes + ContentV2BarcodesPost(ctx context.Context, request *ContentV2BarcodesPostReq) (ContentV2BarcodesPostRes, error) + // ContentV2CardsDeleteTrashPost invokes POST /content/v2/cards/delete/trash operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). + //
+ // ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° + // присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ + // Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит + // ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² + // [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/cards/delete/trash + ContentV2CardsDeleteTrashPost(ctx context.Context, request *ContentV2CardsDeleteTrashPostReq) (ContentV2CardsDeleteTrashPostRes, error) + // ContentV2CardsErrorListGet invokes GET /content/v2/cards/error/list operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ + // создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ + // ошибки, с описаниСм этих ошибок. + //
+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ + // ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/cards/error/list + ContentV2CardsErrorListGet(ctx context.Context, params ContentV2CardsErrorListGetParams) (ContentV2CardsErrorListGetRes, error) + // ContentV2CardsLimitsGet invokes GET /content/v2/cards/limits operation. + // + // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° + // [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+ // Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ + // ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: + // > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/cards/limits + ContentV2CardsLimitsGet(ctx context.Context) (ContentV2CardsLimitsGetRes, error) + // ContentV2CardsRecoverPost invokes POST /content/v2/cards/recover operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· + // ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» + // присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/cards/recover + ContentV2CardsRecoverPost(ctx context.Context, request *ContentV2CardsRecoverPostReq) (ContentV2CardsRecoverPostRes, error) + // ContentV2CardsUpdatePost invokes POST /content/v2/cards/update operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для + // обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. + // ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС + // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ + // ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. + //
+ // НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ + // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ + // Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+ // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 + // Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/update + ContentV2CardsUpdatePost(ctx context.Context, request []ContentV2CardsUpdatePostReqItem) (ContentV2CardsUpdatePostRes, error) + // ContentV2CardsUploadAddPost invokes POST /content/v2/cards/upload/add operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… + // ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. + // ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/upload/add + ContentV2CardsUploadAddPost(ctx context.Context, request OptContentV2CardsUploadAddPostReq) (ContentV2CardsUploadAddPostRes, error) + // ContentV2CardsUploadPost invokes POST /content/v2/cards/upload operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ + // характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+ //
+ // Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ + // ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. + // ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
+ // Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 + // ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊΒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎΒ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Β ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/upload + ContentV2CardsUploadPost(ctx context.Context, request []ContentV2CardsUploadPostReqItem) (ContentV2CardsUploadPostRes, error) + // ContentV2DirectoryColorsGet invokes GET /content/v2/directory/colors operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/colors + ContentV2DirectoryColorsGet(ctx context.Context, params ContentV2DirectoryColorsGetParams) (ContentV2DirectoryColorsGetRes, error) + // ContentV2DirectoryCountriesGet invokes GET /content/v2/directory/countries operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/countries + ContentV2DirectoryCountriesGet(ctx context.Context, params ContentV2DirectoryCountriesGetParams) (ContentV2DirectoryCountriesGetRes, error) + // ContentV2DirectoryKindsGet invokes GET /content/v2/directory/kinds operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/kinds + ContentV2DirectoryKindsGet(ctx context.Context, params ContentV2DirectoryKindsGetParams) (ContentV2DirectoryKindsGetRes, error) + // ContentV2DirectorySeasonsGet invokes GET /content/v2/directory/seasons operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/seasons + ContentV2DirectorySeasonsGet(ctx context.Context, params ContentV2DirectorySeasonsGetParams) (ContentV2DirectorySeasonsGetRes, error) + // ContentV2DirectoryTnvedGet invokes GET /content/v2/directory/tnved operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID + // [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/tnved + ContentV2DirectoryTnvedGet(ctx context.Context, params ContentV2DirectoryTnvedGetParams) (ContentV2DirectoryTnvedGetRes, error) + // ContentV2DirectoryVatGet invokes GET /content/v2/directory/vat operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/vat + ContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (ContentV2DirectoryVatGetRes, error) + // ContentV2GetCardsListPost invokes POST /content/v2/get/cards/list operation. + // + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. + //
+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + //
    + //
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    + //
    +	// {
    +	// "settings": {
    +	// "cursor": {
    +	// "limit": 100
    +	// },
    +	// "filter": {
    +	// "withPhoto": -1
    +	// }
    +	// }
    +	// }
    + //
  2. + //
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. + //
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: + //
  6. + //
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса + // cursor.
  8. + //
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. + //
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ + // total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ + // limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/get/cards/list + ContentV2GetCardsListPost(ctx context.Context, request *ContentV2GetCardsListPostReq, params ContentV2GetCardsListPostParams) (ContentV2GetCardsListPostRes, error) + // ContentV2GetCardsTrashPost invokes POST /content/v2/get/cards/trash operation. + // + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + //
    + //
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    + //
    +	// {
    +	// "settings": {
    +	// "cursor": {
    +	// "limit": 100
    +	// },
    +	// "filter": {
    +	// "withPhoto": -1
    +	// }
    +	// }
    +	// }
    + //
  2. + //
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. + //
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: + //
  6. + //
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса + // cursor.
  8. + //
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. + //
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ + // total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ + // limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/get/cards/trash + ContentV2GetCardsTrashPost(ctx context.Context, request *ContentV2GetCardsTrashPostReq, params ContentV2GetCardsTrashPostParams) (ContentV2GetCardsTrashPostRes, error) + // ContentV2ObjectAllGet invokes GET /content/v2/object/all operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ + // ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/all + ContentV2ObjectAllGet(ctx context.Context, params ContentV2ObjectAllGetParams) (ContentV2ObjectAllGetRes, error) + // ContentV2ObjectCharcsSubjectIdGet invokes GET /content/v2/object/charcs/{subjectId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик + // ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ + // Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID + // [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). + //
+ // Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/charcs/{subjectId} + ContentV2ObjectCharcsSubjectIdGet(ctx context.Context, params ContentV2ObjectCharcsSubjectIdGetParams) (ContentV2ObjectCharcsSubjectIdGetRes, error) + // ContentV2ObjectParentAllGet invokes GET /content/v2/object/parent/all operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, + // `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/parent/all + ContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (ContentV2ObjectParentAllGetRes, error) + // ContentV2TagNomenclatureLinkPost invokes POST /content/v2/tag/nomenclature/link operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+ // ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ + // удаляСтся ΠΈΠ· [списка + // ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) + // ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/tag/nomenclature/link + ContentV2TagNomenclatureLinkPost(ctx context.Context, request *ContentV2TagNomenclatureLinkPostReq) (ContentV2TagNomenclatureLinkPostRes, error) + // ContentV2TagsGet invokes GET /content/v2/tags operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх + // ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/tags + ContentV2TagsGet(ctx context.Context) (ContentV2TagsGetRes, error) + // ContentV3MediaFilePost invokes POST /content/v3/media/file operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // ВрСбования ΠΊ изобраТСниям: + // * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 + // * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб + // * минимальноС качСство — 65% + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP + // ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: + // * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v3/media/file + ContentV3MediaFilePost(ctx context.Context, request *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (ContentV3MediaFilePostRes, error) + // ContentV3MediaSavePost invokes POST /content/v3/media/save operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° + // Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС. + //
+ // НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ + // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки + // ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹. + //
+ // ВрСбования ΠΊ изобраТСниям: + // * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 + // * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб + // * минимальноС качСство — 65% + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP + // ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: + // * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 + // Если Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ + // соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ + // ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v3/media/save + ContentV3MediaSavePost(ctx context.Context, request *ContentV3MediaSavePostReq) (ContentV3MediaSavePostRes, error) +} + +// Client implements OAS client. +type Client struct { + serverURL *url.URL + sec SecuritySource + baseClient +} + +var _ Handler = struct { + *Client +}{} + +// NewClient initializes new Client defined by OAS. +func NewClient(serverURL string, sec SecuritySource, opts ...ClientOption) (*Client, error) { + u, err := url.Parse(serverURL) + if err != nil { + return nil, err + } + trimTrailingSlashes(u) + + c, err := newClientConfig(opts...).baseClient() + if err != nil { + return nil, err + } + return &Client{ + serverURL: u, + sec: sec, + baseClient: c, + }, nil +} + +type serverURLKey struct{} + +// WithServerURL sets context key to override server URL. +func WithServerURL(ctx context.Context, u *url.URL) context.Context { + return context.WithValue(ctx, serverURLKey{}, u) +} + +func (c *Client) requestURL(ctx context.Context) *url.URL { + u, ok := ctx.Value(serverURLKey{}).(*url.URL) + if !ok { + return c.serverURL + } + return u +} + +// APIV2BufferGoodsTaskGet invokes GET /api/v2/buffer/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² +// Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/goods/task +func (c *Client) APIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (APIV2BufferGoodsTaskGetRes, error) { + res, err := c.sendAPIV2BufferGoodsTaskGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (res APIV2BufferGoodsTaskGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/buffer/goods/task"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2BufferGoodsTaskGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/buffer/goods/task" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.UintToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.UintToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "uploadID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2BufferGoodsTaskGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2BufferGoodsTaskGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2BufferTasksGet invokes GET /api/v2/buffer/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/tasks +func (c *Client) APIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (APIV2BufferTasksGetRes, error) { + res, err := c.sendAPIV2BufferTasksGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (res APIV2BufferTasksGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/buffer/tasks"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2BufferTasksGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/buffer/tasks" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "uploadID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2BufferTasksGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2BufferTasksGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2HistoryGoodsTaskGet invokes GET /api/v2/history/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± +// ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/goods/task +func (c *Client) APIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (APIV2HistoryGoodsTaskGetRes, error) { + res, err := c.sendAPIV2HistoryGoodsTaskGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (res APIV2HistoryGoodsTaskGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/history/goods/task"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2HistoryGoodsTaskGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/history/goods/task" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.UintToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.UintToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "uploadID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2HistoryGoodsTaskGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2HistoryGoodsTaskGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2HistoryTasksGet invokes GET /api/v2/history/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ +// Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/tasks +func (c *Client) APIV2HistoryTasksGet(ctx context.Context, params APIV2HistoryTasksGetParams) (APIV2HistoryTasksGetRes, error) { + res, err := c.sendAPIV2HistoryTasksGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2HistoryTasksGet(ctx context.Context, params APIV2HistoryTasksGetParams) (res APIV2HistoryTasksGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/history/tasks"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2HistoryTasksGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/history/tasks" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "uploadID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2HistoryTasksGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2HistoryTasksGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2ListGoodsFilterGet invokes GET /api/v2/list/goods/filter operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… +// Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, +// ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству +// записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` +// плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, +// ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ +// [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/filter +func (c *Client) APIV2ListGoodsFilterGet(ctx context.Context, params APIV2ListGoodsFilterGetParams) (APIV2ListGoodsFilterGetRes, error) { + res, err := c.sendAPIV2ListGoodsFilterGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2ListGoodsFilterGet(ctx context.Context, params APIV2ListGoodsFilterGetParams) (res APIV2ListGoodsFilterGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/list/goods/filter"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2ListGoodsFilterGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/list/goods/filter" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.UintToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.UintToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "filterNmID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "filterNmID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.FilterNmID.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2ListGoodsFilterGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2ListGoodsFilterGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2ListGoodsSizeNmGet invokes GET /api/v2/list/goods/size/nm operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… +// ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки +// для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/size/nm +func (c *Client) APIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (APIV2ListGoodsSizeNmGetRes, error) { + res, err := c.sendAPIV2ListGoodsSizeNmGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (res APIV2ListGoodsSizeNmGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/list/goods/size/nm"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2ListGoodsSizeNmGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/list/goods/size/nm" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.UintToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.UintToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "nmID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "nmID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.NmID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2ListGoodsSizeNmGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2ListGoodsSizeNmGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2QuarantineGoodsGet invokes GET /api/v2/quarantine/goods operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. +//

+// Если новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Β 3 +// Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π² +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ +// ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ по старой Ρ†Π΅Π½Π΅. Ошибка об этом Π±ΡƒΠ΄Π΅Ρ‚ Π² +// ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний +// Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get). +//

+// Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ +// вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ +// ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine). +//

+// Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой +// Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/quarantine/goods +func (c *Client) APIV2QuarantineGoodsGet(ctx context.Context, params APIV2QuarantineGoodsGetParams) (APIV2QuarantineGoodsGetRes, error) { + res, err := c.sendAPIV2QuarantineGoodsGet(ctx, params) + return res, err +} + +func (c *Client) sendAPIV2QuarantineGoodsGet(ctx context.Context, params APIV2QuarantineGoodsGetParams) (res APIV2QuarantineGoodsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/quarantine/goods"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2QuarantineGoodsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/quarantine/goods" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.UintToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.UintToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2QuarantineGoodsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2QuarantineGoodsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2UploadTaskClubDiscountPost invokes POST /api/v2/upload/task/club-discount operation. +// +// УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB +// ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/club-discount +func (c *Client) APIV2UploadTaskClubDiscountPost(ctx context.Context, request *APIV2UploadTaskClubDiscountPostReq) (APIV2UploadTaskClubDiscountPostRes, error) { + res, err := c.sendAPIV2UploadTaskClubDiscountPost(ctx, request) + return res, err +} + +func (c *Client) sendAPIV2UploadTaskClubDiscountPost(ctx context.Context, request *APIV2UploadTaskClubDiscountPostReq) (res APIV2UploadTaskClubDiscountPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task/club-discount"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2UploadTaskClubDiscountPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/upload/task/club-discount" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV2UploadTaskClubDiscountPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2UploadTaskClubDiscountPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2UploadTaskClubDiscountPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2UploadTaskPost invokes POST /api/v2/upload/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task +func (c *Client) APIV2UploadTaskPost(ctx context.Context, request *APIV2UploadTaskPostReq) (APIV2UploadTaskPostRes, error) { + res, err := c.sendAPIV2UploadTaskPost(ctx, request) + return res, err +} + +func (c *Client) sendAPIV2UploadTaskPost(ctx context.Context, request *APIV2UploadTaskPostReq) (res APIV2UploadTaskPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2UploadTaskPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/upload/task" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV2UploadTaskPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2UploadTaskPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2UploadTaskPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV2UploadTaskSizePost invokes POST /api/v2/upload/task/size operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// [Ρ‚Π°ΠΊΠΈΡ… +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`. +// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/size +func (c *Client) APIV2UploadTaskSizePost(ctx context.Context, request *APIV2UploadTaskSizePostReq) (APIV2UploadTaskSizePostRes, error) { + res, err := c.sendAPIV2UploadTaskSizePost(ctx, request) + return res, err +} + +func (c *Client) sendAPIV2UploadTaskSizePost(ctx context.Context, request *APIV2UploadTaskSizePostReq) (res APIV2UploadTaskSizePostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task/size"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV2UploadTaskSizePostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v2/upload/task/size" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV2UploadTaskSizePostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV2UploadTaskSizePostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV2UploadTaskSizePostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3OfficesGet invokes GET /api/v3/offices operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для +// привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для +// опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ +// ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/offices +func (c *Client) APIV3OfficesGet(ctx context.Context) (APIV3OfficesGetRes, error) { + res, err := c.sendAPIV3OfficesGet(ctx) + return res, err +} + +func (c *Client) sendAPIV3OfficesGet(ctx context.Context) (res APIV3OfficesGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v3/offices"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3OfficesGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v3/offices" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3OfficesGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3OfficesGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3StocksWarehouseIdDelete invokes DELETE /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· +// [списка +// остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток +// Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для +// возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/stocks/{warehouseId} +func (c *Client) APIV3StocksWarehouseIdDelete(ctx context.Context, request *APIV3StocksWarehouseIdDeleteReq, params APIV3StocksWarehouseIdDeleteParams) (APIV3StocksWarehouseIdDeleteRes, error) { + res, err := c.sendAPIV3StocksWarehouseIdDelete(ctx, request, params) + return res, err +} + +func (c *Client) sendAPIV3StocksWarehouseIdDelete(ctx context.Context, request *APIV3StocksWarehouseIdDeleteReq, params APIV3StocksWarehouseIdDeleteParams) (res APIV3StocksWarehouseIdDeleteRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3StocksWarehouseIdDeleteOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/v3/stocks/" + { + // Encode "warehouseId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "warehouseId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int64ToString(params.WarehouseId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "DELETE", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV3StocksWarehouseIdDeleteRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdDeleteOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3StocksWarehouseIdDeleteResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3StocksWarehouseIdPost invokes POST /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° +// [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/stocks/{warehouseId} +func (c *Client) APIV3StocksWarehouseIdPost(ctx context.Context, request *APIV3StocksWarehouseIdPostReq, params APIV3StocksWarehouseIdPostParams) (APIV3StocksWarehouseIdPostRes, error) { + res, err := c.sendAPIV3StocksWarehouseIdPost(ctx, request, params) + return res, err +} + +func (c *Client) sendAPIV3StocksWarehouseIdPost(ctx context.Context, request *APIV3StocksWarehouseIdPostReq, params APIV3StocksWarehouseIdPostParams) (res APIV3StocksWarehouseIdPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3StocksWarehouseIdPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/v3/stocks/" + { + // Encode "warehouseId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "warehouseId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int64ToString(params.WarehouseId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV3StocksWarehouseIdPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3StocksWarehouseIdPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3StocksWarehouseIdPut invokes PUT /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² +// спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ +// ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ +// ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/stocks/{warehouseId} +func (c *Client) APIV3StocksWarehouseIdPut(ctx context.Context, request OptAPIV3StocksWarehouseIdPutReq, params APIV3StocksWarehouseIdPutParams) (APIV3StocksWarehouseIdPutRes, error) { + res, err := c.sendAPIV3StocksWarehouseIdPut(ctx, request, params) + return res, err +} + +func (c *Client) sendAPIV3StocksWarehouseIdPut(ctx context.Context, request OptAPIV3StocksWarehouseIdPutReq, params APIV3StocksWarehouseIdPutParams) (res APIV3StocksWarehouseIdPutRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3StocksWarehouseIdPutOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/v3/stocks/" + { + // Encode "warehouseId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "warehouseId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int64ToString(params.WarehouseId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV3StocksWarehouseIdPutRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdPutOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3StocksWarehouseIdPutResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3WarehousesGet invokes GET /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +// ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/warehouses +func (c *Client) APIV3WarehousesGet(ctx context.Context) (APIV3WarehousesGetRes, error) { + res, err := c.sendAPIV3WarehousesGet(ctx) + return res, err +} + +func (c *Client) sendAPIV3WarehousesGet(ctx context.Context) (res APIV3WarehousesGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v3/warehouses"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3WarehousesGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v3/warehouses" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3WarehousesGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3WarehousesGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3WarehousesPost invokes POST /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/warehouses +func (c *Client) APIV3WarehousesPost(ctx context.Context, request *APIV3WarehousesPostReq) (APIV3WarehousesPostRes, error) { + res, err := c.sendAPIV3WarehousesPost(ctx, request) + return res, err +} + +func (c *Client) sendAPIV3WarehousesPost(ctx context.Context, request *APIV3WarehousesPostReq) (res APIV3WarehousesPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v3/warehouses"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3WarehousesPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/v3/warehouses" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV3WarehousesPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3WarehousesPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3WarehousesPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3WarehousesWarehouseIdDelete invokes DELETE /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/warehouses/{warehouseId} +func (c *Client) APIV3WarehousesWarehouseIdDelete(ctx context.Context, params APIV3WarehousesWarehouseIdDeleteParams) (APIV3WarehousesWarehouseIdDeleteRes, error) { + res, err := c.sendAPIV3WarehousesWarehouseIdDelete(ctx, params) + return res, err +} + +func (c *Client) sendAPIV3WarehousesWarehouseIdDelete(ctx context.Context, params APIV3WarehousesWarehouseIdDeleteParams) (res APIV3WarehousesWarehouseIdDeleteRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/v3/warehouses/{warehouseId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3WarehousesWarehouseIdDeleteOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/v3/warehouses/" + { + // Encode "warehouseId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "warehouseId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int64ToString(params.WarehouseId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "DELETE", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3WarehousesWarehouseIdDeleteOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3WarehousesWarehouseIdDeleteResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// APIV3WarehousesWarehouseIdPut invokes PUT /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +// Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС +// WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ +// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/warehouses/{warehouseId} +func (c *Client) APIV3WarehousesWarehouseIdPut(ctx context.Context, request *APIV3WarehousesWarehouseIdPutReq, params APIV3WarehousesWarehouseIdPutParams) (APIV3WarehousesWarehouseIdPutRes, error) { + res, err := c.sendAPIV3WarehousesWarehouseIdPut(ctx, request, params) + return res, err +} + +func (c *Client) sendAPIV3WarehousesWarehouseIdPut(ctx context.Context, request *APIV3WarehousesWarehouseIdPutReq, params APIV3WarehousesWarehouseIdPutParams) (res APIV3WarehousesWarehouseIdPutRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/v3/warehouses/{warehouseId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, APIV3WarehousesWarehouseIdPutOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/v3/warehouses/" + { + // Encode "warehouseId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "warehouseId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int64ToString(params.WarehouseId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAPIV3WarehousesWarehouseIdPutRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, APIV3WarehousesWarehouseIdPutOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAPIV3WarehousesWarehouseIdPutResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2BarcodesPost invokes POST /content/v2/barcodes operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для +// создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ +// Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/barcodes +func (c *Client) ContentV2BarcodesPost(ctx context.Context, request *ContentV2BarcodesPostReq) (ContentV2BarcodesPostRes, error) { + res, err := c.sendContentV2BarcodesPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2BarcodesPost(ctx context.Context, request *ContentV2BarcodesPostReq) (res ContentV2BarcodesPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/barcodes"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2BarcodesPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/barcodes" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2BarcodesPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2BarcodesPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2BarcodesPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsDeleteTrashPost invokes POST /content/v2/cards/delete/trash operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). +//
+// ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° +// присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ +// Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит +// ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² +// [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/delete/trash +func (c *Client) ContentV2CardsDeleteTrashPost(ctx context.Context, request *ContentV2CardsDeleteTrashPostReq) (ContentV2CardsDeleteTrashPostRes, error) { + res, err := c.sendContentV2CardsDeleteTrashPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2CardsDeleteTrashPost(ctx context.Context, request *ContentV2CardsDeleteTrashPostReq) (res ContentV2CardsDeleteTrashPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/delete/trash"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsDeleteTrashPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/delete/trash" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2CardsDeleteTrashPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsDeleteTrashPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsDeleteTrashPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsErrorListGet invokes GET /content/v2/cards/error/list operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ +// создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ +// ошибки, с описаниСм этих ошибок. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ +// ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/error/list +func (c *Client) ContentV2CardsErrorListGet(ctx context.Context, params ContentV2CardsErrorListGetParams) (ContentV2CardsErrorListGetRes, error) { + res, err := c.sendContentV2CardsErrorListGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2CardsErrorListGet(ctx context.Context, params ContentV2CardsErrorListGetParams) (res ContentV2CardsErrorListGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/cards/error/list"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsErrorListGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/error/list" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsErrorListGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsErrorListGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsLimitsGet invokes GET /content/v2/cards/limits operation. +// +// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° +// [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+// Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ +// ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: +// > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/limits +func (c *Client) ContentV2CardsLimitsGet(ctx context.Context) (ContentV2CardsLimitsGetRes, error) { + res, err := c.sendContentV2CardsLimitsGet(ctx) + return res, err +} + +func (c *Client) sendContentV2CardsLimitsGet(ctx context.Context) (res ContentV2CardsLimitsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/cards/limits"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsLimitsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/limits" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsLimitsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsLimitsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsRecoverPost invokes POST /content/v2/cards/recover operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» +// присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/recover +func (c *Client) ContentV2CardsRecoverPost(ctx context.Context, request *ContentV2CardsRecoverPostReq) (ContentV2CardsRecoverPostRes, error) { + res, err := c.sendContentV2CardsRecoverPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2CardsRecoverPost(ctx context.Context, request *ContentV2CardsRecoverPostReq) (res ContentV2CardsRecoverPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/recover"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsRecoverPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/recover" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2CardsRecoverPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsRecoverPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsRecoverPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsUpdatePost invokes POST /content/v2/cards/update operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для +// обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. +// ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ +// ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. +//
+// НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ +// Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 +// Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/update +func (c *Client) ContentV2CardsUpdatePost(ctx context.Context, request []ContentV2CardsUpdatePostReqItem) (ContentV2CardsUpdatePostRes, error) { + res, err := c.sendContentV2CardsUpdatePost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2CardsUpdatePost(ctx context.Context, request []ContentV2CardsUpdatePostReqItem) (res ContentV2CardsUpdatePostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/update"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsUpdatePostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/update" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2CardsUpdatePostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsUpdatePostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsUpdatePostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsUploadAddPost invokes POST /content/v2/cards/upload/add operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… +// ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload/add +func (c *Client) ContentV2CardsUploadAddPost(ctx context.Context, request OptContentV2CardsUploadAddPostReq) (ContentV2CardsUploadAddPostRes, error) { + res, err := c.sendContentV2CardsUploadAddPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2CardsUploadAddPost(ctx context.Context, request OptContentV2CardsUploadAddPostReq) (res ContentV2CardsUploadAddPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/upload/add"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsUploadAddPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/upload/add" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2CardsUploadAddPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsUploadAddPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsUploadAddPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2CardsUploadPost invokes POST /content/v2/cards/upload operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ +// характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+//
+// Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊΒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎΒ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Β ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload +func (c *Client) ContentV2CardsUploadPost(ctx context.Context, request []ContentV2CardsUploadPostReqItem) (ContentV2CardsUploadPostRes, error) { + res, err := c.sendContentV2CardsUploadPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2CardsUploadPost(ctx context.Context, request []ContentV2CardsUploadPostReqItem) (res ContentV2CardsUploadPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/upload"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2CardsUploadPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/cards/upload" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2CardsUploadPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2CardsUploadPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2CardsUploadPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectoryColorsGet invokes GET /content/v2/directory/colors operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/colors +func (c *Client) ContentV2DirectoryColorsGet(ctx context.Context, params ContentV2DirectoryColorsGetParams) (ContentV2DirectoryColorsGetRes, error) { + res, err := c.sendContentV2DirectoryColorsGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectoryColorsGet(ctx context.Context, params ContentV2DirectoryColorsGetParams) (res ContentV2DirectoryColorsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/colors"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectoryColorsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/colors" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectoryColorsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectoryColorsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectoryCountriesGet invokes GET /content/v2/directory/countries operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/countries +func (c *Client) ContentV2DirectoryCountriesGet(ctx context.Context, params ContentV2DirectoryCountriesGetParams) (ContentV2DirectoryCountriesGetRes, error) { + res, err := c.sendContentV2DirectoryCountriesGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectoryCountriesGet(ctx context.Context, params ContentV2DirectoryCountriesGetParams) (res ContentV2DirectoryCountriesGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/countries"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectoryCountriesGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/countries" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectoryCountriesGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectoryCountriesGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectoryKindsGet invokes GET /content/v2/directory/kinds operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/kinds +func (c *Client) ContentV2DirectoryKindsGet(ctx context.Context, params ContentV2DirectoryKindsGetParams) (ContentV2DirectoryKindsGetRes, error) { + res, err := c.sendContentV2DirectoryKindsGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectoryKindsGet(ctx context.Context, params ContentV2DirectoryKindsGetParams) (res ContentV2DirectoryKindsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/kinds"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectoryKindsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/kinds" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectoryKindsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectoryKindsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectorySeasonsGet invokes GET /content/v2/directory/seasons operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/seasons +func (c *Client) ContentV2DirectorySeasonsGet(ctx context.Context, params ContentV2DirectorySeasonsGetParams) (ContentV2DirectorySeasonsGetRes, error) { + res, err := c.sendContentV2DirectorySeasonsGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectorySeasonsGet(ctx context.Context, params ContentV2DirectorySeasonsGetParams) (res ContentV2DirectorySeasonsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/seasons"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectorySeasonsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/seasons" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectorySeasonsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectorySeasonsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectoryTnvedGet invokes GET /content/v2/directory/tnved operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/tnved +func (c *Client) ContentV2DirectoryTnvedGet(ctx context.Context, params ContentV2DirectoryTnvedGetParams) (ContentV2DirectoryTnvedGetRes, error) { + res, err := c.sendContentV2DirectoryTnvedGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectoryTnvedGet(ctx context.Context, params ContentV2DirectoryTnvedGetParams) (res ContentV2DirectoryTnvedGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/tnved"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectoryTnvedGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/tnved" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "subjectID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "subjectID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.SubjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "search" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "search", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Search.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectoryTnvedGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectoryTnvedGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2DirectoryVatGet invokes GET /content/v2/directory/vat operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/vat +func (c *Client) ContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (ContentV2DirectoryVatGetRes, error) { + res, err := c.sendContentV2DirectoryVatGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (res ContentV2DirectoryVatGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/vat"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2DirectoryVatGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/directory/vat" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2DirectoryVatGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2DirectoryVatGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2GetCardsListPost invokes POST /content/v2/get/cards/list operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/list +func (c *Client) ContentV2GetCardsListPost(ctx context.Context, request *ContentV2GetCardsListPostReq, params ContentV2GetCardsListPostParams) (ContentV2GetCardsListPostRes, error) { + res, err := c.sendContentV2GetCardsListPost(ctx, request, params) + return res, err +} + +func (c *Client) sendContentV2GetCardsListPost(ctx context.Context, request *ContentV2GetCardsListPostReq, params ContentV2GetCardsListPostParams) (res ContentV2GetCardsListPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/get/cards/list"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2GetCardsListPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/get/cards/list" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2GetCardsListPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2GetCardsListPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2GetCardsListPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2GetCardsTrashPost invokes POST /content/v2/get/cards/trash operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/trash +func (c *Client) ContentV2GetCardsTrashPost(ctx context.Context, request *ContentV2GetCardsTrashPostReq, params ContentV2GetCardsTrashPostParams) (ContentV2GetCardsTrashPostRes, error) { + res, err := c.sendContentV2GetCardsTrashPost(ctx, request, params) + return res, err +} + +func (c *Client) sendContentV2GetCardsTrashPost(ctx context.Context, request *ContentV2GetCardsTrashPostReq, params ContentV2GetCardsTrashPostParams) (res ContentV2GetCardsTrashPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/get/cards/trash"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2GetCardsTrashPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/get/cards/trash" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2GetCardsTrashPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2GetCardsTrashPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2GetCardsTrashPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2ObjectAllGet invokes GET /content/v2/object/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/all +func (c *Client) ContentV2ObjectAllGet(ctx context.Context, params ContentV2ObjectAllGetParams) (ContentV2ObjectAllGetRes, error) { + res, err := c.sendContentV2ObjectAllGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2ObjectAllGet(ctx context.Context, params ContentV2ObjectAllGetParams) (res ContentV2ObjectAllGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/all"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2ObjectAllGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/object/all" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Name.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Limit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Offset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "parentID" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "parentID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.ParentID.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2ObjectAllGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2ObjectAllGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2ObjectCharcsSubjectIdGet invokes GET /content/v2/object/charcs/{subjectId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ +// Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). +//
+// Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/charcs/{subjectId} +func (c *Client) ContentV2ObjectCharcsSubjectIdGet(ctx context.Context, params ContentV2ObjectCharcsSubjectIdGetParams) (ContentV2ObjectCharcsSubjectIdGetRes, error) { + res, err := c.sendContentV2ObjectCharcsSubjectIdGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2ObjectCharcsSubjectIdGet(ctx context.Context, params ContentV2ObjectCharcsSubjectIdGetParams) (res ContentV2ObjectCharcsSubjectIdGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/charcs/{subjectId}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2ObjectCharcsSubjectIdGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/content/v2/object/charcs/" + { + // Encode "subjectId" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "subjectId", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.SubjectId)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2ObjectCharcsSubjectIdGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2ObjectCharcsSubjectIdGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2ObjectParentAllGet invokes GET /content/v2/object/parent/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, +// `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/parent/all +func (c *Client) ContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (ContentV2ObjectParentAllGetRes, error) { + res, err := c.sendContentV2ObjectParentAllGet(ctx, params) + return res, err +} + +func (c *Client) sendContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (res ContentV2ObjectParentAllGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/parent/all"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2ObjectParentAllGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/object/parent/all" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "locale" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Locale.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2ObjectParentAllGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2ObjectParentAllGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2TagNomenclatureLinkPost invokes POST /content/v2/tag/nomenclature/link operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+// ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ +// удаляСтся ΠΈΠ· [списка +// ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/tag/nomenclature/link +func (c *Client) ContentV2TagNomenclatureLinkPost(ctx context.Context, request *ContentV2TagNomenclatureLinkPostReq) (ContentV2TagNomenclatureLinkPostRes, error) { + res, err := c.sendContentV2TagNomenclatureLinkPost(ctx, request) + return res, err +} + +func (c *Client) sendContentV2TagNomenclatureLinkPost(ctx context.Context, request *ContentV2TagNomenclatureLinkPostReq) (res ContentV2TagNomenclatureLinkPostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/tag/nomenclature/link"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2TagNomenclatureLinkPostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/tag/nomenclature/link" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV2TagNomenclatureLinkPostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2TagNomenclatureLinkPostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2TagNomenclatureLinkPostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV2TagsGet invokes GET /content/v2/tags operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх +// ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/tags +func (c *Client) ContentV2TagsGet(ctx context.Context) (ContentV2TagsGetRes, error) { + res, err := c.sendContentV2TagsGet(ctx) + return res, err +} + +func (c *Client) sendContentV2TagsGet(ctx context.Context) (res ContentV2TagsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/tags"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV2TagsGetOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v2/tags" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV2TagsGetOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV2TagsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV3MediaFilePost invokes POST /content/v3/media/file operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/file +func (c *Client) ContentV3MediaFilePost(ctx context.Context, request *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (ContentV3MediaFilePostRes, error) { + res, err := c.sendContentV3MediaFilePost(ctx, request, params) + return res, err +} + +func (c *Client) sendContentV3MediaFilePost(ctx context.Context, request *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (res ContentV3MediaFilePostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v3/media/file"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV3MediaFilePostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v3/media/file" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV3MediaFilePostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + stage = "EncodeHeaderParams" + h := uri.NewHeaderEncoder(r.Header) + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Nm-Id", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.XNmID)) + }); err != nil { + return res, errors.Wrap(err, "encode header") + } + } + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Photo-Number", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.XPhotoNumber)) + }); err != nil { + return res, errors.Wrap(err, "encode header") + } + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV3MediaFilePostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV3MediaFilePostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ContentV3MediaSavePost invokes POST /content/v3/media/save operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° +// Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС. +//
+// НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки +// ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹. +//
+// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +// Если Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ +// соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ +// ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/save +func (c *Client) ContentV3MediaSavePost(ctx context.Context, request *ContentV3MediaSavePostReq) (ContentV3MediaSavePostRes, error) { + res, err := c.sendContentV3MediaSavePost(ctx, request) + return res, err +} + +func (c *Client) sendContentV3MediaSavePost(ctx context.Context, request *ContentV3MediaSavePostReq) (res ContentV3MediaSavePostRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v3/media/save"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, ContentV3MediaSavePostOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/content/v3/media/save" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeContentV3MediaSavePostRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:HeaderApiKey" + switch err := c.securityHeaderApiKey(ctx, ContentV3MediaSavePostOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"HeaderApiKey\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeContentV3MediaSavePostResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} diff --git a/pkg/api/wb/client/oas_handlers_gen.go b/pkg/api/wb/client/oas_handlers_gen.go new file mode 100644 index 0000000..d3c339d --- /dev/null +++ b/pkg/api/wb/client/oas_handlers_gen.go @@ -0,0 +1,8243 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/http" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" +) + +type codeRecorder struct { + http.ResponseWriter + status int +} + +func (c *codeRecorder) WriteHeader(status int) { + c.status = status + c.ResponseWriter.WriteHeader(status) +} + +// handleAPIV2BufferGoodsTaskGetRequest handles GET /api/v2/buffer/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² +// Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/goods/task +func (s *Server) handleAPIV2BufferGoodsTaskGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/buffer/goods/task"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2BufferGoodsTaskGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2BufferGoodsTaskGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2BufferGoodsTaskGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2BufferGoodsTaskGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2BufferGoodsTaskGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2BufferGoodsTaskGetOperation, + OperationSummary: "ДСтализация Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + { + Name: "uploadID", + In: "query", + }: params.UploadID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2BufferGoodsTaskGetParams + Response = APIV2BufferGoodsTaskGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2BufferGoodsTaskGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2BufferGoodsTaskGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2BufferGoodsTaskGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2BufferGoodsTaskGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2BufferTasksGetRequest handles GET /api/v2/buffer/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/tasks +func (s *Server) handleAPIV2BufferTasksGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/buffer/tasks"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2BufferTasksGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2BufferTasksGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2BufferTasksGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2BufferTasksGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2BufferTasksGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2BufferTasksGetOperation, + OperationSummary: "БостояниС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "uploadID", + In: "query", + }: params.UploadID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2BufferTasksGetParams + Response = APIV2BufferTasksGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2BufferTasksGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2BufferTasksGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2BufferTasksGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2BufferTasksGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2HistoryGoodsTaskGetRequest handles GET /api/v2/history/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± +// ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/goods/task +func (s *Server) handleAPIV2HistoryGoodsTaskGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/history/goods/task"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2HistoryGoodsTaskGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2HistoryGoodsTaskGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2HistoryGoodsTaskGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2HistoryGoodsTaskGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2HistoryGoodsTaskGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2HistoryGoodsTaskGetOperation, + OperationSummary: "ДСтализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + { + Name: "uploadID", + In: "query", + }: params.UploadID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2HistoryGoodsTaskGetParams + Response = APIV2HistoryGoodsTaskGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2HistoryGoodsTaskGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2HistoryGoodsTaskGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2HistoryGoodsTaskGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2HistoryGoodsTaskGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2HistoryTasksGetRequest handles GET /api/v2/history/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ +// Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/tasks +func (s *Server) handleAPIV2HistoryTasksGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/history/tasks"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2HistoryTasksGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2HistoryTasksGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2HistoryTasksGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2HistoryTasksGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2HistoryTasksGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2HistoryTasksGetOperation, + OperationSummary: "БостояниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "uploadID", + In: "query", + }: params.UploadID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2HistoryTasksGetParams + Response = APIV2HistoryTasksGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2HistoryTasksGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2HistoryTasksGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2HistoryTasksGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2HistoryTasksGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2ListGoodsFilterGetRequest handles GET /api/v2/list/goods/filter operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… +// Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, +// ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству +// записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` +// плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, +// ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ +// [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/filter +func (s *Server) handleAPIV2ListGoodsFilterGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/list/goods/filter"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2ListGoodsFilterGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2ListGoodsFilterGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2ListGoodsFilterGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2ListGoodsFilterGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2ListGoodsFilterGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2ListGoodsFilterGetOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ с Ρ†Π΅Π½Π°ΠΌΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + { + Name: "filterNmID", + In: "query", + }: params.FilterNmID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2ListGoodsFilterGetParams + Response = APIV2ListGoodsFilterGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2ListGoodsFilterGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2ListGoodsFilterGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2ListGoodsFilterGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2ListGoodsFilterGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2ListGoodsSizeNmGetRequest handles GET /api/v2/list/goods/size/nm operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… +// ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки +// для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/size/nm +func (s *Server) handleAPIV2ListGoodsSizeNmGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/list/goods/size/nm"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2ListGoodsSizeNmGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2ListGoodsSizeNmGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2ListGoodsSizeNmGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2ListGoodsSizeNmGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2ListGoodsSizeNmGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2ListGoodsSizeNmGetOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° с Ρ†Π΅Π½Π°ΠΌΠΈ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + { + Name: "nmID", + In: "query", + }: params.NmID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2ListGoodsSizeNmGetParams + Response = APIV2ListGoodsSizeNmGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2ListGoodsSizeNmGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2ListGoodsSizeNmGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2ListGoodsSizeNmGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2ListGoodsSizeNmGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2QuarantineGoodsGetRequest handles GET /api/v2/quarantine/goods operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. +//

+// Если новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Β 3 +// Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π² +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ +// ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ по старой Ρ†Π΅Π½Π΅. Ошибка об этом Π±ΡƒΠ΄Π΅Ρ‚ Π² +// ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний +// Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get). +//

+// Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ +// вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ +// ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine). +//

+// Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой +// Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/quarantine/goods +func (s *Server) handleAPIV2QuarantineGoodsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v2/quarantine/goods"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2QuarantineGoodsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2QuarantineGoodsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2QuarantineGoodsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV2QuarantineGoodsGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV2QuarantineGoodsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2QuarantineGoodsGetOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV2QuarantineGoodsGetParams + Response = APIV2QuarantineGoodsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV2QuarantineGoodsGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2QuarantineGoodsGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV2QuarantineGoodsGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2QuarantineGoodsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2UploadTaskClubDiscountPostRequest handles POST /api/v2/upload/task/club-discount operation. +// +// УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB +// ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/club-discount +func (s *Server) handleAPIV2UploadTaskClubDiscountPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task/club-discount"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2UploadTaskClubDiscountPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2UploadTaskClubDiscountPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2UploadTaskClubDiscountPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeAPIV2UploadTaskClubDiscountPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV2UploadTaskClubDiscountPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2UploadTaskClubDiscountPostOperation, + OperationSummary: "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ скидки WB ΠšΠ»ΡƒΠ±Π°", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *APIV2UploadTaskClubDiscountPostReq + Params = struct{} + Response = APIV2UploadTaskClubDiscountPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2UploadTaskClubDiscountPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.APIV2UploadTaskClubDiscountPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2UploadTaskClubDiscountPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2UploadTaskPostRequest handles POST /api/v2/upload/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task +func (s *Server) handleAPIV2UploadTaskPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2UploadTaskPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2UploadTaskPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2UploadTaskPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeAPIV2UploadTaskPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV2UploadTaskPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2UploadTaskPostOperation, + OperationSummary: "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *APIV2UploadTaskPostReq + Params = struct{} + Response = APIV2UploadTaskPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2UploadTaskPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.APIV2UploadTaskPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2UploadTaskPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV2UploadTaskSizePostRequest handles POST /api/v2/upload/task/size operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// [Ρ‚Π°ΠΊΠΈΡ… +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`. +// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/size +func (s *Server) handleAPIV2UploadTaskSizePostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v2/upload/task/size"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV2UploadTaskSizePostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV2UploadTaskSizePostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV2UploadTaskSizePostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeAPIV2UploadTaskSizePostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV2UploadTaskSizePostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV2UploadTaskSizePostOperation, + OperationSummary: "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *APIV2UploadTaskSizePostReq + Params = struct{} + Response = APIV2UploadTaskSizePostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV2UploadTaskSizePost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.APIV2UploadTaskSizePost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV2UploadTaskSizePostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3OfficesGetRequest handles GET /api/v3/offices operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для +// привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для +// опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ +// ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/offices +func (s *Server) handleAPIV3OfficesGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v3/offices"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3OfficesGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3OfficesGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3OfficesGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response APIV3OfficesGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3OfficesGetOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов WB", + OperationID: "", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = APIV3OfficesGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3OfficesGet(ctx) + return response, err + }, + ) + } else { + response, err = s.h.APIV3OfficesGet(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3OfficesGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3StocksWarehouseIdDeleteRequest handles DELETE /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· +// [списка +// остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток +// Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для +// возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/stocks/{warehouseId} +func (s *Server) handleAPIV3StocksWarehouseIdDeleteRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3StocksWarehouseIdDeleteOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3StocksWarehouseIdDeleteOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdDeleteOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV3StocksWarehouseIdDeleteParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeAPIV3StocksWarehouseIdDeleteRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV3StocksWarehouseIdDeleteRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3StocksWarehouseIdDeleteOperation, + OperationSummary: "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "warehouseId", + In: "path", + }: params.WarehouseId, + }, + Raw: r, + } + + type ( + Request = *APIV3StocksWarehouseIdDeleteReq + Params = APIV3StocksWarehouseIdDeleteParams + Response = APIV3StocksWarehouseIdDeleteRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV3StocksWarehouseIdDeleteParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3StocksWarehouseIdDelete(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV3StocksWarehouseIdDelete(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3StocksWarehouseIdDeleteResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3StocksWarehouseIdPostRequest handles POST /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° +// [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/stocks/{warehouseId} +func (s *Server) handleAPIV3StocksWarehouseIdPostRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3StocksWarehouseIdPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3StocksWarehouseIdPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV3StocksWarehouseIdPostParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeAPIV3StocksWarehouseIdPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV3StocksWarehouseIdPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3StocksWarehouseIdPostOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "warehouseId", + In: "path", + }: params.WarehouseId, + }, + Raw: r, + } + + type ( + Request = *APIV3StocksWarehouseIdPostReq + Params = APIV3StocksWarehouseIdPostParams + Response = APIV3StocksWarehouseIdPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV3StocksWarehouseIdPostParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3StocksWarehouseIdPost(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV3StocksWarehouseIdPost(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3StocksWarehouseIdPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3StocksWarehouseIdPutRequest handles PUT /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² +// спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ +// ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ +// ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/stocks/{warehouseId} +func (s *Server) handleAPIV3StocksWarehouseIdPutRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/v3/stocks/{warehouseId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3StocksWarehouseIdPutOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3StocksWarehouseIdPutOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3StocksWarehouseIdPutOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV3StocksWarehouseIdPutParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeAPIV3StocksWarehouseIdPutRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV3StocksWarehouseIdPutRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3StocksWarehouseIdPutOperation, + OperationSummary: "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "warehouseId", + In: "path", + }: params.WarehouseId, + }, + Raw: r, + } + + type ( + Request = OptAPIV3StocksWarehouseIdPutReq + Params = APIV3StocksWarehouseIdPutParams + Response = APIV3StocksWarehouseIdPutRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV3StocksWarehouseIdPutParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3StocksWarehouseIdPut(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV3StocksWarehouseIdPut(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3StocksWarehouseIdPutResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3WarehousesGetRequest handles GET /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +// ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/warehouses +func (s *Server) handleAPIV3WarehousesGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/v3/warehouses"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3WarehousesGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3WarehousesGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3WarehousesGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response APIV3WarehousesGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3WarehousesGetOperation, + OperationSummary: "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°", + OperationID: "", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = APIV3WarehousesGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3WarehousesGet(ctx) + return response, err + }, + ) + } else { + response, err = s.h.APIV3WarehousesGet(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3WarehousesGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3WarehousesPostRequest handles POST /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/warehouses +func (s *Server) handleAPIV3WarehousesPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/v3/warehouses"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3WarehousesPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3WarehousesPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3WarehousesPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeAPIV3WarehousesPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV3WarehousesPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3WarehousesPostOperation, + OperationSummary: "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *APIV3WarehousesPostReq + Params = struct{} + Response = APIV3WarehousesPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3WarehousesPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.APIV3WarehousesPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3WarehousesPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3WarehousesWarehouseIdDeleteRequest handles DELETE /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/warehouses/{warehouseId} +func (s *Server) handleAPIV3WarehousesWarehouseIdDeleteRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/v3/warehouses/{warehouseId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3WarehousesWarehouseIdDeleteOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3WarehousesWarehouseIdDeleteOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3WarehousesWarehouseIdDeleteOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV3WarehousesWarehouseIdDeleteParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response APIV3WarehousesWarehouseIdDeleteRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3WarehousesWarehouseIdDeleteOperation, + OperationSummary: "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "warehouseId", + In: "path", + }: params.WarehouseId, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = APIV3WarehousesWarehouseIdDeleteParams + Response = APIV3WarehousesWarehouseIdDeleteRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV3WarehousesWarehouseIdDeleteParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3WarehousesWarehouseIdDelete(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV3WarehousesWarehouseIdDelete(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3WarehousesWarehouseIdDeleteResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleAPIV3WarehousesWarehouseIdPutRequest handles PUT /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +// Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС +// WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ +// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/warehouses/{warehouseId} +func (s *Server) handleAPIV3WarehousesWarehouseIdPutRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/v3/warehouses/{warehouseId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), APIV3WarehousesWarehouseIdPutOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: APIV3WarehousesWarehouseIdPutOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, APIV3WarehousesWarehouseIdPutOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeAPIV3WarehousesWarehouseIdPutParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeAPIV3WarehousesWarehouseIdPutRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response APIV3WarehousesWarehouseIdPutRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: APIV3WarehousesWarehouseIdPutOperation, + OperationSummary: "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "warehouseId", + In: "path", + }: params.WarehouseId, + }, + Raw: r, + } + + type ( + Request = *APIV3WarehousesWarehouseIdPutReq + Params = APIV3WarehousesWarehouseIdPutParams + Response = APIV3WarehousesWarehouseIdPutRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackAPIV3WarehousesWarehouseIdPutParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.APIV3WarehousesWarehouseIdPut(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.APIV3WarehousesWarehouseIdPut(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAPIV3WarehousesWarehouseIdPutResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2BarcodesPostRequest handles POST /content/v2/barcodes operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для +// создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ +// Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/barcodes +func (s *Server) handleContentV2BarcodesPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/barcodes"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2BarcodesPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2BarcodesPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2BarcodesPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2BarcodesPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2BarcodesPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2BarcodesPostOperation, + OperationSummary: "ГСнСрация Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *ContentV2BarcodesPostReq + Params = struct{} + Response = ContentV2BarcodesPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2BarcodesPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2BarcodesPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2BarcodesPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsDeleteTrashPostRequest handles POST /content/v2/cards/delete/trash operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). +//
+// ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° +// присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ +// Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит +// ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² +// [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/delete/trash +func (s *Server) handleContentV2CardsDeleteTrashPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/delete/trash"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsDeleteTrashPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsDeleteTrashPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsDeleteTrashPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2CardsDeleteTrashPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2CardsDeleteTrashPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsDeleteTrashPostOperation, + OperationSummary: "ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *ContentV2CardsDeleteTrashPostReq + Params = struct{} + Response = ContentV2CardsDeleteTrashPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsDeleteTrashPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsDeleteTrashPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsDeleteTrashPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsErrorListGetRequest handles GET /content/v2/cards/error/list operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ +// создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ +// ошибки, с описаниСм этих ошибок. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ +// ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/error/list +func (s *Server) handleContentV2CardsErrorListGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/cards/error/list"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsErrorListGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsErrorListGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsErrorListGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2CardsErrorListGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2CardsErrorListGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsErrorListGetOperation, + OperationSummary: "Бписок нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ошибками", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2CardsErrorListGetParams + Response = ContentV2CardsErrorListGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2CardsErrorListGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsErrorListGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsErrorListGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsErrorListGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsLimitsGetRequest handles GET /content/v2/cards/limits operation. +// +// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° +// [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+// Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ +// ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: +// > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/limits +func (s *Server) handleContentV2CardsLimitsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/cards/limits"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsLimitsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsLimitsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsLimitsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response ContentV2CardsLimitsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsLimitsGetOperation, + OperationSummary: "Π›ΠΈΠΌΠΈΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = ContentV2CardsLimitsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsLimitsGet(ctx) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsLimitsGet(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsLimitsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsRecoverPostRequest handles POST /content/v2/cards/recover operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» +// присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/recover +func (s *Server) handleContentV2CardsRecoverPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/recover"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsRecoverPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsRecoverPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsRecoverPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2CardsRecoverPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2CardsRecoverPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsRecoverPostOperation, + OperationSummary: "ВосстановлСниС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *ContentV2CardsRecoverPostReq + Params = struct{} + Response = ContentV2CardsRecoverPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsRecoverPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsRecoverPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsRecoverPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsUpdatePostRequest handles POST /content/v2/cards/update operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для +// обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. +// ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ +// ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. +//
+// НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ +// Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 +// Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/update +func (s *Server) handleContentV2CardsUpdatePostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/update"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsUpdatePostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsUpdatePostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsUpdatePostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2CardsUpdatePostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2CardsUpdatePostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsUpdatePostOperation, + OperationSummary: "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = []ContentV2CardsUpdatePostReqItem + Params = struct{} + Response = ContentV2CardsUpdatePostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsUpdatePost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsUpdatePost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsUpdatePostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsUploadAddPostRequest handles POST /content/v2/cards/upload/add operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… +// ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload/add +func (s *Server) handleContentV2CardsUploadAddPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/upload/add"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsUploadAddPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsUploadAddPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsUploadAddPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2CardsUploadAddPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2CardsUploadAddPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsUploadAddPostOperation, + OperationSummary: "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с присоСдинСниСм", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = OptContentV2CardsUploadAddPostReq + Params = struct{} + Response = ContentV2CardsUploadAddPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsUploadAddPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsUploadAddPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsUploadAddPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2CardsUploadPostRequest handles POST /content/v2/cards/upload operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ +// характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+//
+// Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊΒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎΒ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Β ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload +func (s *Server) handleContentV2CardsUploadPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/cards/upload"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2CardsUploadPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2CardsUploadPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2CardsUploadPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2CardsUploadPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2CardsUploadPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2CardsUploadPostOperation, + OperationSummary: "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = []ContentV2CardsUploadPostReqItem + Params = struct{} + Response = ContentV2CardsUploadPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2CardsUploadPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2CardsUploadPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2CardsUploadPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectoryColorsGetRequest handles GET /content/v2/directory/colors operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/colors +func (s *Server) handleContentV2DirectoryColorsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/colors"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectoryColorsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectoryColorsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectoryColorsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectoryColorsGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectoryColorsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectoryColorsGetOperation, + OperationSummary: "Π¦Π²Π΅Ρ‚", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectoryColorsGetParams + Response = ContentV2DirectoryColorsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectoryColorsGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectoryColorsGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectoryColorsGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectoryColorsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectoryCountriesGetRequest handles GET /content/v2/directory/countries operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/countries +func (s *Server) handleContentV2DirectoryCountriesGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/countries"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectoryCountriesGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectoryCountriesGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectoryCountriesGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectoryCountriesGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectoryCountriesGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectoryCountriesGetOperation, + OperationSummary: "Π‘Ρ‚Ρ€Π°Π½Π° производства", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectoryCountriesGetParams + Response = ContentV2DirectoryCountriesGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectoryCountriesGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectoryCountriesGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectoryCountriesGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectoryCountriesGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectoryKindsGetRequest handles GET /content/v2/directory/kinds operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/kinds +func (s *Server) handleContentV2DirectoryKindsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/kinds"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectoryKindsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectoryKindsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectoryKindsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectoryKindsGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectoryKindsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectoryKindsGetOperation, + OperationSummary: "Пол", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectoryKindsGetParams + Response = ContentV2DirectoryKindsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectoryKindsGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectoryKindsGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectoryKindsGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectoryKindsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectorySeasonsGetRequest handles GET /content/v2/directory/seasons operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/seasons +func (s *Server) handleContentV2DirectorySeasonsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/seasons"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectorySeasonsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectorySeasonsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectorySeasonsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectorySeasonsGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectorySeasonsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectorySeasonsGetOperation, + OperationSummary: "Π‘Π΅Π·ΠΎΠ½", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectorySeasonsGetParams + Response = ContentV2DirectorySeasonsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectorySeasonsGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectorySeasonsGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectorySeasonsGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectorySeasonsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectoryTnvedGetRequest handles GET /content/v2/directory/tnved operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/tnved +func (s *Server) handleContentV2DirectoryTnvedGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/tnved"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectoryTnvedGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectoryTnvedGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectoryTnvedGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectoryTnvedGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectoryTnvedGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectoryTnvedGetOperation, + OperationSummary: "ВНВЭД-ΠΊΠΎΠ΄", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "subjectID", + In: "query", + }: params.SubjectID, + { + Name: "search", + In: "query", + }: params.Search, + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectoryTnvedGetParams + Response = ContentV2DirectoryTnvedGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectoryTnvedGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectoryTnvedGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectoryTnvedGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectoryTnvedGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2DirectoryVatGetRequest handles GET /content/v2/directory/vat operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/vat +func (s *Server) handleContentV2DirectoryVatGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/directory/vat"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2DirectoryVatGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2DirectoryVatGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2DirectoryVatGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2DirectoryVatGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2DirectoryVatGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2DirectoryVatGetOperation, + OperationSummary: "Π‘Ρ‚Π°Π²ΠΊΠ° НДБ", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2DirectoryVatGetParams + Response = ContentV2DirectoryVatGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2DirectoryVatGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2DirectoryVatGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2DirectoryVatGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2DirectoryVatGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2GetCardsListPostRequest handles POST /content/v2/get/cards/list operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/list +func (s *Server) handleContentV2GetCardsListPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/get/cards/list"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2GetCardsListPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2GetCardsListPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2GetCardsListPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2GetCardsListPostParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeContentV2GetCardsListPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2GetCardsListPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2GetCardsListPostOperation, + OperationSummary: "Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = *ContentV2GetCardsListPostReq + Params = ContentV2GetCardsListPostParams + Response = ContentV2GetCardsListPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2GetCardsListPostParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2GetCardsListPost(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2GetCardsListPost(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2GetCardsListPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2GetCardsTrashPostRequest handles POST /content/v2/get/cards/trash operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/trash +func (s *Server) handleContentV2GetCardsTrashPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/get/cards/trash"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2GetCardsTrashPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2GetCardsTrashPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2GetCardsTrashPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2GetCardsTrashPostParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeContentV2GetCardsTrashPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2GetCardsTrashPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2GetCardsTrashPostOperation, + OperationSummary: "Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = *ContentV2GetCardsTrashPostReq + Params = ContentV2GetCardsTrashPostParams + Response = ContentV2GetCardsTrashPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2GetCardsTrashPostParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2GetCardsTrashPost(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2GetCardsTrashPost(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2GetCardsTrashPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2ObjectAllGetRequest handles GET /content/v2/object/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/all +func (s *Server) handleContentV2ObjectAllGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/all"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2ObjectAllGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2ObjectAllGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2ObjectAllGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2ObjectAllGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2ObjectAllGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2ObjectAllGetOperation, + OperationSummary: "Бписок ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + { + Name: "name", + In: "query", + }: params.Name, + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "offset", + In: "query", + }: params.Offset, + { + Name: "parentID", + In: "query", + }: params.ParentID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2ObjectAllGetParams + Response = ContentV2ObjectAllGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2ObjectAllGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2ObjectAllGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2ObjectAllGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2ObjectAllGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2ObjectCharcsSubjectIdGetRequest handles GET /content/v2/object/charcs/{subjectId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ +// Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). +//
+// Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/charcs/{subjectId} +func (s *Server) handleContentV2ObjectCharcsSubjectIdGetRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/charcs/{subjectId}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2ObjectCharcsSubjectIdGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2ObjectCharcsSubjectIdGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2ObjectCharcsSubjectIdGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2ObjectCharcsSubjectIdGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2ObjectCharcsSubjectIdGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2ObjectCharcsSubjectIdGetOperation, + OperationSummary: "Π₯арактСристики ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "subjectId", + In: "path", + }: params.SubjectId, + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2ObjectCharcsSubjectIdGetParams + Response = ContentV2ObjectCharcsSubjectIdGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2ObjectCharcsSubjectIdGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2ObjectCharcsSubjectIdGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2ObjectCharcsSubjectIdGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2ObjectCharcsSubjectIdGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2ObjectParentAllGetRequest handles GET /content/v2/object/parent/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, +// `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/parent/all +func (s *Server) handleContentV2ObjectParentAllGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/object/parent/all"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2ObjectParentAllGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2ObjectParentAllGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2ObjectParentAllGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV2ObjectParentAllGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ContentV2ObjectParentAllGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2ObjectParentAllGetOperation, + OperationSummary: "Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "locale", + In: "query", + }: params.Locale, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ContentV2ObjectParentAllGetParams + Response = ContentV2ObjectParentAllGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV2ObjectParentAllGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2ObjectParentAllGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2ObjectParentAllGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2ObjectParentAllGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2TagNomenclatureLinkPostRequest handles POST /content/v2/tag/nomenclature/link operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+// ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ +// удаляСтся ΠΈΠ· [списка +// ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/tag/nomenclature/link +func (s *Server) handleContentV2TagNomenclatureLinkPostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v2/tag/nomenclature/link"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2TagNomenclatureLinkPostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2TagNomenclatureLinkPostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2TagNomenclatureLinkPostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV2TagNomenclatureLinkPostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV2TagNomenclatureLinkPostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2TagNomenclatureLinkPostOperation, + OperationSummary: "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ярлыками Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *ContentV2TagNomenclatureLinkPostReq + Params = struct{} + Response = ContentV2TagNomenclatureLinkPostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2TagNomenclatureLinkPost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2TagNomenclatureLinkPost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2TagNomenclatureLinkPostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV2TagsGetRequest handles GET /content/v2/tags operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх +// ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/tags +func (s *Server) handleContentV2TagsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/content/v2/tags"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV2TagsGetOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV2TagsGetOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV2TagsGetOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response ContentV2TagsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV2TagsGetOperation, + OperationSummary: "Бписок ярлыков", + OperationID: "", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = ContentV2TagsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV2TagsGet(ctx) + return response, err + }, + ) + } else { + response, err = s.h.ContentV2TagsGet(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV2TagsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV3MediaFilePostRequest handles POST /content/v3/media/file operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/file +func (s *Server) handleContentV3MediaFilePostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v3/media/file"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV3MediaFilePostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV3MediaFilePostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV3MediaFilePostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeContentV3MediaFilePostParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeContentV3MediaFilePostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV3MediaFilePostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV3MediaFilePostOperation, + OperationSummary: "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»", + OperationID: "", + Body: request, + Params: middleware.Parameters{ + { + Name: "X-Nm-Id", + In: "header", + }: params.XNmID, + { + Name: "X-Photo-Number", + In: "header", + }: params.XPhotoNumber, + }, + Raw: r, + } + + type ( + Request = *ContentV3MediaFilePostReq + Params = ContentV3MediaFilePostParams + Response = ContentV3MediaFilePostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackContentV3MediaFilePostParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV3MediaFilePost(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.ContentV3MediaFilePost(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV3MediaFilePostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleContentV3MediaSavePostRequest handles POST /content/v3/media/save operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° +// Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС. +//
+// НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки +// ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹. +//
+// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +// Если Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ +// соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ +// ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/save +func (s *Server) handleContentV3MediaSavePostRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/content/v3/media/save"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ContentV3MediaSavePostOperation, + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + code := statusWriter.status + if code != 0 { + codeAttr := semconv.HTTPResponseStatusCode(code) + attrs = append(attrs, codeAttr) + span.SetAttributes(codeAttr) + } + attrOpt := metric.WithAttributes(attrs...) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, + // unless there was another error (e.g., network error receiving the response body; or 3xx codes with + // max redirects exceeded), in which case status MUST be set to Error. + code := statusWriter.status + if code >= 100 && code < 500 { + span.SetStatus(codes.Error, stage) + } + + attrSet := labeler.AttributeSet() + attrs := attrSet.ToSlice() + if code != 0 { + attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) + } + + s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: ContentV3MediaSavePostOperation, + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityHeaderApiKey(ctx, ContentV3MediaSavePostOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "HeaderApiKey", + Err: err, + } + defer recordError("Security:HeaderApiKey", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeContentV3MediaSavePostRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response ContentV3MediaSavePostRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ContentV3MediaSavePostOperation, + OperationSummary: "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ссылкам", + OperationID: "", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = *ContentV3MediaSavePostReq + Params = struct{} + Response = ContentV3MediaSavePostRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ContentV3MediaSavePost(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.ContentV3MediaSavePost(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeContentV3MediaSavePostResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} diff --git a/pkg/api/wb/client/oas_interfaces_gen.go b/pkg/api/wb/client/oas_interfaces_gen.go new file mode 100644 index 0000000..8823033 --- /dev/null +++ b/pkg/api/wb/client/oas_interfaces_gen.go @@ -0,0 +1,166 @@ +// Code generated by ogen, DO NOT EDIT. +package api + +type APIV2BufferGoodsTaskGetRes interface { + aPIV2BufferGoodsTaskGetRes() +} + +type APIV2BufferTasksGetRes interface { + aPIV2BufferTasksGetRes() +} + +type APIV2HistoryGoodsTaskGetRes interface { + aPIV2HistoryGoodsTaskGetRes() +} + +type APIV2HistoryTasksGetRes interface { + aPIV2HistoryTasksGetRes() +} + +type APIV2ListGoodsFilterGetRes interface { + aPIV2ListGoodsFilterGetRes() +} + +type APIV2ListGoodsSizeNmGetRes interface { + aPIV2ListGoodsSizeNmGetRes() +} + +type APIV2QuarantineGoodsGetRes interface { + aPIV2QuarantineGoodsGetRes() +} + +type APIV2UploadTaskClubDiscountPostRes interface { + aPIV2UploadTaskClubDiscountPostRes() +} + +type APIV2UploadTaskPostRes interface { + aPIV2UploadTaskPostRes() +} + +type APIV2UploadTaskSizePostRes interface { + aPIV2UploadTaskSizePostRes() +} + +type APIV3OfficesGetRes interface { + aPIV3OfficesGetRes() +} + +type APIV3StocksWarehouseIdDeleteRes interface { + aPIV3StocksWarehouseIdDeleteRes() +} + +type APIV3StocksWarehouseIdPostRes interface { + aPIV3StocksWarehouseIdPostRes() +} + +type APIV3StocksWarehouseIdPutRes interface { + aPIV3StocksWarehouseIdPutRes() +} + +type APIV3WarehousesGetRes interface { + aPIV3WarehousesGetRes() +} + +type APIV3WarehousesPostRes interface { + aPIV3WarehousesPostRes() +} + +type APIV3WarehousesWarehouseIdDeleteRes interface { + aPIV3WarehousesWarehouseIdDeleteRes() +} + +type APIV3WarehousesWarehouseIdPutRes interface { + aPIV3WarehousesWarehouseIdPutRes() +} + +type ContentV2BarcodesPostRes interface { + contentV2BarcodesPostRes() +} + +type ContentV2CardsDeleteTrashPostRes interface { + contentV2CardsDeleteTrashPostRes() +} + +type ContentV2CardsErrorListGetRes interface { + contentV2CardsErrorListGetRes() +} + +type ContentV2CardsLimitsGetRes interface { + contentV2CardsLimitsGetRes() +} + +type ContentV2CardsRecoverPostRes interface { + contentV2CardsRecoverPostRes() +} + +type ContentV2CardsUpdatePostRes interface { + contentV2CardsUpdatePostRes() +} + +type ContentV2CardsUploadAddPostRes interface { + contentV2CardsUploadAddPostRes() +} + +type ContentV2CardsUploadPostRes interface { + contentV2CardsUploadPostRes() +} + +type ContentV2DirectoryColorsGetRes interface { + contentV2DirectoryColorsGetRes() +} + +type ContentV2DirectoryCountriesGetRes interface { + contentV2DirectoryCountriesGetRes() +} + +type ContentV2DirectoryKindsGetRes interface { + contentV2DirectoryKindsGetRes() +} + +type ContentV2DirectorySeasonsGetRes interface { + contentV2DirectorySeasonsGetRes() +} + +type ContentV2DirectoryTnvedGetRes interface { + contentV2DirectoryTnvedGetRes() +} + +type ContentV2DirectoryVatGetRes interface { + contentV2DirectoryVatGetRes() +} + +type ContentV2GetCardsListPostRes interface { + contentV2GetCardsListPostRes() +} + +type ContentV2GetCardsTrashPostRes interface { + contentV2GetCardsTrashPostRes() +} + +type ContentV2ObjectAllGetRes interface { + contentV2ObjectAllGetRes() +} + +type ContentV2ObjectCharcsSubjectIdGetRes interface { + contentV2ObjectCharcsSubjectIdGetRes() +} + +type ContentV2ObjectParentAllGetRes interface { + contentV2ObjectParentAllGetRes() +} + +type ContentV2TagNomenclatureLinkPostRes interface { + contentV2TagNomenclatureLinkPostRes() +} + +type ContentV2TagsGetRes interface { + contentV2TagsGetRes() +} + +type ContentV3MediaFilePostRes interface { + contentV3MediaFilePostRes() +} + +type ContentV3MediaSavePostRes interface { + contentV3MediaSavePostRes() +} diff --git a/pkg/api/wb/client/oas_json_gen.go b/pkg/api/wb/client/oas_json_gen.go new file mode 100644 index 0000000..1951525 --- /dev/null +++ b/pkg/api/wb/client/oas_json_gen.go @@ -0,0 +1,19793 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "math/bits" + "strconv" + "time" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + "github.com/ogen-go/ogen/json" + "github.com/ogen-go/ogen/validate" +) + +// Encode implements json.Marshaler. +func (s *APIV2BufferGoodsTaskGetBadRequest) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2BufferGoodsTaskGetBadRequest) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2BufferGoodsTaskGetBadRequest = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes APIV2BufferGoodsTaskGetBadRequest from json. +func (s *APIV2BufferGoodsTaskGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2BufferGoodsTaskGetBadRequest to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2BufferGoodsTaskGetBadRequest") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2BufferGoodsTaskGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2BufferGoodsTaskGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2BufferGoodsTaskGetBadRequestData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2BufferGoodsTaskGetBadRequestData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfAPIV2BufferGoodsTaskGetBadRequestData = [0]string{} + +// Decode decodes APIV2BufferGoodsTaskGetBadRequestData from json. +func (s *APIV2BufferGoodsTaskGetBadRequestData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2BufferGoodsTaskGetBadRequestData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode APIV2BufferGoodsTaskGetBadRequestData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2BufferGoodsTaskGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2BufferGoodsTaskGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2BufferTasksGetBadRequest) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2BufferTasksGetBadRequest) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2BufferTasksGetBadRequest = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes APIV2BufferTasksGetBadRequest from json. +func (s *APIV2BufferTasksGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2BufferTasksGetBadRequest to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2BufferTasksGetBadRequest") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2BufferTasksGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2BufferTasksGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2BufferTasksGetBadRequestData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2BufferTasksGetBadRequestData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfAPIV2BufferTasksGetBadRequestData = [0]string{} + +// Decode decodes APIV2BufferTasksGetBadRequestData from json. +func (s *APIV2BufferTasksGetBadRequestData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2BufferTasksGetBadRequestData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode APIV2BufferTasksGetBadRequestData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2BufferTasksGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2BufferTasksGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequest) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2HistoryGoodsTaskGetBadRequest) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2HistoryGoodsTaskGetBadRequest = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes APIV2HistoryGoodsTaskGetBadRequest from json. +func (s *APIV2HistoryGoodsTaskGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2HistoryGoodsTaskGetBadRequest to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2HistoryGoodsTaskGetBadRequest") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequestData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2HistoryGoodsTaskGetBadRequestData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfAPIV2HistoryGoodsTaskGetBadRequestData = [0]string{} + +// Decode decodes APIV2HistoryGoodsTaskGetBadRequestData from json. +func (s *APIV2HistoryGoodsTaskGetBadRequestData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2HistoryGoodsTaskGetBadRequestData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode APIV2HistoryGoodsTaskGetBadRequestData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2HistoryGoodsTaskGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2HistoryTasksGetBadRequest) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2HistoryTasksGetBadRequest) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2HistoryTasksGetBadRequest = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes APIV2HistoryTasksGetBadRequest from json. +func (s *APIV2HistoryTasksGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2HistoryTasksGetBadRequest to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2HistoryTasksGetBadRequest") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2HistoryTasksGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2HistoryTasksGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2HistoryTasksGetBadRequestData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2HistoryTasksGetBadRequestData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfAPIV2HistoryTasksGetBadRequestData = [0]string{} + +// Decode decodes APIV2HistoryTasksGetBadRequestData from json. +func (s *APIV2HistoryTasksGetBadRequestData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2HistoryTasksGetBadRequestData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode APIV2HistoryTasksGetBadRequestData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2HistoryTasksGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2HistoryTasksGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2QuarantineGoodsGetBadRequest as json. +func (s *APIV2QuarantineGoodsGetBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2QuarantineGoodsGetBadRequest from json. +func (s *APIV2QuarantineGoodsGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2QuarantineGoodsGetBadRequest to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2QuarantineGoodsGetBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2QuarantineGoodsGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2QuarantineGoodsGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2QuarantineGoodsGetUnprocessableEntity as json. +func (s *APIV2QuarantineGoodsGetUnprocessableEntity) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2QuarantineGoodsGetUnprocessableEntity from json. +func (s *APIV2QuarantineGoodsGetUnprocessableEntity) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2QuarantineGoodsGetUnprocessableEntity to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2QuarantineGoodsGetUnprocessableEntity(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2QuarantineGoodsGetUnprocessableEntity) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2QuarantineGoodsGetUnprocessableEntity) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskClubDiscountPostBadRequest as json. +func (s *APIV2UploadTaskClubDiscountPostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskClubDiscountPostBadRequest from json. +func (s *APIV2UploadTaskClubDiscountPostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskClubDiscountPostBadRequest to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskClubDiscountPostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskClubDiscountPostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskClubDiscountPostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2UploadTaskClubDiscountPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2UploadTaskClubDiscountPostReq) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2UploadTaskClubDiscountPostReq = [1]string{ + 0: "data", +} + +// Decode decodes APIV2UploadTaskClubDiscountPostReq from json. +func (s *APIV2UploadTaskClubDiscountPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskClubDiscountPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2UploadTaskClubDiscountPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskClubDiscountPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskClubDiscountPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskClubDiscountPostUnprocessableEntity as json. +func (s *APIV2UploadTaskClubDiscountPostUnprocessableEntity) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskClubDiscountPostUnprocessableEntity from json. +func (s *APIV2UploadTaskClubDiscountPostUnprocessableEntity) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskClubDiscountPostUnprocessableEntity to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskClubDiscountPostUnprocessableEntity(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskClubDiscountPostUnprocessableEntity) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskClubDiscountPostUnprocessableEntity) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskPostBadRequest as json. +func (s *APIV2UploadTaskPostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskPostBadRequest from json. +func (s *APIV2UploadTaskPostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskPostBadRequest to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskPostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskPostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskPostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2UploadTaskPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2UploadTaskPostReq) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2UploadTaskPostReq = [1]string{ + 0: "data", +} + +// Decode decodes APIV2UploadTaskPostReq from json. +func (s *APIV2UploadTaskPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2UploadTaskPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskPostUnprocessableEntity as json. +func (s *APIV2UploadTaskPostUnprocessableEntity) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskPostUnprocessableEntity from json. +func (s *APIV2UploadTaskPostUnprocessableEntity) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskPostUnprocessableEntity to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskPostUnprocessableEntity(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskPostUnprocessableEntity) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskPostUnprocessableEntity) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskSizePostBadRequest as json. +func (s *APIV2UploadTaskSizePostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskSizePostBadRequest from json. +func (s *APIV2UploadTaskSizePostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskSizePostBadRequest to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskSizePostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskSizePostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskSizePostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV2UploadTaskSizePostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV2UploadTaskSizePostReq) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV2UploadTaskSizePostReq = [1]string{ + 0: "data", +} + +// Decode decodes APIV2UploadTaskSizePostReq from json. +func (s *APIV2UploadTaskSizePostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskSizePostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV2UploadTaskSizePostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskSizePostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskSizePostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV2UploadTaskSizePostUnprocessableEntity as json. +func (s *APIV2UploadTaskSizePostUnprocessableEntity) Encode(e *jx.Encoder) { + unwrapped := (*ResponseError)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV2UploadTaskSizePostUnprocessableEntity from json. +func (s *APIV2UploadTaskSizePostUnprocessableEntity) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV2UploadTaskSizePostUnprocessableEntity to nil") + } + var unwrapped ResponseError + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV2UploadTaskSizePostUnprocessableEntity(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV2UploadTaskSizePostUnprocessableEntity) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV2UploadTaskSizePostUnprocessableEntity) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3OfficesGetOKApplicationJSON as json. +func (s APIV3OfficesGetOKApplicationJSON) Encode(e *jx.Encoder) { + unwrapped := []Office(s) + + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() +} + +// Decode decodes APIV3OfficesGetOKApplicationJSON from json. +func (s *APIV3OfficesGetOKApplicationJSON) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3OfficesGetOKApplicationJSON to nil") + } + var unwrapped []Office + if err := func() error { + unwrapped = make([]Office, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Office + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3OfficesGetOKApplicationJSON(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s APIV3OfficesGetOKApplicationJSON) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3OfficesGetOKApplicationJSON) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdDeleteBadRequest as json. +func (s *APIV3StocksWarehouseIdDeleteBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdDeleteBadRequest from json. +func (s *APIV3StocksWarehouseIdDeleteBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdDeleteBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdDeleteBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdDeleteBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdDeleteConflict as json. +func (s *APIV3StocksWarehouseIdDeleteConflict) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdDeleteConflict from json. +func (s *APIV3StocksWarehouseIdDeleteConflict) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdDeleteConflict to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdDeleteConflict(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteConflict) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdDeleteConflict) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdDeleteForbidden as json. +func (s *APIV3StocksWarehouseIdDeleteForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdDeleteForbidden from json. +func (s *APIV3StocksWarehouseIdDeleteForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdDeleteForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdDeleteForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdDeleteForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdDeleteNotFound as json. +func (s *APIV3StocksWarehouseIdDeleteNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdDeleteNotFound from json. +func (s *APIV3StocksWarehouseIdDeleteNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdDeleteNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdDeleteNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdDeleteNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdDeleteReq) encodeFields(e *jx.Encoder) { + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdDeleteReq = [1]string{ + 0: "skus", +} + +// Decode decodes APIV3StocksWarehouseIdDeleteReq from json. +func (s *APIV3StocksWarehouseIdDeleteReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdDeleteReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdDeleteReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdDeleteReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdDeleteReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPostBadRequest as json. +func (s *APIV3StocksWarehouseIdPostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPostBadRequest from json. +func (s *APIV3StocksWarehouseIdPostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPostForbidden as json. +func (s *APIV3StocksWarehouseIdPostForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPostForbidden from json. +func (s *APIV3StocksWarehouseIdPostForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPostForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPostNotFound as json. +func (s *APIV3StocksWarehouseIdPostNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPostNotFound from json. +func (s *APIV3StocksWarehouseIdPostNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPostNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdPostOK) encodeFields(e *jx.Encoder) { + { + if s.Stocks != nil { + e.FieldStart("stocks") + e.ArrStart() + for _, elem := range s.Stocks { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdPostOK = [1]string{ + 0: "stocks", +} + +// Decode decodes APIV3StocksWarehouseIdPostOK from json. +func (s *APIV3StocksWarehouseIdPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "stocks": + if err := func() error { + s.Stocks = make([]APIV3StocksWarehouseIdPostOKStocksItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem APIV3StocksWarehouseIdPostOKStocksItem + if err := elem.Decode(d); err != nil { + return err + } + s.Stocks = append(s.Stocks, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"stocks\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) encodeFields(e *jx.Encoder) { + { + if s.Sku.Set { + e.FieldStart("sku") + s.Sku.Encode(e) + } + } + { + if s.Amount.Set { + e.FieldStart("amount") + s.Amount.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdPostOKStocksItem = [2]string{ + 0: "sku", + 1: "amount", +} + +// Decode decodes APIV3StocksWarehouseIdPostOKStocksItem from json. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostOKStocksItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sku": + if err := func() error { + s.Sku.Reset() + if err := s.Sku.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sku\"") + } + case "amount": + if err := func() error { + s.Amount.Reset() + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdPostOKStocksItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdPostReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdPostReq = [1]string{ + 0: "skus", +} + +// Decode decodes APIV3StocksWarehouseIdPostReq from json. +func (s *APIV3StocksWarehouseIdPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPostReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "skus": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdPostReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAPIV3StocksWarehouseIdPostReq) { + name = jsonFieldsNameOfAPIV3StocksWarehouseIdPostReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPutConflict as json. +func (s *APIV3StocksWarehouseIdPutConflict) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPutConflict from json. +func (s *APIV3StocksWarehouseIdPutConflict) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutConflict to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPutConflict(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPutConflict) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutConflict) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPutForbidden as json. +func (s *APIV3StocksWarehouseIdPutForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPutForbidden from json. +func (s *APIV3StocksWarehouseIdPutForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPutForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPutForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON as json. +func (s APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON) Encode(e *jx.Encoder) { + unwrapped := jx.Raw(s) + + if len(unwrapped) != 0 { + e.Raw(unwrapped) + } +} + +// Decode decodes APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON from json. +func (s *APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON to nil") + } + var unwrapped jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + unwrapped = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPutNotFound as json. +func (s *APIV3StocksWarehouseIdPutNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPutNotFound from json. +func (s *APIV3StocksWarehouseIdPutNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3StocksWarehouseIdPutNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPutNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdPutReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdPutReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("stocks") + e.ArrStart() + for _, elem := range s.Stocks { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdPutReq = [1]string{ + 0: "stocks", +} + +// Decode decodes APIV3StocksWarehouseIdPutReq from json. +func (s *APIV3StocksWarehouseIdPutReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "stocks": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Stocks = make([]APIV3StocksWarehouseIdPutReqStocksItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem APIV3StocksWarehouseIdPutReqStocksItem + if err := elem.Decode(d); err != nil { + return err + } + s.Stocks = append(s.Stocks, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"stocks\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdPutReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAPIV3StocksWarehouseIdPutReq) { + name = jsonFieldsNameOfAPIV3StocksWarehouseIdPutReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPutReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) encodeFields(e *jx.Encoder) { + { + if s.Sku.Set { + e.FieldStart("sku") + s.Sku.Encode(e) + } + } + { + if s.Amount.Set { + e.FieldStart("amount") + s.Amount.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV3StocksWarehouseIdPutReqStocksItem = [2]string{ + 0: "sku", + 1: "amount", +} + +// Decode decodes APIV3StocksWarehouseIdPutReqStocksItem from json. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3StocksWarehouseIdPutReqStocksItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sku": + if err := func() error { + s.Sku.Reset() + if err := s.Sku.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sku\"") + } + case "amount": + if err := func() error { + s.Amount.Reset() + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3StocksWarehouseIdPutReqStocksItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesGetOKApplicationJSON as json. +func (s APIV3WarehousesGetOKApplicationJSON) Encode(e *jx.Encoder) { + unwrapped := []Warehouse(s) + + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() +} + +// Decode decodes APIV3WarehousesGetOKApplicationJSON from json. +func (s *APIV3WarehousesGetOKApplicationJSON) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesGetOKApplicationJSON to nil") + } + var unwrapped []Warehouse + if err := func() error { + unwrapped = make([]Warehouse, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Warehouse + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesGetOKApplicationJSON(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s APIV3WarehousesGetOKApplicationJSON) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesGetOKApplicationJSON) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesPostBadRequest as json. +func (s *APIV3WarehousesPostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesPostBadRequest from json. +func (s *APIV3WarehousesPostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesPostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesPostConflict as json. +func (s *APIV3WarehousesPostConflict) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesPostConflict from json. +func (s *APIV3WarehousesPostConflict) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostConflict to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesPostConflict(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostConflict) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostConflict) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3WarehousesPostCreated) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3WarehousesPostCreated) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } +} + +var jsonFieldsNameOfAPIV3WarehousesPostCreated = [1]string{ + 0: "id", +} + +// Decode decodes APIV3WarehousesPostCreated from json. +func (s *APIV3WarehousesPostCreated) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostCreated to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3WarehousesPostCreated") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostCreated) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostCreated) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesPostForbidden as json. +func (s *APIV3WarehousesPostForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesPostForbidden from json. +func (s *APIV3WarehousesPostForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesPostForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesPostNotFound as json. +func (s *APIV3WarehousesPostNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesPostNotFound from json. +func (s *APIV3WarehousesPostNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesPostNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3WarehousesPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3WarehousesPostReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("officeId") + e.Int(s.OfficeId) + } +} + +var jsonFieldsNameOfAPIV3WarehousesPostReq = [2]string{ + 0: "name", + 1: "officeId", +} + +// Decode decodes APIV3WarehousesPostReq from json. +func (s *APIV3WarehousesPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesPostReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "name": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "officeId": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int() + s.OfficeId = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"officeId\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3WarehousesPostReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAPIV3WarehousesPostReq) { + name = jsonFieldsNameOfAPIV3WarehousesPostReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdDeleteForbidden as json. +func (s *APIV3WarehousesWarehouseIdDeleteForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdDeleteForbidden from json. +func (s *APIV3WarehousesWarehouseIdDeleteForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdDeleteForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdDeleteForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdDeleteForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdDeleteForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdDeleteNotFound as json. +func (s *APIV3WarehousesWarehouseIdDeleteNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdDeleteNotFound from json. +func (s *APIV3WarehousesWarehouseIdDeleteNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdDeleteNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdDeleteNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdDeleteNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdDeleteNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdPutBadRequest as json. +func (s *APIV3WarehousesWarehouseIdPutBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdPutBadRequest from json. +func (s *APIV3WarehousesWarehouseIdPutBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdPutBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdPutBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdPutBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdPutConflict as json. +func (s *APIV3WarehousesWarehouseIdPutConflict) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdPutConflict from json. +func (s *APIV3WarehousesWarehouseIdPutConflict) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdPutConflict to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdPutConflict(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutConflict) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdPutConflict) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdPutForbidden as json. +func (s *APIV3WarehousesWarehouseIdPutForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdPutForbidden from json. +func (s *APIV3WarehousesWarehouseIdPutForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdPutForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdPutForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdPutForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3WarehousesWarehouseIdPutNotFound as json. +func (s *APIV3WarehousesWarehouseIdPutNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes APIV3WarehousesWarehouseIdPutNotFound from json. +func (s *APIV3WarehousesWarehouseIdPutNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdPutNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = APIV3WarehousesWarehouseIdPutNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdPutNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *APIV3WarehousesWarehouseIdPutReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("officeId") + e.Int(s.OfficeId) + } +} + +var jsonFieldsNameOfAPIV3WarehousesWarehouseIdPutReq = [2]string{ + 0: "name", + 1: "officeId", +} + +// Decode decodes APIV3WarehousesWarehouseIdPutReq from json. +func (s *APIV3WarehousesWarehouseIdPutReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode APIV3WarehousesWarehouseIdPutReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "name": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "officeId": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int() + s.OfficeId = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"officeId\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode APIV3WarehousesWarehouseIdPutReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAPIV3WarehousesWarehouseIdPutReq) { + name = jsonFieldsNameOfAPIV3WarehousesWarehouseIdPutReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *APIV3WarehousesWarehouseIdPutReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *APIV3WarehousesWarehouseIdPutReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ClubDisc as json. +func (s ClubDisc) Encode(e *jx.Encoder) { + unwrapped := []ClubDiscReq(s) + if unwrapped == nil { + e.ArrEmpty() + return + } + if unwrapped != nil { + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() + } +} + +// Decode decodes ClubDisc from json. +func (s *ClubDisc) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ClubDisc to nil") + } + var unwrapped []ClubDiscReq + if err := func() error { + unwrapped = make([]ClubDiscReq, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ClubDiscReq + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ClubDisc(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ClubDisc) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ClubDisc) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ClubDiscReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ClubDiscReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("nmID") + e.Int(s.NmID) + } + { + e.FieldStart("clubDiscount") + e.Int(s.ClubDiscount) + } +} + +var jsonFieldsNameOfClubDiscReq = [2]string{ + 0: "nmID", + 1: "clubDiscount", +} + +// Decode decodes ClubDiscReq from json. +func (s *ClubDiscReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ClubDiscReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.NmID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "clubDiscount": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int() + s.ClubDiscount = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscount\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ClubDiscReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfClubDiscReq) { + name = jsonFieldsNameOfClubDiscReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ClubDiscReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ClubDiscReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2BarcodesPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2BarcodesPostOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2BarcodesPostOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2BarcodesPostOK from json. +func (s *ContentV2BarcodesPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2BarcodesPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2BarcodesPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2BarcodesPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2BarcodesPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2BarcodesPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2BarcodesPostReq) encodeFields(e *jx.Encoder) { + { + if s.Count.Set { + e.FieldStart("count") + s.Count.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2BarcodesPostReq = [1]string{ + 0: "count", +} + +// Decode decodes ContentV2BarcodesPostReq from json. +func (s *ContentV2BarcodesPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2BarcodesPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "count": + if err := func() error { + s.Count.Reset() + if err := s.Count.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"count\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2BarcodesPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2BarcodesPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2BarcodesPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsDeleteTrashPostOK) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsDeleteTrashPostOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2CardsDeleteTrashPostOK from json. +func (s *ContentV2CardsDeleteTrashPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsDeleteTrashPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsDeleteTrashPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsDeleteTrashPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOKAdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsDeleteTrashPostOKAdditionalErrors) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV2CardsDeleteTrashPostOKAdditionalErrors = [0]string{} + +// Decode decodes ContentV2CardsDeleteTrashPostOKAdditionalErrors from json. +func (s *ContentV2CardsDeleteTrashPostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsDeleteTrashPostOKAdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsDeleteTrashPostOKAdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsDeleteTrashPostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsDeleteTrashPostOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV2CardsDeleteTrashPostOKData = [0]string{} + +// Decode decodes ContentV2CardsDeleteTrashPostOKData from json. +func (s *ContentV2CardsDeleteTrashPostOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsDeleteTrashPostOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsDeleteTrashPostOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsDeleteTrashPostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsDeleteTrashPostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsDeleteTrashPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsDeleteTrashPostReq) encodeFields(e *jx.Encoder) { + { + if s.NmIDs != nil { + e.FieldStart("nmIDs") + e.ArrStart() + for _, elem := range s.NmIDs { + e.Int(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsDeleteTrashPostReq = [1]string{ + 0: "nmIDs", +} + +// Decode decodes ContentV2CardsDeleteTrashPostReq from json. +func (s *ContentV2CardsDeleteTrashPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsDeleteTrashPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmIDs": + if err := func() error { + s.NmIDs = make([]int, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem int + v, err := d.Int() + elem = int(v) + if err != nil { + return err + } + s.NmIDs = append(s.NmIDs, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmIDs\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsDeleteTrashPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsDeleteTrashPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsDeleteTrashPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsErrorListGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsErrorListGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsErrorListGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2CardsErrorListGetOK from json. +func (s *ContentV2CardsErrorListGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsErrorListGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]ContentV2CardsErrorListGetOKDataItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsErrorListGetOKDataItem + if err := elem.Decode(d); err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsErrorListGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsErrorListGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsErrorListGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsErrorListGetOKDataItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsErrorListGetOKDataItem) encodeFields(e *jx.Encoder) { + { + if s.Object.Set { + e.FieldStart("object") + s.Object.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.UpdateAt.Set { + e.FieldStart("updateAt") + s.UpdateAt.Encode(e) + } + } + { + if s.Errors != nil { + e.FieldStart("errors") + e.ArrStart() + for _, elem := range s.Errors { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.ObjectID.Set { + e.FieldStart("objectID") + s.ObjectID.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsErrorListGetOKDataItem = [5]string{ + 0: "object", + 1: "vendorCode", + 2: "updateAt", + 3: "errors", + 4: "objectID", +} + +// Decode decodes ContentV2CardsErrorListGetOKDataItem from json. +func (s *ContentV2CardsErrorListGetOKDataItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsErrorListGetOKDataItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "object": + if err := func() error { + s.Object.Reset() + if err := s.Object.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"object\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "updateAt": + if err := func() error { + s.UpdateAt.Reset() + if err := s.UpdateAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"updateAt\"") + } + case "errors": + if err := func() error { + s.Errors = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Errors = append(s.Errors, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errors\"") + } + case "objectID": + if err := func() error { + s.ObjectID.Reset() + if err := s.ObjectID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"objectID\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsErrorListGetOKDataItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsErrorListGetOKDataItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsErrorListGetOKDataItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsLimitsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsLimitsGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsLimitsGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2CardsLimitsGetOK from json. +func (s *ContentV2CardsLimitsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsLimitsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsLimitsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsLimitsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsLimitsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsLimitsGetOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsLimitsGetOKData) encodeFields(e *jx.Encoder) { + { + if s.FreeLimits.Set { + e.FieldStart("freeLimits") + s.FreeLimits.Encode(e) + } + } + { + if s.PaidLimits.Set { + e.FieldStart("paidLimits") + s.PaidLimits.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsLimitsGetOKData = [2]string{ + 0: "freeLimits", + 1: "paidLimits", +} + +// Decode decodes ContentV2CardsLimitsGetOKData from json. +func (s *ContentV2CardsLimitsGetOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsLimitsGetOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "freeLimits": + if err := func() error { + s.FreeLimits.Reset() + if err := s.FreeLimits.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"freeLimits\"") + } + case "paidLimits": + if err := func() error { + s.PaidLimits.Reset() + if err := s.PaidLimits.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"paidLimits\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsLimitsGetOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsLimitsGetOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsLimitsGetOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsRecoverPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsRecoverPostOK) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsRecoverPostOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2CardsRecoverPostOK from json. +func (s *ContentV2CardsRecoverPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsRecoverPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsRecoverPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsRecoverPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsRecoverPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsRecoverPostOKAdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsRecoverPostOKAdditionalErrors) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV2CardsRecoverPostOKAdditionalErrors = [0]string{} + +// Decode decodes ContentV2CardsRecoverPostOKAdditionalErrors from json. +func (s *ContentV2CardsRecoverPostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsRecoverPostOKAdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsRecoverPostOKAdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsRecoverPostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsRecoverPostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsRecoverPostOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsRecoverPostOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV2CardsRecoverPostOKData = [0]string{} + +// Decode decodes ContentV2CardsRecoverPostOKData from json. +func (s *ContentV2CardsRecoverPostOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsRecoverPostOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsRecoverPostOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsRecoverPostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsRecoverPostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsRecoverPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsRecoverPostReq) encodeFields(e *jx.Encoder) { + { + if s.NmIDs != nil { + e.FieldStart("nmIDs") + e.ArrStart() + for _, elem := range s.NmIDs { + e.Int(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsRecoverPostReq = [1]string{ + 0: "nmIDs", +} + +// Decode decodes ContentV2CardsRecoverPostReq from json. +func (s *ContentV2CardsRecoverPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsRecoverPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmIDs": + if err := func() error { + s.NmIDs = make([]int, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem int + v, err := d.Int() + elem = int(v) + if err != nil { + return err + } + s.NmIDs = append(s.NmIDs, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmIDs\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsRecoverPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsRecoverPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsRecoverPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUpdatePostReqItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUpdatePostReqItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("nmID") + e.Int(s.NmID) + } + { + e.FieldStart("vendorCode") + e.Str(s.VendorCode) + } + { + if s.Brand.Set { + e.FieldStart("brand") + s.Brand.Encode(e) + } + } + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Description.Set { + e.FieldStart("description") + s.Description.Encode(e) + } + } + { + if s.Dimensions.Set { + e.FieldStart("dimensions") + s.Dimensions.Encode(e) + } + } + { + if s.Characteristics != nil { + e.FieldStart("characteristics") + e.ArrStart() + for _, elem := range s.Characteristics { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfContentV2CardsUpdatePostReqItem = [8]string{ + 0: "nmID", + 1: "vendorCode", + 2: "brand", + 3: "title", + 4: "description", + 5: "dimensions", + 6: "characteristics", + 7: "sizes", +} + +// Decode decodes ContentV2CardsUpdatePostReqItem from json. +func (s *ContentV2CardsUpdatePostReqItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUpdatePostReqItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.NmID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "vendorCode": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.VendorCode = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "brand": + if err := func() error { + s.Brand.Reset() + if err := s.Brand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brand\"") + } + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "description": + if err := func() error { + s.Description.Reset() + if err := s.Description.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"description\"") + } + case "dimensions": + if err := func() error { + s.Dimensions.Reset() + if err := s.Dimensions.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"dimensions\"") + } + case "characteristics": + if err := func() error { + s.Characteristics = make([]ContentV2CardsUpdatePostReqItemCharacteristicsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUpdatePostReqItemCharacteristicsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Characteristics = append(s.Characteristics, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"characteristics\"") + } + case "sizes": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + s.Sizes = make([]ContentV2CardsUpdatePostReqItemSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUpdatePostReqItemSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUpdatePostReqItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b10000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUpdatePostReqItem) { + name = jsonFieldsNameOfContentV2CardsUpdatePostReqItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUpdatePostReqItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUpdatePostReqItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if len(s.Value) != 0 { + e.FieldStart("value") + e.Raw(s.Value) + } + } +} + +var jsonFieldsNameOfContentV2CardsUpdatePostReqItemCharacteristicsItem = [2]string{ + 0: "id", + 1: "value", +} + +// Decode decodes ContentV2CardsUpdatePostReqItemCharacteristicsItem from json. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUpdatePostReqItemCharacteristicsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "value": + if err := func() error { + v, err := d.RawAppend(nil) + s.Value = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUpdatePostReqItemCharacteristicsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemDimensions) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUpdatePostReqItemDimensions) encodeFields(e *jx.Encoder) { + { + if s.Length.Set { + e.FieldStart("length") + s.Length.Encode(e) + } + } + { + if s.Width.Set { + e.FieldStart("width") + s.Width.Encode(e) + } + } + { + if s.Height.Set { + e.FieldStart("height") + s.Height.Encode(e) + } + } + { + if s.WeightBrutto.Set { + e.FieldStart("weightBrutto") + s.WeightBrutto.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUpdatePostReqItemDimensions = [4]string{ + 0: "length", + 1: "width", + 2: "height", + 3: "weightBrutto", +} + +// Decode decodes ContentV2CardsUpdatePostReqItemDimensions from json. +func (s *ContentV2CardsUpdatePostReqItemDimensions) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUpdatePostReqItemDimensions to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "length": + if err := func() error { + s.Length.Reset() + if err := s.Length.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"length\"") + } + case "width": + if err := func() error { + s.Width.Reset() + if err := s.Width.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"width\"") + } + case "height": + if err := func() error { + s.Height.Reset() + if err := s.Height.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"height\"") + } + case "weightBrutto": + if err := func() error { + s.WeightBrutto.Reset() + if err := s.WeightBrutto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"weightBrutto\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUpdatePostReqItemDimensions") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUpdatePostReqItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) encodeFields(e *jx.Encoder) { + { + if s.ChrtID.Set { + e.FieldStart("chrtID") + s.ChrtID.Encode(e) + } + } + { + if s.TechSize.Set { + e.FieldStart("techSize") + s.TechSize.Encode(e) + } + } + { + if s.WbSize.Set { + e.FieldStart("wbSize") + s.WbSize.Encode(e) + } + } + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUpdatePostReqItemSizesItem = [4]string{ + 0: "chrtID", + 1: "techSize", + 2: "wbSize", + 3: "skus", +} + +// Decode decodes ContentV2CardsUpdatePostReqItemSizesItem from json. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUpdatePostReqItemSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "chrtID": + if err := func() error { + s.ChrtID.Reset() + if err := s.ChrtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"chrtID\"") + } + case "techSize": + if err := func() error { + s.TechSize.Reset() + if err := s.TechSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSize\"") + } + case "wbSize": + if err := func() error { + s.WbSize.Reset() + if err := s.WbSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"wbSize\"") + } + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUpdatePostReqItemSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) encodeFields(e *jx.Encoder) { + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Detail.Set { + e.FieldStart("detail") + s.Detail.Encode(e) + } + } + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.RequestId.Set { + e.FieldStart("requestId") + s.RequestId.Encode(e) + } + } + { + if s.Origin.Set { + e.FieldStart("origin") + s.Origin.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.StatusText.Set { + e.FieldStart("statusText") + s.StatusText.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUpdatePostRequestEntityTooLarge = [7]string{ + 0: "title", + 1: "detail", + 2: "code", + 3: "requestId", + 4: "origin", + 5: "status", + 6: "statusText", +} + +// Decode decodes ContentV2CardsUpdatePostRequestEntityTooLarge from json. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUpdatePostRequestEntityTooLarge to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "detail": + if err := func() error { + s.Detail.Reset() + if err := s.Detail.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"detail\"") + } + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "requestId": + if err := func() error { + s.RequestId.Reset() + if err := s.RequestId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"requestId\"") + } + case "origin": + if err := func() error { + s.Origin.Reset() + if err := s.Origin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"origin\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "statusText": + if err := func() error { + s.StatusText.Reset() + if err := s.StatusText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"statusText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUpdatePostRequestEntityTooLarge") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostReq) encodeFields(e *jx.Encoder) { + { + if s.ImtID.Set { + e.FieldStart("imtID") + s.ImtID.Encode(e) + } + } + { + if s.CardsToAdd != nil { + e.FieldStart("cardsToAdd") + e.ArrStart() + for _, elem := range s.CardsToAdd { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostReq = [2]string{ + 0: "imtID", + 1: "cardsToAdd", +} + +// Decode decodes ContentV2CardsUploadAddPostReq from json. +func (s *ContentV2CardsUploadAddPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "imtID": + if err := func() error { + s.ImtID.Reset() + if err := s.ImtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"imtID\"") + } + case "cardsToAdd": + if err := func() error { + s.CardsToAdd = make([]ContentV2CardsUploadAddPostReqCardsToAddItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadAddPostReqCardsToAddItem + if err := elem.Decode(d); err != nil { + return err + } + s.CardsToAdd = append(s.CardsToAdd, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cardsToAdd\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) encodeFields(e *jx.Encoder) { + { + if s.Brand.Set { + e.FieldStart("brand") + s.Brand.Encode(e) + } + } + { + e.FieldStart("vendorCode") + e.Str(s.VendorCode) + } + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Description.Set { + e.FieldStart("description") + s.Description.Encode(e) + } + } + { + if s.Dimensions.Set { + e.FieldStart("dimensions") + s.Dimensions.Encode(e) + } + } + { + if s.Sizes != nil { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Characteristics != nil { + e.FieldStart("characteristics") + e.ArrStart() + for _, elem := range s.Characteristics { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItem = [7]string{ + 0: "brand", + 1: "vendorCode", + 2: "title", + 3: "description", + 4: "dimensions", + 5: "sizes", + 6: "characteristics", +} + +// Decode decodes ContentV2CardsUploadAddPostReqCardsToAddItem from json. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostReqCardsToAddItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "brand": + if err := func() error { + s.Brand.Reset() + if err := s.Brand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brand\"") + } + case "vendorCode": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.VendorCode = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "description": + if err := func() error { + s.Description.Reset() + if err := s.Description.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"description\"") + } + case "dimensions": + if err := func() error { + s.Dimensions.Reset() + if err := s.Dimensions.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"dimensions\"") + } + case "sizes": + if err := func() error { + s.Sizes = make([]ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + case "characteristics": + if err := func() error { + s.Characteristics = make([]ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Characteristics = append(s.Characteristics, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"characteristics\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostReqCardsToAddItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000010, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItem) { + name = jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Int(s.ID) + } + { + if len(s.Value) != 0 { + e.FieldStart("value") + e.Raw(s.Value) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem = [2]string{ + 0: "id", + 1: "value", +} + +// Decode decodes ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem from json. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.ID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "value": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.RawAppend(nil) + s.Value = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) { + name = jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) encodeFields(e *jx.Encoder) { + { + if s.Length.Set { + e.FieldStart("length") + s.Length.Encode(e) + } + } + { + if s.Width.Set { + e.FieldStart("width") + s.Width.Encode(e) + } + } + { + if s.Height.Set { + e.FieldStart("height") + s.Height.Encode(e) + } + } + { + if s.WeightBrutto.Set { + e.FieldStart("weightBrutto") + s.WeightBrutto.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItemDimensions = [4]string{ + 0: "length", + 1: "width", + 2: "height", + 3: "weightBrutto", +} + +// Decode decodes ContentV2CardsUploadAddPostReqCardsToAddItemDimensions from json. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostReqCardsToAddItemDimensions to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "length": + if err := func() error { + s.Length.Reset() + if err := s.Length.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"length\"") + } + case "width": + if err := func() error { + s.Width.Reset() + if err := s.Width.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"width\"") + } + case "height": + if err := func() error { + s.Height.Reset() + if err := s.Height.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"height\"") + } + case "weightBrutto": + if err := func() error { + s.WeightBrutto.Reset() + if err := s.WeightBrutto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"weightBrutto\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostReqCardsToAddItemDimensions") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) encodeFields(e *jx.Encoder) { + { + if s.TechSize.Set { + e.FieldStart("techSize") + s.TechSize.Encode(e) + } + } + { + if s.WbSize.Set { + e.FieldStart("wbSize") + s.WbSize.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostReqCardsToAddItemSizesItem = [4]string{ + 0: "techSize", + 1: "wbSize", + 2: "price", + 3: "skus", +} + +// Decode decodes ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem from json. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "techSize": + if err := func() error { + s.TechSize.Reset() + if err := s.TechSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSize\"") + } + case "wbSize": + if err := func() error { + s.WbSize.Reset() + if err := s.WbSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"wbSize\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) encodeFields(e *jx.Encoder) { + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Detail.Set { + e.FieldStart("detail") + s.Detail.Encode(e) + } + } + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.RequestId.Set { + e.FieldStart("requestId") + s.RequestId.Encode(e) + } + } + { + if s.Origin.Set { + e.FieldStart("origin") + s.Origin.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.StatusText.Set { + e.FieldStart("statusText") + s.StatusText.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadAddPostRequestEntityTooLarge = [7]string{ + 0: "title", + 1: "detail", + 2: "code", + 3: "requestId", + 4: "origin", + 5: "status", + 6: "statusText", +} + +// Decode decodes ContentV2CardsUploadAddPostRequestEntityTooLarge from json. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadAddPostRequestEntityTooLarge to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "detail": + if err := func() error { + s.Detail.Reset() + if err := s.Detail.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"detail\"") + } + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "requestId": + if err := func() error { + s.RequestId.Reset() + if err := s.RequestId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"requestId\"") + } + case "origin": + if err := func() error { + s.Origin.Reset() + if err := s.Origin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"origin\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "statusText": + if err := func() error { + s.StatusText.Reset() + if err := s.StatusText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"statusText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadAddPostRequestEntityTooLarge") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostReqItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostReqItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("subjectID") + e.Int(s.SubjectID) + } + { + e.FieldStart("variants") + e.ArrStart() + for _, elem := range s.Variants { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostReqItem = [2]string{ + 0: "subjectID", + 1: "variants", +} + +// Decode decodes ContentV2CardsUploadPostReqItem from json. +func (s *ContentV2CardsUploadPostReqItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostReqItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "subjectID": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.SubjectID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectID\"") + } + case "variants": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + s.Variants = make([]ContentV2CardsUploadPostReqItemVariantsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadPostReqItemVariantsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Variants = append(s.Variants, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"variants\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostReqItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUploadPostReqItem) { + name = jsonFieldsNameOfContentV2CardsUploadPostReqItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostReqItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostReqItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) encodeFields(e *jx.Encoder) { + { + if s.Brand.Set { + e.FieldStart("brand") + s.Brand.Encode(e) + } + } + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Description.Set { + e.FieldStart("description") + s.Description.Encode(e) + } + } + { + e.FieldStart("vendorCode") + e.Str(s.VendorCode) + } + { + if s.Dimensions.Set { + e.FieldStart("dimensions") + s.Dimensions.Encode(e) + } + } + { + if s.Sizes != nil { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Characteristics != nil { + e.FieldStart("characteristics") + e.ArrStart() + for _, elem := range s.Characteristics { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItem = [7]string{ + 0: "brand", + 1: "title", + 2: "description", + 3: "vendorCode", + 4: "dimensions", + 5: "sizes", + 6: "characteristics", +} + +// Decode decodes ContentV2CardsUploadPostReqItemVariantsItem from json. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostReqItemVariantsItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "brand": + if err := func() error { + s.Brand.Reset() + if err := s.Brand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brand\"") + } + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "description": + if err := func() error { + s.Description.Reset() + if err := s.Description.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"description\"") + } + case "vendorCode": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Str() + s.VendorCode = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "dimensions": + if err := func() error { + s.Dimensions.Reset() + if err := s.Dimensions.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"dimensions\"") + } + case "sizes": + if err := func() error { + s.Sizes = make([]ContentV2CardsUploadPostReqItemVariantsItemSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadPostReqItemVariantsItemSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + case "characteristics": + if err := func() error { + s.Characteristics = make([]ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Characteristics = append(s.Characteristics, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"characteristics\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostReqItemVariantsItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00001000, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItem) { + name = jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Int(s.ID) + } + { + if len(s.Value) != 0 { + e.FieldStart("value") + e.Raw(s.Value) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem = [2]string{ + 0: "id", + 1: "value", +} + +// Decode decodes ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem from json. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.ID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "value": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.RawAppend(nil) + s.Value = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) { + name = jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) encodeFields(e *jx.Encoder) { + { + if s.Length.Set { + e.FieldStart("length") + s.Length.Encode(e) + } + } + { + if s.Width.Set { + e.FieldStart("width") + s.Width.Encode(e) + } + } + { + if s.Height.Set { + e.FieldStart("height") + s.Height.Encode(e) + } + } + { + if s.WeightBrutto.Set { + e.FieldStart("weightBrutto") + s.WeightBrutto.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItemDimensions = [4]string{ + 0: "length", + 1: "width", + 2: "height", + 3: "weightBrutto", +} + +// Decode decodes ContentV2CardsUploadPostReqItemVariantsItemDimensions from json. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostReqItemVariantsItemDimensions to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "length": + if err := func() error { + s.Length.Reset() + if err := s.Length.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"length\"") + } + case "width": + if err := func() error { + s.Width.Reset() + if err := s.Width.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"width\"") + } + case "height": + if err := func() error { + s.Height.Reset() + if err := s.Height.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"height\"") + } + case "weightBrutto": + if err := func() error { + s.WeightBrutto.Reset() + if err := s.WeightBrutto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"weightBrutto\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostReqItemVariantsItemDimensions") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) encodeFields(e *jx.Encoder) { + { + if s.TechSize.Set { + e.FieldStart("techSize") + s.TechSize.Encode(e) + } + } + { + if s.WbSize.Set { + e.FieldStart("wbSize") + s.WbSize.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostReqItemVariantsItemSizesItem = [4]string{ + 0: "techSize", + 1: "wbSize", + 2: "price", + 3: "skus", +} + +// Decode decodes ContentV2CardsUploadPostReqItemVariantsItemSizesItem from json. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostReqItemVariantsItemSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "techSize": + if err := func() error { + s.TechSize.Reset() + if err := s.TechSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSize\"") + } + case "wbSize": + if err := func() error { + s.WbSize.Reset() + if err := s.WbSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"wbSize\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostReqItemVariantsItemSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) encodeFields(e *jx.Encoder) { + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Detail.Set { + e.FieldStart("detail") + s.Detail.Encode(e) + } + } + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.RequestId.Set { + e.FieldStart("requestId") + s.RequestId.Encode(e) + } + } + { + if s.Origin.Set { + e.FieldStart("origin") + s.Origin.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.StatusText.Set { + e.FieldStart("statusText") + s.StatusText.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2CardsUploadPostRequestEntityTooLarge = [7]string{ + 0: "title", + 1: "detail", + 2: "code", + 3: "requestId", + 4: "origin", + 5: "status", + 6: "statusText", +} + +// Decode decodes ContentV2CardsUploadPostRequestEntityTooLarge from json. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2CardsUploadPostRequestEntityTooLarge to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "detail": + if err := func() error { + s.Detail.Reset() + if err := s.Detail.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"detail\"") + } + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "requestId": + if err := func() error { + s.RequestId.Reset() + if err := s.RequestId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"requestId\"") + } + case "origin": + if err := func() error { + s.Origin.Reset() + if err := s.Origin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"origin\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "statusText": + if err := func() error { + s.StatusText.Reset() + if err := s.StatusText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"statusText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2CardsUploadPostRequestEntityTooLarge") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryColorsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryColorsGetOK) encodeFields(e *jx.Encoder) { + { + if len(s.Data) != 0 { + e.FieldStart("data") + e.Raw(s.Data) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryColorsGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectoryColorsGetOK from json. +func (s *ContentV2DirectoryColorsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryColorsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + v, err := d.RawAppend(nil) + s.Data = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryColorsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryColorsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryColorsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryCountriesGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryCountriesGetOK) encodeFields(e *jx.Encoder) { + { + if len(s.Data) != 0 { + e.FieldStart("data") + e.Raw(s.Data) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryCountriesGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectoryCountriesGetOK from json. +func (s *ContentV2DirectoryCountriesGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryCountriesGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + v, err := d.RawAppend(nil) + s.Data = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryCountriesGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryCountriesGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryCountriesGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryKindsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryKindsGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryKindsGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectoryKindsGetOK from json. +func (s *ContentV2DirectoryKindsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryKindsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryKindsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryKindsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryKindsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectorySeasonsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectorySeasonsGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectorySeasonsGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectorySeasonsGetOK from json. +func (s *ContentV2DirectorySeasonsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectorySeasonsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectorySeasonsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectorySeasonsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectorySeasonsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryTnvedGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryTnvedGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryTnvedGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectoryTnvedGetOK from json. +func (s *ContentV2DirectoryTnvedGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryTnvedGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]ContentV2DirectoryTnvedGetOKDataItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2DirectoryTnvedGetOKDataItem + if err := elem.Decode(d); err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryTnvedGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryTnvedGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryTnvedGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryTnvedGetOKDataItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryTnvedGetOKDataItem) encodeFields(e *jx.Encoder) { + { + if s.Tnved.Set { + e.FieldStart("tnved") + s.Tnved.Encode(e) + } + } + { + if s.IsKiz.Set { + e.FieldStart("isKiz") + s.IsKiz.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryTnvedGetOKDataItem = [2]string{ + 0: "tnved", + 1: "isKiz", +} + +// Decode decodes ContentV2DirectoryTnvedGetOKDataItem from json. +func (s *ContentV2DirectoryTnvedGetOKDataItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryTnvedGetOKDataItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "tnved": + if err := func() error { + s.Tnved.Reset() + if err := s.Tnved.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tnved\"") + } + case "isKiz": + if err := func() error { + s.IsKiz.Reset() + if err := s.IsKiz.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"isKiz\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryTnvedGetOKDataItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryTnvedGetOKDataItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryTnvedGetOKDataItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2DirectoryVatGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2DirectoryVatGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2DirectoryVatGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2DirectoryVatGetOK from json. +func (s *ContentV2DirectoryVatGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2DirectoryVatGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2DirectoryVatGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2DirectoryVatGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2DirectoryVatGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOK) encodeFields(e *jx.Encoder) { + { + if s.Cards != nil { + e.FieldStart("cards") + e.ArrStart() + for _, elem := range s.Cards { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Cursor.Set { + e.FieldStart("cursor") + s.Cursor.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOK = [2]string{ + 0: "cards", + 1: "cursor", +} + +// Decode decodes ContentV2GetCardsListPostOK from json. +func (s *ContentV2GetCardsListPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "cards": + if err := func() error { + s.Cards = make([]ContentV2GetCardsListPostOKCardsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsListPostOKCardsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Cards = append(s.Cards, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cards\"") + } + case "cursor": + if err := func() error { + s.Cursor.Reset() + if err := s.Cursor.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cursor\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItem) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.ImtID.Set { + e.FieldStart("imtID") + s.ImtID.Encode(e) + } + } + { + if s.NmUUID.Set { + e.FieldStart("nmUUID") + s.NmUUID.Encode(e) + } + } + { + if s.SubjectID.Set { + e.FieldStart("subjectID") + s.SubjectID.Encode(e) + } + } + { + if s.SubjectName.Set { + e.FieldStart("subjectName") + s.SubjectName.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.Brand.Set { + e.FieldStart("brand") + s.Brand.Encode(e) + } + } + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Description.Set { + e.FieldStart("description") + s.Description.Encode(e) + } + } + { + if s.NeedKiz.Set { + e.FieldStart("needKiz") + s.NeedKiz.Encode(e) + } + } + { + if s.Photos != nil { + e.FieldStart("photos") + e.ArrStart() + for _, elem := range s.Photos { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Video.Set { + e.FieldStart("video") + s.Video.Encode(e) + } + } + { + if s.Dimensions.Set { + e.FieldStart("dimensions") + s.Dimensions.Encode(e) + } + } + { + if s.Characteristics != nil { + e.FieldStart("characteristics") + e.ArrStart() + for _, elem := range s.Characteristics { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Sizes != nil { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Tags != nil { + e.FieldStart("tags") + e.ArrStart() + for _, elem := range s.Tags { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.CreatedAt.Set { + e.FieldStart("createdAt") + s.CreatedAt.Encode(e) + } + } + { + if s.UpdatedAt.Set { + e.FieldStart("updatedAt") + s.UpdatedAt.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItem = [18]string{ + 0: "nmID", + 1: "imtID", + 2: "nmUUID", + 3: "subjectID", + 4: "subjectName", + 5: "vendorCode", + 6: "brand", + 7: "title", + 8: "description", + 9: "needKiz", + 10: "photos", + 11: "video", + 12: "dimensions", + 13: "characteristics", + 14: "sizes", + 15: "tags", + 16: "createdAt", + 17: "updatedAt", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItem from json. +func (s *ContentV2GetCardsListPostOKCardsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "imtID": + if err := func() error { + s.ImtID.Reset() + if err := s.ImtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"imtID\"") + } + case "nmUUID": + if err := func() error { + s.NmUUID.Reset() + if err := s.NmUUID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmUUID\"") + } + case "subjectID": + if err := func() error { + s.SubjectID.Reset() + if err := s.SubjectID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectID\"") + } + case "subjectName": + if err := func() error { + s.SubjectName.Reset() + if err := s.SubjectName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectName\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "brand": + if err := func() error { + s.Brand.Reset() + if err := s.Brand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brand\"") + } + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "description": + if err := func() error { + s.Description.Reset() + if err := s.Description.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"description\"") + } + case "needKiz": + if err := func() error { + s.NeedKiz.Reset() + if err := s.NeedKiz.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"needKiz\"") + } + case "photos": + if err := func() error { + s.Photos = make([]ContentV2GetCardsListPostOKCardsItemPhotosItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsListPostOKCardsItemPhotosItem + if err := elem.Decode(d); err != nil { + return err + } + s.Photos = append(s.Photos, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"photos\"") + } + case "video": + if err := func() error { + s.Video.Reset() + if err := s.Video.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"video\"") + } + case "dimensions": + if err := func() error { + s.Dimensions.Reset() + if err := s.Dimensions.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"dimensions\"") + } + case "characteristics": + if err := func() error { + s.Characteristics = make([]ContentV2GetCardsListPostOKCardsItemCharacteristicsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsListPostOKCardsItemCharacteristicsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Characteristics = append(s.Characteristics, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"characteristics\"") + } + case "sizes": + if err := func() error { + s.Sizes = make([]ContentV2GetCardsListPostOKCardsItemSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsListPostOKCardsItemSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + case "tags": + if err := func() error { + s.Tags = make([]ContentV2GetCardsListPostOKCardsItemTagsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsListPostOKCardsItemTagsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Tags = append(s.Tags, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tags\"") + } + case "createdAt": + if err := func() error { + s.CreatedAt.Reset() + if err := s.CreatedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"createdAt\"") + } + case "updatedAt": + if err := func() error { + s.UpdatedAt.Reset() + if err := s.UpdatedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"updatedAt\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if len(s.Value) != 0 { + e.FieldStart("value") + e.Raw(s.Value) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItemCharacteristicsItem = [3]string{ + 0: "id", + 1: "name", + 2: "value", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemCharacteristicsItem from json. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItemCharacteristicsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "value": + if err := func() error { + v, err := d.RawAppend(nil) + s.Value = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItemCharacteristicsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) encodeFields(e *jx.Encoder) { + { + if s.Length.Set { + e.FieldStart("length") + s.Length.Encode(e) + } + } + { + if s.Width.Set { + e.FieldStart("width") + s.Width.Encode(e) + } + } + { + if s.Height.Set { + e.FieldStart("height") + s.Height.Encode(e) + } + } + { + if s.WeightBrutto.Set { + e.FieldStart("weightBrutto") + s.WeightBrutto.Encode(e) + } + } + { + if s.IsValid.Set { + e.FieldStart("isValid") + s.IsValid.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItemDimensions = [5]string{ + 0: "length", + 1: "width", + 2: "height", + 3: "weightBrutto", + 4: "isValid", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemDimensions from json. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItemDimensions to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "length": + if err := func() error { + s.Length.Reset() + if err := s.Length.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"length\"") + } + case "width": + if err := func() error { + s.Width.Reset() + if err := s.Width.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"width\"") + } + case "height": + if err := func() error { + s.Height.Reset() + if err := s.Height.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"height\"") + } + case "weightBrutto": + if err := func() error { + s.WeightBrutto.Reset() + if err := s.WeightBrutto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"weightBrutto\"") + } + case "isValid": + if err := func() error { + s.IsValid.Reset() + if err := s.IsValid.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"isValid\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItemDimensions") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) encodeFields(e *jx.Encoder) { + { + if s.Big.Set { + e.FieldStart("big") + s.Big.Encode(e) + } + } + { + if s.C246x328.Set { + e.FieldStart("c246x328") + s.C246x328.Encode(e) + } + } + { + if s.C516x688.Set { + e.FieldStart("c516x688") + s.C516x688.Encode(e) + } + } + { + if s.Square.Set { + e.FieldStart("square") + s.Square.Encode(e) + } + } + { + if s.Tm.Set { + e.FieldStart("tm") + s.Tm.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItemPhotosItem = [5]string{ + 0: "big", + 1: "c246x328", + 2: "c516x688", + 3: "square", + 4: "tm", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemPhotosItem from json. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItemPhotosItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "big": + if err := func() error { + s.Big.Reset() + if err := s.Big.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"big\"") + } + case "c246x328": + if err := func() error { + s.C246x328.Reset() + if err := s.C246x328.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"c246x328\"") + } + case "c516x688": + if err := func() error { + s.C516x688.Reset() + if err := s.C516x688.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"c516x688\"") + } + case "square": + if err := func() error { + s.Square.Reset() + if err := s.Square.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"square\"") + } + case "tm": + if err := func() error { + s.Tm.Reset() + if err := s.Tm.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tm\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItemPhotosItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) encodeFields(e *jx.Encoder) { + { + if s.ChrtID.Set { + e.FieldStart("chrtID") + s.ChrtID.Encode(e) + } + } + { + if s.TechSize.Set { + e.FieldStart("techSize") + s.TechSize.Encode(e) + } + } + { + if s.WbSize.Set { + e.FieldStart("wbSize") + s.WbSize.Encode(e) + } + } + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItemSizesItem = [4]string{ + 0: "chrtID", + 1: "techSize", + 2: "wbSize", + 3: "skus", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemSizesItem from json. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItemSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "chrtID": + if err := func() error { + s.ChrtID.Reset() + if err := s.ChrtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"chrtID\"") + } + case "techSize": + if err := func() error { + s.TechSize.Reset() + if err := s.TechSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSize\"") + } + case "wbSize": + if err := func() error { + s.WbSize.Reset() + if err := s.WbSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"wbSize\"") + } + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItemSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.Color.Set { + e.FieldStart("color") + s.Color.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCardsItemTagsItem = [3]string{ + 0: "id", + 1: "name", + 2: "color", +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemTagsItem from json. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCardsItemTagsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "color": + if err := func() error { + s.Color.Reset() + if err := s.Color.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"color\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCardsItemTagsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostOKCursor) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostOKCursor) encodeFields(e *jx.Encoder) { + { + if s.UpdatedAt.Set { + e.FieldStart("updatedAt") + s.UpdatedAt.Encode(e) + } + } + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.Total.Set { + e.FieldStart("total") + s.Total.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostOKCursor = [3]string{ + 0: "updatedAt", + 1: "nmID", + 2: "total", +} + +// Decode decodes ContentV2GetCardsListPostOKCursor from json. +func (s *ContentV2GetCardsListPostOKCursor) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostOKCursor to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "updatedAt": + if err := func() error { + s.UpdatedAt.Reset() + if err := s.UpdatedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"updatedAt\"") + } + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "total": + if err := func() error { + s.Total.Reset() + if err := s.Total.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"total\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostOKCursor") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostOKCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostOKCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostReq) encodeFields(e *jx.Encoder) { + { + if s.Settings.Set { + e.FieldStart("settings") + s.Settings.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostReq = [1]string{ + 0: "settings", +} + +// Decode decodes ContentV2GetCardsListPostReq from json. +func (s *ContentV2GetCardsListPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "settings": + if err := func() error { + s.Settings.Reset() + if err := s.Settings.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"settings\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostReqSettings) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostReqSettings) encodeFields(e *jx.Encoder) { + { + if s.Sort.Set { + e.FieldStart("sort") + s.Sort.Encode(e) + } + } + { + if s.Filter.Set { + e.FieldStart("filter") + s.Filter.Encode(e) + } + } + { + if s.Cursor.Set { + e.FieldStart("cursor") + s.Cursor.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostReqSettings = [3]string{ + 0: "sort", + 1: "filter", + 2: "cursor", +} + +// Decode decodes ContentV2GetCardsListPostReqSettings from json. +func (s *ContentV2GetCardsListPostReqSettings) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostReqSettings to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sort": + if err := func() error { + s.Sort.Reset() + if err := s.Sort.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sort\"") + } + case "filter": + if err := func() error { + s.Filter.Reset() + if err := s.Filter.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"filter\"") + } + case "cursor": + if err := func() error { + s.Cursor.Reset() + if err := s.Cursor.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cursor\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostReqSettings") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostReqSettings) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostReqSettings) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsCursor) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostReqSettingsCursor) encodeFields(e *jx.Encoder) { + { + if s.Limit.Set { + e.FieldStart("limit") + s.Limit.Encode(e) + } + } + { + if s.UpdatedAt.Set { + e.FieldStart("updatedAt") + s.UpdatedAt.Encode(e) + } + } + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostReqSettingsCursor = [3]string{ + 0: "limit", + 1: "updatedAt", + 2: "nmID", +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsCursor from json. +func (s *ContentV2GetCardsListPostReqSettingsCursor) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostReqSettingsCursor to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "limit": + if err := func() error { + s.Limit.Reset() + if err := s.Limit.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"limit\"") + } + case "updatedAt": + if err := func() error { + s.UpdatedAt.Reset() + if err := s.UpdatedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"updatedAt\"") + } + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostReqSettingsCursor") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostReqSettingsCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsFilter) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostReqSettingsFilter) encodeFields(e *jx.Encoder) { + { + if s.WithPhoto.Set { + e.FieldStart("withPhoto") + s.WithPhoto.Encode(e) + } + } + { + if s.TextSearch.Set { + e.FieldStart("textSearch") + s.TextSearch.Encode(e) + } + } + { + if s.TagIDs != nil { + e.FieldStart("tagIDs") + e.ArrStart() + for _, elem := range s.TagIDs { + e.Int(elem) + } + e.ArrEnd() + } + } + { + if s.AllowedCategoriesOnly.Set { + e.FieldStart("allowedCategoriesOnly") + s.AllowedCategoriesOnly.Encode(e) + } + } + { + if s.ObjectIDs != nil { + e.FieldStart("objectIDs") + e.ArrStart() + for _, elem := range s.ObjectIDs { + e.Int(elem) + } + e.ArrEnd() + } + } + { + if s.Brands != nil { + e.FieldStart("brands") + e.ArrStart() + for _, elem := range s.Brands { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.ImtID.Set { + e.FieldStart("imtID") + s.ImtID.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostReqSettingsFilter = [7]string{ + 0: "withPhoto", + 1: "textSearch", + 2: "tagIDs", + 3: "allowedCategoriesOnly", + 4: "objectIDs", + 5: "brands", + 6: "imtID", +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsFilter from json. +func (s *ContentV2GetCardsListPostReqSettingsFilter) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostReqSettingsFilter to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "withPhoto": + if err := func() error { + s.WithPhoto.Reset() + if err := s.WithPhoto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"withPhoto\"") + } + case "textSearch": + if err := func() error { + s.TextSearch.Reset() + if err := s.TextSearch.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"textSearch\"") + } + case "tagIDs": + if err := func() error { + s.TagIDs = make([]int, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem int + v, err := d.Int() + elem = int(v) + if err != nil { + return err + } + s.TagIDs = append(s.TagIDs, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tagIDs\"") + } + case "allowedCategoriesOnly": + if err := func() error { + s.AllowedCategoriesOnly.Reset() + if err := s.AllowedCategoriesOnly.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"allowedCategoriesOnly\"") + } + case "objectIDs": + if err := func() error { + s.ObjectIDs = make([]int, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem int + v, err := d.Int() + elem = int(v) + if err != nil { + return err + } + s.ObjectIDs = append(s.ObjectIDs, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"objectIDs\"") + } + case "brands": + if err := func() error { + s.Brands = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Brands = append(s.Brands, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brands\"") + } + case "imtID": + if err := func() error { + s.ImtID.Reset() + if err := s.ImtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"imtID\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostReqSettingsFilter") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsFilter) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostReqSettingsFilter) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsSort) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsListPostReqSettingsSort) encodeFields(e *jx.Encoder) { + { + if s.Ascending.Set { + e.FieldStart("ascending") + s.Ascending.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsListPostReqSettingsSort = [1]string{ + 0: "ascending", +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsSort from json. +func (s *ContentV2GetCardsListPostReqSettingsSort) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsListPostReqSettingsSort to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "ascending": + if err := func() error { + s.Ascending.Reset() + if err := s.Ascending.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"ascending\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsListPostReqSettingsSort") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsListPostReqSettingsSort) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsListPostReqSettingsSort) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOK) encodeFields(e *jx.Encoder) { + { + if s.Cards != nil { + e.FieldStart("cards") + e.ArrStart() + for _, elem := range s.Cards { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Cursor.Set { + e.FieldStart("cursor") + s.Cursor.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOK = [2]string{ + 0: "cards", + 1: "cursor", +} + +// Decode decodes ContentV2GetCardsTrashPostOK from json. +func (s *ContentV2GetCardsTrashPostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "cards": + if err := func() error { + s.Cards = make([]ContentV2GetCardsTrashPostOKCardsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsTrashPostOKCardsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Cards = append(s.Cards, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cards\"") + } + case "cursor": + if err := func() error { + s.Cursor.Reset() + if err := s.Cursor.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cursor\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCardsItem) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.SubjectID.Set { + e.FieldStart("subjectID") + s.SubjectID.Encode(e) + } + } + { + if s.SubjectName.Set { + e.FieldStart("subjectName") + s.SubjectName.Encode(e) + } + } + { + if s.Photos != nil { + e.FieldStart("photos") + e.ArrStart() + for _, elem := range s.Photos { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Video.Set { + e.FieldStart("video") + s.Video.Encode(e) + } + } + { + if s.Sizes != nil { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Dimensions.Set { + e.FieldStart("dimensions") + s.Dimensions.Encode(e) + } + } + { + if s.Characteristics != nil { + e.FieldStart("characteristics") + e.ArrStart() + for _, elem := range s.Characteristics { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.CreatedAt.Set { + e.FieldStart("createdAt") + s.CreatedAt.Encode(e) + } + } + { + if s.TrashedAt.Set { + e.FieldStart("trashedAt") + s.TrashedAt.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCardsItem = [11]string{ + 0: "nmID", + 1: "vendorCode", + 2: "subjectID", + 3: "subjectName", + 4: "photos", + 5: "video", + 6: "sizes", + 7: "dimensions", + 8: "characteristics", + 9: "createdAt", + 10: "trashedAt", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItem from json. +func (s *ContentV2GetCardsTrashPostOKCardsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCardsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "subjectID": + if err := func() error { + s.SubjectID.Reset() + if err := s.SubjectID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectID\"") + } + case "subjectName": + if err := func() error { + s.SubjectName.Reset() + if err := s.SubjectName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectName\"") + } + case "photos": + if err := func() error { + s.Photos = make([]ContentV2GetCardsTrashPostOKCardsItemPhotosItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsTrashPostOKCardsItemPhotosItem + if err := elem.Decode(d); err != nil { + return err + } + s.Photos = append(s.Photos, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"photos\"") + } + case "video": + if err := func() error { + s.Video.Reset() + if err := s.Video.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"video\"") + } + case "sizes": + if err := func() error { + s.Sizes = make([]ContentV2GetCardsTrashPostOKCardsItemSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsTrashPostOKCardsItemSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + case "dimensions": + if err := func() error { + s.Dimensions.Reset() + if err := s.Dimensions.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"dimensions\"") + } + case "characteristics": + if err := func() error { + s.Characteristics = make([]ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Characteristics = append(s.Characteristics, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"characteristics\"") + } + case "createdAt": + if err := func() error { + s.CreatedAt.Reset() + if err := s.CreatedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"createdAt\"") + } + case "trashedAt": + if err := func() error { + s.TrashedAt.Reset() + if err := s.TrashedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"trashedAt\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCardsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if len(s.Value) != 0 { + e.FieldStart("value") + e.Raw(s.Value) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem = [3]string{ + 0: "id", + 1: "name", + 2: "value", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem from json. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "value": + if err := func() error { + v, err := d.RawAppend(nil) + s.Value = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) encodeFields(e *jx.Encoder) { + { + if s.Length.Set { + e.FieldStart("length") + s.Length.Encode(e) + } + } + { + if s.Width.Set { + e.FieldStart("width") + s.Width.Encode(e) + } + } + { + if s.Height.Set { + e.FieldStart("height") + s.Height.Encode(e) + } + } + { + if s.WeightBrutto.Set { + e.FieldStart("weightBrutto") + s.WeightBrutto.Encode(e) + } + } + { + if s.IsValid.Set { + e.FieldStart("isValid") + s.IsValid.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCardsItemDimensions = [5]string{ + 0: "length", + 1: "width", + 2: "height", + 3: "weightBrutto", + 4: "isValid", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItemDimensions from json. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCardsItemDimensions to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "length": + if err := func() error { + s.Length.Reset() + if err := s.Length.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"length\"") + } + case "width": + if err := func() error { + s.Width.Reset() + if err := s.Width.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"width\"") + } + case "height": + if err := func() error { + s.Height.Reset() + if err := s.Height.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"height\"") + } + case "weightBrutto": + if err := func() error { + s.WeightBrutto.Reset() + if err := s.WeightBrutto.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"weightBrutto\"") + } + case "isValid": + if err := func() error { + s.IsValid.Reset() + if err := s.IsValid.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"isValid\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCardsItemDimensions") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) encodeFields(e *jx.Encoder) { + { + if s.Big.Set { + e.FieldStart("big") + s.Big.Encode(e) + } + } + { + if s.C246x328.Set { + e.FieldStart("c246x328") + s.C246x328.Encode(e) + } + } + { + if s.C516x688.Set { + e.FieldStart("c516x688") + s.C516x688.Encode(e) + } + } + { + if s.Square.Set { + e.FieldStart("square") + s.Square.Encode(e) + } + } + { + if s.Tm.Set { + e.FieldStart("tm") + s.Tm.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCardsItemPhotosItem = [5]string{ + 0: "big", + 1: "c246x328", + 2: "c516x688", + 3: "square", + 4: "tm", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItemPhotosItem from json. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCardsItemPhotosItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "big": + if err := func() error { + s.Big.Reset() + if err := s.Big.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"big\"") + } + case "c246x328": + if err := func() error { + s.C246x328.Reset() + if err := s.C246x328.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"c246x328\"") + } + case "c516x688": + if err := func() error { + s.C516x688.Reset() + if err := s.C516x688.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"c516x688\"") + } + case "square": + if err := func() error { + s.Square.Reset() + if err := s.Square.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"square\"") + } + case "tm": + if err := func() error { + s.Tm.Reset() + if err := s.Tm.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tm\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCardsItemPhotosItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) encodeFields(e *jx.Encoder) { + { + if s.ChrtID.Set { + e.FieldStart("chrtID") + s.ChrtID.Encode(e) + } + } + { + if s.TechSize.Set { + e.FieldStart("techSize") + s.TechSize.Encode(e) + } + } + { + if s.WbSize.Set { + e.FieldStart("wbSize") + s.WbSize.Encode(e) + } + } + { + if s.Skus != nil { + e.FieldStart("skus") + e.ArrStart() + for _, elem := range s.Skus { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCardsItemSizesItem = [4]string{ + 0: "chrtID", + 1: "techSize", + 2: "wbSize", + 3: "skus", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItemSizesItem from json. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCardsItemSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "chrtID": + if err := func() error { + s.ChrtID.Reset() + if err := s.ChrtID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"chrtID\"") + } + case "techSize": + if err := func() error { + s.TechSize.Reset() + if err := s.TechSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSize\"") + } + case "wbSize": + if err := func() error { + s.WbSize.Reset() + if err := s.WbSize.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"wbSize\"") + } + case "skus": + if err := func() error { + s.Skus = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Skus = append(s.Skus, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"skus\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCardsItemSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCursor) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostOKCursor) encodeFields(e *jx.Encoder) { + { + if s.TrashedAt.Set { + e.FieldStart("trashedAt") + s.TrashedAt.Encode(e) + } + } + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.Total.Set { + e.FieldStart("total") + s.Total.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostOKCursor = [3]string{ + 0: "trashedAt", + 1: "nmID", + 2: "total", +} + +// Decode decodes ContentV2GetCardsTrashPostOKCursor from json. +func (s *ContentV2GetCardsTrashPostOKCursor) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostOKCursor to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "trashedAt": + if err := func() error { + s.TrashedAt.Reset() + if err := s.TrashedAt.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"trashedAt\"") + } + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "total": + if err := func() error { + s.Total.Reset() + if err := s.Total.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"total\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostOKCursor") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostOKCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostOKCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostReq) encodeFields(e *jx.Encoder) { + { + if s.Settings.Set { + e.FieldStart("settings") + s.Settings.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostReq = [1]string{ + 0: "settings", +} + +// Decode decodes ContentV2GetCardsTrashPostReq from json. +func (s *ContentV2GetCardsTrashPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "settings": + if err := func() error { + s.Settings.Reset() + if err := s.Settings.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"settings\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettings) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostReqSettings) encodeFields(e *jx.Encoder) { + { + if s.Sort.Set { + e.FieldStart("sort") + s.Sort.Encode(e) + } + } + { + if s.Cursor.Set { + e.FieldStart("cursor") + s.Cursor.Encode(e) + } + } + { + if s.Filter.Set { + e.FieldStart("filter") + s.Filter.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostReqSettings = [3]string{ + 0: "sort", + 1: "cursor", + 2: "filter", +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettings from json. +func (s *ContentV2GetCardsTrashPostReqSettings) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostReqSettings to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sort": + if err := func() error { + s.Sort.Reset() + if err := s.Sort.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sort\"") + } + case "cursor": + if err := func() error { + s.Cursor.Reset() + if err := s.Cursor.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cursor\"") + } + case "filter": + if err := func() error { + s.Filter.Reset() + if err := s.Filter.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"filter\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostReqSettings") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettings) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostReqSettings) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) encodeFields(e *jx.Encoder) { + { + if s.Limit.Set { + e.FieldStart("limit") + s.Limit.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostReqSettingsCursor = [1]string{ + 0: "limit", +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsCursor from json. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostReqSettingsCursor to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "limit": + if err := func() error { + s.Limit.Reset() + if err := s.Limit.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"limit\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostReqSettingsCursor") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) encodeFields(e *jx.Encoder) { + { + if s.TextSearch.Set { + e.FieldStart("textSearch") + s.TextSearch.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostReqSettingsFilter = [1]string{ + 0: "textSearch", +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsFilter from json. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostReqSettingsFilter to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "textSearch": + if err := func() error { + s.TextSearch.Reset() + if err := s.TextSearch.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"textSearch\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostReqSettingsFilter") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) encodeFields(e *jx.Encoder) { + { + if s.Ascending.Set { + e.FieldStart("ascending") + s.Ascending.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2GetCardsTrashPostReqSettingsSort = [1]string{ + 0: "ascending", +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsSort from json. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2GetCardsTrashPostReqSettingsSort to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "ascending": + if err := func() error { + s.Ascending.Reset() + if err := s.Ascending.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"ascending\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2GetCardsTrashPostReqSettingsSort") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2ObjectAllGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2ObjectAllGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2ObjectAllGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2ObjectAllGetOK from json. +func (s *ContentV2ObjectAllGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2ObjectAllGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]ContentV2ObjectAllGetOKDataItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2ObjectAllGetOKDataItem + if err := elem.Decode(d); err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2ObjectAllGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2ObjectAllGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2ObjectAllGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2ObjectAllGetOKDataItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2ObjectAllGetOKDataItem) encodeFields(e *jx.Encoder) { + { + if s.SubjectID.Set { + e.FieldStart("subjectID") + s.SubjectID.Encode(e) + } + } + { + if s.ParentID.Set { + e.FieldStart("parentID") + s.ParentID.Encode(e) + } + } + { + if s.SubjectName.Set { + e.FieldStart("subjectName") + s.SubjectName.Encode(e) + } + } + { + if s.ParentName.Set { + e.FieldStart("parentName") + s.ParentName.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2ObjectAllGetOKDataItem = [4]string{ + 0: "subjectID", + 1: "parentID", + 2: "subjectName", + 3: "parentName", +} + +// Decode decodes ContentV2ObjectAllGetOKDataItem from json. +func (s *ContentV2ObjectAllGetOKDataItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2ObjectAllGetOKDataItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "subjectID": + if err := func() error { + s.SubjectID.Reset() + if err := s.SubjectID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectID\"") + } + case "parentID": + if err := func() error { + s.ParentID.Reset() + if err := s.ParentID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"parentID\"") + } + case "subjectName": + if err := func() error { + s.SubjectName.Reset() + if err := s.SubjectName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectName\"") + } + case "parentName": + if err := func() error { + s.ParentName.Reset() + if err := s.ParentName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"parentName\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2ObjectAllGetOKDataItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2ObjectAllGetOKDataItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2ObjectAllGetOKDataItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2ObjectCharcsSubjectIdGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2ObjectCharcsSubjectIdGetOK from json. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2ObjectCharcsSubjectIdGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = make([]ContentV2ObjectCharcsSubjectIdGetOKDataItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2ObjectCharcsSubjectIdGetOKDataItem + if err := elem.Decode(d); err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2ObjectCharcsSubjectIdGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) encodeFields(e *jx.Encoder) { + { + if s.CharcID.Set { + e.FieldStart("charcID") + s.CharcID.Encode(e) + } + } + { + if s.SubjectName.Set { + e.FieldStart("subjectName") + s.SubjectName.Encode(e) + } + } + { + if s.SubjectID.Set { + e.FieldStart("subjectID") + s.SubjectID.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.Required.Set { + e.FieldStart("required") + s.Required.Encode(e) + } + } + { + if s.UnitName.Set { + e.FieldStart("unitName") + s.UnitName.Encode(e) + } + } + { + if s.MaxCount.Set { + e.FieldStart("maxCount") + s.MaxCount.Encode(e) + } + } + { + if s.Popular.Set { + e.FieldStart("popular") + s.Popular.Encode(e) + } + } + { + if s.CharcType.Set { + e.FieldStart("charcType") + s.CharcType.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2ObjectCharcsSubjectIdGetOKDataItem = [9]string{ + 0: "charcID", + 1: "subjectName", + 2: "subjectID", + 3: "name", + 4: "required", + 5: "unitName", + 6: "maxCount", + 7: "popular", + 8: "charcType", +} + +// Decode decodes ContentV2ObjectCharcsSubjectIdGetOKDataItem from json. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2ObjectCharcsSubjectIdGetOKDataItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "charcID": + if err := func() error { + s.CharcID.Reset() + if err := s.CharcID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"charcID\"") + } + case "subjectName": + if err := func() error { + s.SubjectName.Reset() + if err := s.SubjectName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectName\"") + } + case "subjectID": + if err := func() error { + s.SubjectID.Reset() + if err := s.SubjectID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subjectID\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "required": + if err := func() error { + s.Required.Reset() + if err := s.Required.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"required\"") + } + case "unitName": + if err := func() error { + s.UnitName.Reset() + if err := s.UnitName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"unitName\"") + } + case "maxCount": + if err := func() error { + s.MaxCount.Reset() + if err := s.MaxCount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"maxCount\"") + } + case "popular": + if err := func() error { + s.Popular.Reset() + if err := s.Popular.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"popular\"") + } + case "charcType": + if err := func() error { + s.CharcType.Reset() + if err := s.CharcType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"charcType\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2ObjectCharcsSubjectIdGetOKDataItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2ObjectParentAllGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2ObjectParentAllGetOK) encodeFields(e *jx.Encoder) { + { + if len(s.Data) != 0 { + e.FieldStart("data") + e.Raw(s.Data) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2ObjectParentAllGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2ObjectParentAllGetOK from json. +func (s *ContentV2ObjectParentAllGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2ObjectParentAllGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + v, err := d.RawAppend(nil) + s.Data = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2ObjectParentAllGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2ObjectParentAllGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2ObjectParentAllGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2TagNomenclatureLinkPostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2TagNomenclatureLinkPostReq) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.TagsIDs != nil { + e.FieldStart("tagsIDs") + e.ArrStart() + for _, elem := range s.TagsIDs { + e.Int(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV2TagNomenclatureLinkPostReq = [2]string{ + 0: "nmID", + 1: "tagsIDs", +} + +// Decode decodes ContentV2TagNomenclatureLinkPostReq from json. +func (s *ContentV2TagNomenclatureLinkPostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2TagNomenclatureLinkPostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "tagsIDs": + if err := func() error { + s.TagsIDs = make([]int, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem int + v, err := d.Int() + elem = int(v) + if err != nil { + return err + } + s.TagsIDs = append(s.TagsIDs, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tagsIDs\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2TagNomenclatureLinkPostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2TagNomenclatureLinkPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2TagNomenclatureLinkPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV2TagsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV2TagsGetOK) encodeFields(e *jx.Encoder) { + { + if len(s.Data) != 0 { + e.FieldStart("data") + e.Raw(s.Data) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV2TagsGetOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV2TagsGetOK from json. +func (s *ContentV2TagsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV2TagsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + v, err := d.RawAppend(nil) + s.Data = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV2TagsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV2TagsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV2TagsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaFilePostApplicationJSONBadRequest as json. +func (s *ContentV3MediaFilePostApplicationJSONBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaFilePostApplicationJSONBadRequest from json. +func (s *ContentV3MediaFilePostApplicationJSONBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaFilePostApplicationJSONBadRequest to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaFilePostApplicationJSONBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaFilePostApplicationJSONBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaFilePostApplicationJSONBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaFilePostForbidden as json. +func (s *ContentV3MediaFilePostForbidden) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaFilePostForbidden from json. +func (s *ContentV3MediaFilePostForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaFilePostForbidden to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaFilePostForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaFilePostForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaFilePostForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaFilePostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaFilePostOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV3MediaFilePostOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV3MediaFilePostOK from json. +func (s *ContentV3MediaFilePostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaFilePostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = nil + var elem ContentV3MediaFilePostOKData + if err := elem.Decode(d); err != nil { + return err + } + s.Data = &elem + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaFilePostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaFilePostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaFilePostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaFilePostOKAdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaFilePostOKAdditionalErrors) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV3MediaFilePostOKAdditionalErrors = [0]string{} + +// Decode decodes ContentV3MediaFilePostOKAdditionalErrors from json. +func (s *ContentV3MediaFilePostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaFilePostOKAdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaFilePostOKAdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaFilePostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaFilePostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaFilePostOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaFilePostOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV3MediaFilePostOKData = [0]string{} + +// Decode decodes ContentV3MediaFilePostOKData from json. +func (s *ContentV3MediaFilePostOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaFilePostOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaFilePostOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaFilePostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaFilePostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaSavePostBadRequest as json. +func (s *ContentV3MediaSavePostBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaSavePostBadRequest from json. +func (s *ContentV3MediaSavePostBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostBadRequest to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaSavePostBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaSavePostConflict as json. +func (s *ContentV3MediaSavePostConflict) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaSavePostConflict from json. +func (s *ContentV3MediaSavePostConflict) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostConflict to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaSavePostConflict(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostConflict) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostConflict) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaSavePostForbidden as json. +func (s *ContentV3MediaSavePostForbidden) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaSavePostForbidden from json. +func (s *ContentV3MediaSavePostForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostForbidden to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaSavePostForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaSavePostOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaSavePostOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfContentV3MediaSavePostOK = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ContentV3MediaSavePostOK from json. +func (s *ContentV3MediaSavePostOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = nil + var elem ContentV3MediaSavePostOKData + if err := elem.Decode(d); err != nil { + return err + } + s.Data = &elem + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaSavePostOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaSavePostOKAdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaSavePostOKAdditionalErrors) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV3MediaSavePostOKAdditionalErrors = [0]string{} + +// Decode decodes ContentV3MediaSavePostOKAdditionalErrors from json. +func (s *ContentV3MediaSavePostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostOKAdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaSavePostOKAdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaSavePostOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaSavePostOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfContentV3MediaSavePostOKData = [0]string{} + +// Decode decodes ContentV3MediaSavePostOKData from json. +func (s *ContentV3MediaSavePostOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaSavePostOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ContentV3MediaSavePostReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ContentV3MediaSavePostReq) encodeFields(e *jx.Encoder) { + { + if s.NmId.Set { + e.FieldStart("nmId") + s.NmId.Encode(e) + } + } + { + if s.Data != nil { + e.FieldStart("data") + e.ArrStart() + for _, elem := range s.Data { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfContentV3MediaSavePostReq = [2]string{ + 0: "nmId", + 1: "data", +} + +// Decode decodes ContentV3MediaSavePostReq from json. +func (s *ContentV3MediaSavePostReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmId": + if err := func() error { + s.NmId.Reset() + if err := s.NmId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmId\"") + } + case "data": + if err := func() error { + s.Data = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Data = append(s.Data, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ContentV3MediaSavePostReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV3MediaSavePostUnprocessableEntity as json. +func (s *ContentV3MediaSavePostUnprocessableEntity) Encode(e *jx.Encoder) { + unwrapped := (*MediaErrors)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ContentV3MediaSavePostUnprocessableEntity from json. +func (s *ContentV3MediaSavePostUnprocessableEntity) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ContentV3MediaSavePostUnprocessableEntity to nil") + } + var unwrapped MediaErrors + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ContentV3MediaSavePostUnprocessableEntity(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ContentV3MediaSavePostUnprocessableEntity) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ContentV3MediaSavePostUnprocessableEntity) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Error) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Error) encodeFields(e *jx.Encoder) { + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.Message.Set { + e.FieldStart("message") + s.Message.Encode(e) + } + } + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfError = [3]string{ + 0: "code", + 1: "message", + 2: "data", +} + +// Decode decodes Error from json. +func (s *Error) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Error to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "message": + if err := func() error { + s.Message.Reset() + if err := s.Message.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"message\"") + } + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Error") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Error) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Error) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ErrorData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ErrorData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfErrorData = [0]string{} + +// Decode decodes ErrorData from json. +func (s *ErrorData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ErrorData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ErrorData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Good) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Good) encodeFields(e *jx.Encoder) { + { + e.FieldStart("nmID") + e.Int(s.NmID) + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.Discount.Set { + e.FieldStart("discount") + s.Discount.Encode(e) + } + } +} + +var jsonFieldsNameOfGood = [3]string{ + 0: "nmID", + 1: "price", + 2: "discount", +} + +// Decode decodes Good from json. +func (s *Good) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Good to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.NmID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "discount": + if err := func() error { + s.Discount.Reset() + if err := s.Discount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discount\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Good") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfGood) { + name = jsonFieldsNameOfGood[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Good) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Good) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GoodBufferHistory) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GoodBufferHistory) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.SizeID.Set { + e.FieldStart("sizeID") + s.SizeID.Encode(e) + } + } + { + if s.TechSizeName.Set { + e.FieldStart("techSizeName") + s.TechSizeName.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.CurrencyIsoCode4217.Set { + e.FieldStart("currencyIsoCode4217") + s.CurrencyIsoCode4217.Encode(e) + } + } + { + if s.Discount.Set { + e.FieldStart("discount") + s.Discount.Encode(e) + } + } + { + if s.ClubDiscount.Set { + e.FieldStart("clubDiscount") + s.ClubDiscount.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfGoodBufferHistory = [10]string{ + 0: "nmID", + 1: "vendorCode", + 2: "sizeID", + 3: "techSizeName", + 4: "price", + 5: "currencyIsoCode4217", + 6: "discount", + 7: "clubDiscount", + 8: "status", + 9: "errorText", +} + +// Decode decodes GoodBufferHistory from json. +func (s *GoodBufferHistory) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodBufferHistory to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "sizeID": + if err := func() error { + s.SizeID.Reset() + if err := s.SizeID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "techSizeName": + if err := func() error { + s.TechSizeName.Reset() + if err := s.TechSizeName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSizeName\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "currencyIsoCode4217": + if err := func() error { + s.CurrencyIsoCode4217.Reset() + if err := s.CurrencyIsoCode4217.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currencyIsoCode4217\"") + } + case "discount": + if err := func() error { + s.Discount.Reset() + if err := s.Discount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discount\"") + } + case "clubDiscount": + if err := func() error { + s.ClubDiscount.Reset() + if err := s.ClubDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscount\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GoodBufferHistory") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GoodBufferHistory) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodBufferHistory) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GoodHistory) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GoodHistory) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.SizeID.Set { + e.FieldStart("sizeID") + s.SizeID.Encode(e) + } + } + { + if s.TechSizeName.Set { + e.FieldStart("techSizeName") + s.TechSizeName.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.CurrencyIsoCode4217.Set { + e.FieldStart("currencyIsoCode4217") + s.CurrencyIsoCode4217.Encode(e) + } + } + { + if s.Discount.Set { + e.FieldStart("discount") + s.Discount.Encode(e) + } + } + { + if s.ClubDiscount.Set { + e.FieldStart("clubDiscount") + s.ClubDiscount.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfGoodHistory = [10]string{ + 0: "nmID", + 1: "vendorCode", + 2: "sizeID", + 3: "techSizeName", + 4: "price", + 5: "currencyIsoCode4217", + 6: "discount", + 7: "clubDiscount", + 8: "status", + 9: "errorText", +} + +// Decode decodes GoodHistory from json. +func (s *GoodHistory) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodHistory to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "sizeID": + if err := func() error { + s.SizeID.Reset() + if err := s.SizeID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "techSizeName": + if err := func() error { + s.TechSizeName.Reset() + if err := s.TechSizeName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSizeName\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "currencyIsoCode4217": + if err := func() error { + s.CurrencyIsoCode4217.Reset() + if err := s.CurrencyIsoCode4217.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currencyIsoCode4217\"") + } + case "discount": + if err := func() error { + s.Discount.Reset() + if err := s.Discount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discount\"") + } + case "clubDiscount": + if err := func() error { + s.ClubDiscount.Reset() + if err := s.ClubDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscount\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GoodHistory") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GoodHistory) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodHistory) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GoodStatus as json. +func (s GoodStatus) Encode(e *jx.Encoder) { + unwrapped := int(s) + + e.Int(unwrapped) +} + +// Decode decodes GoodStatus from json. +func (s *GoodStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodStatus to nil") + } + var unwrapped int + if err := func() error { + v, err := d.Int() + unwrapped = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GoodStatus(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s GoodStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GoodStatusBuffer as json. +func (s GoodStatusBuffer) Encode(e *jx.Encoder) { + unwrapped := int(s) + + e.Int(unwrapped) +} + +// Decode decodes GoodStatusBuffer from json. +func (s *GoodStatusBuffer) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodStatusBuffer to nil") + } + var unwrapped int + if err := func() error { + v, err := d.Int() + unwrapped = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GoodStatusBuffer(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s GoodStatusBuffer) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodStatusBuffer) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes Goods as json. +func (s Goods) Encode(e *jx.Encoder) { + unwrapped := []Good(s) + if unwrapped == nil { + e.ArrEmpty() + return + } + if unwrapped != nil { + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() + } +} + +// Decode decodes Goods from json. +func (s *Goods) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Goods to nil") + } + var unwrapped []Good + if err := func() error { + unwrapped = make([]Good, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Good + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = Goods(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s Goods) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Goods) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GoodsList) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GoodsList) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.Sizes != nil { + e.FieldStart("sizes") + e.ArrStart() + for _, elem := range s.Sizes { + elem.Encode(e) + } + e.ArrEnd() + } + } + { + if s.CurrencyIsoCode4217.Set { + e.FieldStart("currencyIsoCode4217") + s.CurrencyIsoCode4217.Encode(e) + } + } + { + if s.Discount.Set { + e.FieldStart("discount") + s.Discount.Encode(e) + } + } + { + if s.ClubDiscount.Set { + e.FieldStart("clubDiscount") + s.ClubDiscount.Encode(e) + } + } + { + if s.EditableSizePrice.Set { + e.FieldStart("editableSizePrice") + s.EditableSizePrice.Encode(e) + } + } +} + +var jsonFieldsNameOfGoodsList = [7]string{ + 0: "nmID", + 1: "vendorCode", + 2: "sizes", + 3: "currencyIsoCode4217", + 4: "discount", + 5: "clubDiscount", + 6: "editableSizePrice", +} + +// Decode decodes GoodsList from json. +func (s *GoodsList) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodsList to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "sizes": + if err := func() error { + s.Sizes = make([]GoodsListSizesItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem GoodsListSizesItem + if err := elem.Decode(d); err != nil { + return err + } + s.Sizes = append(s.Sizes, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizes\"") + } + case "currencyIsoCode4217": + if err := func() error { + s.CurrencyIsoCode4217.Reset() + if err := s.CurrencyIsoCode4217.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currencyIsoCode4217\"") + } + case "discount": + if err := func() error { + s.Discount.Reset() + if err := s.Discount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discount\"") + } + case "clubDiscount": + if err := func() error { + s.ClubDiscount.Reset() + if err := s.ClubDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscount\"") + } + case "editableSizePrice": + if err := func() error { + s.EditableSizePrice.Reset() + if err := s.EditableSizePrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"editableSizePrice\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GoodsList") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GoodsList) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodsList) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GoodsListSizesItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GoodsListSizesItem) encodeFields(e *jx.Encoder) { + { + if s.SizeID.Set { + e.FieldStart("sizeID") + s.SizeID.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.DiscountedPrice.Set { + e.FieldStart("discountedPrice") + s.DiscountedPrice.Encode(e) + } + } + { + if s.ClubDiscountedPrice.Set { + e.FieldStart("clubDiscountedPrice") + s.ClubDiscountedPrice.Encode(e) + } + } + { + if s.TechSizeName.Set { + e.FieldStart("techSizeName") + s.TechSizeName.Encode(e) + } + } +} + +var jsonFieldsNameOfGoodsListSizesItem = [5]string{ + 0: "sizeID", + 1: "price", + 2: "discountedPrice", + 3: "clubDiscountedPrice", + 4: "techSizeName", +} + +// Decode decodes GoodsListSizesItem from json. +func (s *GoodsListSizesItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GoodsListSizesItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sizeID": + if err := func() error { + s.SizeID.Reset() + if err := s.SizeID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "discountedPrice": + if err := func() error { + s.DiscountedPrice.Reset() + if err := s.DiscountedPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discountedPrice\"") + } + case "clubDiscountedPrice": + if err := func() error { + s.ClubDiscountedPrice.Reset() + if err := s.ClubDiscountedPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscountedPrice\"") + } + case "techSizeName": + if err := func() error { + s.TechSizeName.Reset() + if err := s.TechSizeName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSizeName\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GoodsListSizesItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GoodsListSizesItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GoodsListSizesItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *MediaErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *MediaErrors) encodeFields(e *jx.Encoder) { + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfMediaErrors = [4]string{ + 0: "additionalErrors", + 1: "data", + 2: "error", + 3: "errorText", +} + +// Decode decodes MediaErrors from json. +func (s *MediaErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode MediaErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + case "data": + if err := func() error { + s.Data = nil + var elem MediaErrorsData + if err := elem.Decode(d); err != nil { + return err + } + s.Data = &elem + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode MediaErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *MediaErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *MediaErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *MediaErrorsAdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *MediaErrorsAdditionalErrors) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfMediaErrorsAdditionalErrors = [0]string{} + +// Decode decodes MediaErrorsAdditionalErrors from json. +func (s *MediaErrorsAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode MediaErrorsAdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode MediaErrorsAdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *MediaErrorsAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *MediaErrorsAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *MediaErrorsData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *MediaErrorsData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfMediaErrorsData = [0]string{} + +// Decode decodes MediaErrorsData from json. +func (s *MediaErrorsData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode MediaErrorsData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode MediaErrorsData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *MediaErrorsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *MediaErrorsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Office) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Office) encodeFields(e *jx.Encoder) { + { + if s.Address.Set { + e.FieldStart("address") + s.Address.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.City.Set { + e.FieldStart("city") + s.City.Encode(e) + } + } + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.Longitude.Set { + e.FieldStart("longitude") + s.Longitude.Encode(e) + } + } + { + if s.Latitude.Set { + e.FieldStart("latitude") + s.Latitude.Encode(e) + } + } + { + if s.CargoType.Set { + e.FieldStart("cargoType") + s.CargoType.Encode(e) + } + } + { + if s.DeliveryType.Set { + e.FieldStart("deliveryType") + s.DeliveryType.Encode(e) + } + } + { + if s.Selected.Set { + e.FieldStart("selected") + s.Selected.Encode(e) + } + } +} + +var jsonFieldsNameOfOffice = [9]string{ + 0: "address", + 1: "name", + 2: "city", + 3: "id", + 4: "longitude", + 5: "latitude", + 6: "cargoType", + 7: "deliveryType", + 8: "selected", +} + +// Decode decodes Office from json. +func (s *Office) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Office to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "address": + if err := func() error { + s.Address.Reset() + if err := s.Address.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"address\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "city": + if err := func() error { + s.City.Reset() + if err := s.City.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"city\"") + } + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "longitude": + if err := func() error { + s.Longitude.Reset() + if err := s.Longitude.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"longitude\"") + } + case "latitude": + if err := func() error { + s.Latitude.Reset() + if err := s.Latitude.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"latitude\"") + } + case "cargoType": + if err := func() error { + s.CargoType.Reset() + if err := s.CargoType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cargoType\"") + } + case "deliveryType": + if err := func() error { + s.DeliveryType.Reset() + if err := s.DeliveryType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"deliveryType\"") + } + case "selected": + if err := func() error { + s.Selected.Reset() + if err := s.Selected.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"selected\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Office") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Office) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Office) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OfficeCargoType as json. +func (s OfficeCargoType) Encode(e *jx.Encoder) { + e.Int(int(s)) +} + +// Decode decodes OfficeCargoType from json. +func (s *OfficeCargoType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OfficeCargoType to nil") + } + v, err := d.Int() + if err != nil { + return err + } + *s = OfficeCargoType(v) + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OfficeCargoType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OfficeCargoType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OfficeDeliveryType as json. +func (s OfficeDeliveryType) Encode(e *jx.Encoder) { + e.Int(int(s)) +} + +// Decode decodes OfficeDeliveryType from json. +func (s *OfficeDeliveryType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OfficeDeliveryType to nil") + } + v, err := d.Int() + if err != nil { + return err + } + *s = OfficeDeliveryType(v) + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OfficeDeliveryType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OfficeDeliveryType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *APIV2BufferGoodsTaskGetBadRequestData as json. +func (o OptAPIV2BufferGoodsTaskGetBadRequestData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *APIV2BufferGoodsTaskGetBadRequestData from json. +func (o *OptAPIV2BufferGoodsTaskGetBadRequestData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAPIV2BufferGoodsTaskGetBadRequestData to nil") + } + o.Set = true + o.Value = new(APIV2BufferGoodsTaskGetBadRequestData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAPIV2BufferGoodsTaskGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAPIV2BufferGoodsTaskGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *APIV2BufferTasksGetBadRequestData as json. +func (o OptAPIV2BufferTasksGetBadRequestData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *APIV2BufferTasksGetBadRequestData from json. +func (o *OptAPIV2BufferTasksGetBadRequestData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAPIV2BufferTasksGetBadRequestData to nil") + } + o.Set = true + o.Value = new(APIV2BufferTasksGetBadRequestData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAPIV2BufferTasksGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAPIV2BufferTasksGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *APIV2HistoryGoodsTaskGetBadRequestData as json. +func (o OptAPIV2HistoryGoodsTaskGetBadRequestData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *APIV2HistoryGoodsTaskGetBadRequestData from json. +func (o *OptAPIV2HistoryGoodsTaskGetBadRequestData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAPIV2HistoryGoodsTaskGetBadRequestData to nil") + } + o.Set = true + o.Value = new(APIV2HistoryGoodsTaskGetBadRequestData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAPIV2HistoryGoodsTaskGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAPIV2HistoryGoodsTaskGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *APIV2HistoryTasksGetBadRequestData as json. +func (o OptAPIV2HistoryTasksGetBadRequestData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *APIV2HistoryTasksGetBadRequestData from json. +func (o *OptAPIV2HistoryTasksGetBadRequestData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAPIV2HistoryTasksGetBadRequestData to nil") + } + o.Set = true + o.Value = new(APIV2HistoryTasksGetBadRequestData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAPIV2HistoryTasksGetBadRequestData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAPIV2HistoryTasksGetBadRequestData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes APIV3StocksWarehouseIdPutReq as json. +func (o OptAPIV3StocksWarehouseIdPutReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes APIV3StocksWarehouseIdPutReq from json. +func (o *OptAPIV3StocksWarehouseIdPutReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAPIV3StocksWarehouseIdPutReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAPIV3StocksWarehouseIdPutReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAPIV3StocksWarehouseIdPutReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes bool as json. +func (o OptBool) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Bool(bool(o.Value)) +} + +// Decode decodes bool from json. +func (o *OptBool) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptBool to nil") + } + o.Set = true + v, err := d.Bool() + if err != nil { + return err + } + o.Value = bool(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptBool) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptBool) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV2CardsDeleteTrashPostOKAdditionalErrors as json. +func (o OptContentV2CardsDeleteTrashPostOKAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV2CardsDeleteTrashPostOKAdditionalErrors from json. +func (o *OptContentV2CardsDeleteTrashPostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsDeleteTrashPostOKAdditionalErrors to nil") + } + o.Set = true + o.Value = new(ContentV2CardsDeleteTrashPostOKAdditionalErrors) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsDeleteTrashPostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsDeleteTrashPostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV2CardsDeleteTrashPostOKData as json. +func (o OptContentV2CardsDeleteTrashPostOKData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV2CardsDeleteTrashPostOKData from json. +func (o *OptContentV2CardsDeleteTrashPostOKData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsDeleteTrashPostOKData to nil") + } + o.Set = true + o.Value = new(ContentV2CardsDeleteTrashPostOKData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsDeleteTrashPostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsDeleteTrashPostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2CardsLimitsGetOKData as json. +func (o OptContentV2CardsLimitsGetOKData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2CardsLimitsGetOKData from json. +func (o *OptContentV2CardsLimitsGetOKData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsLimitsGetOKData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsLimitsGetOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsLimitsGetOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV2CardsRecoverPostOKAdditionalErrors as json. +func (o OptContentV2CardsRecoverPostOKAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV2CardsRecoverPostOKAdditionalErrors from json. +func (o *OptContentV2CardsRecoverPostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsRecoverPostOKAdditionalErrors to nil") + } + o.Set = true + o.Value = new(ContentV2CardsRecoverPostOKAdditionalErrors) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsRecoverPostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsRecoverPostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV2CardsRecoverPostOKData as json. +func (o OptContentV2CardsRecoverPostOKData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV2CardsRecoverPostOKData from json. +func (o *OptContentV2CardsRecoverPostOKData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsRecoverPostOKData to nil") + } + o.Set = true + o.Value = new(ContentV2CardsRecoverPostOKData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsRecoverPostOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsRecoverPostOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2CardsUpdatePostReqItemDimensions as json. +func (o OptContentV2CardsUpdatePostReqItemDimensions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2CardsUpdatePostReqItemDimensions from json. +func (o *OptContentV2CardsUpdatePostReqItemDimensions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsUpdatePostReqItemDimensions to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsUpdatePostReqItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsUpdatePostReqItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2CardsUploadAddPostReq as json. +func (o OptContentV2CardsUploadAddPostReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2CardsUploadAddPostReq from json. +func (o *OptContentV2CardsUploadAddPostReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsUploadAddPostReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsUploadAddPostReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsUploadAddPostReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2CardsUploadAddPostReqCardsToAddItemDimensions as json. +func (o OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2CardsUploadAddPostReqCardsToAddItemDimensions from json. +func (o *OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2CardsUploadPostReqItemVariantsItemDimensions as json. +func (o OptContentV2CardsUploadPostReqItemVariantsItemDimensions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2CardsUploadPostReqItemVariantsItemDimensions from json. +func (o *OptContentV2CardsUploadPostReqItemVariantsItemDimensions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2CardsUploadPostReqItemVariantsItemDimensions to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2CardsUploadPostReqItemVariantsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2CardsUploadPostReqItemVariantsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostOKCardsItemDimensions as json. +func (o OptContentV2GetCardsListPostOKCardsItemDimensions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostOKCardsItemDimensions from json. +func (o *OptContentV2GetCardsListPostOKCardsItemDimensions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostOKCardsItemDimensions to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostOKCardsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostOKCardsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostOKCursor as json. +func (o OptContentV2GetCardsListPostOKCursor) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostOKCursor from json. +func (o *OptContentV2GetCardsListPostOKCursor) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostOKCursor to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostOKCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostOKCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostReqSettings as json. +func (o OptContentV2GetCardsListPostReqSettings) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostReqSettings from json. +func (o *OptContentV2GetCardsListPostReqSettings) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostReqSettings to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostReqSettings) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostReqSettings) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostReqSettingsCursor as json. +func (o OptContentV2GetCardsListPostReqSettingsCursor) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsCursor from json. +func (o *OptContentV2GetCardsListPostReqSettingsCursor) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostReqSettingsCursor to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostReqSettingsCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostReqSettingsCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostReqSettingsFilter as json. +func (o OptContentV2GetCardsListPostReqSettingsFilter) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsFilter from json. +func (o *OptContentV2GetCardsListPostReqSettingsFilter) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostReqSettingsFilter to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostReqSettingsFilter) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostReqSettingsFilter) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsListPostReqSettingsSort as json. +func (o OptContentV2GetCardsListPostReqSettingsSort) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsListPostReqSettingsSort from json. +func (o *OptContentV2GetCardsListPostReqSettingsSort) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsListPostReqSettingsSort to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsListPostReqSettingsSort) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsListPostReqSettingsSort) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostOKCardsItemDimensions as json. +func (o OptContentV2GetCardsTrashPostOKCardsItemDimensions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostOKCardsItemDimensions from json. +func (o *OptContentV2GetCardsTrashPostOKCardsItemDimensions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostOKCardsItemDimensions to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostOKCardsItemDimensions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostOKCardsItemDimensions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostOKCursor as json. +func (o OptContentV2GetCardsTrashPostOKCursor) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostOKCursor from json. +func (o *OptContentV2GetCardsTrashPostOKCursor) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostOKCursor to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostOKCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostOKCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostReqSettings as json. +func (o OptContentV2GetCardsTrashPostReqSettings) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettings from json. +func (o *OptContentV2GetCardsTrashPostReqSettings) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostReqSettings to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostReqSettings) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostReqSettings) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostReqSettingsCursor as json. +func (o OptContentV2GetCardsTrashPostReqSettingsCursor) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsCursor from json. +func (o *OptContentV2GetCardsTrashPostReqSettingsCursor) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostReqSettingsCursor to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostReqSettingsCursor) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostReqSettingsCursor) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostReqSettingsFilter as json. +func (o OptContentV2GetCardsTrashPostReqSettingsFilter) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsFilter from json. +func (o *OptContentV2GetCardsTrashPostReqSettingsFilter) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostReqSettingsFilter to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostReqSettingsFilter) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostReqSettingsFilter) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ContentV2GetCardsTrashPostReqSettingsSort as json. +func (o OptContentV2GetCardsTrashPostReqSettingsSort) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ContentV2GetCardsTrashPostReqSettingsSort from json. +func (o *OptContentV2GetCardsTrashPostReqSettingsSort) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV2GetCardsTrashPostReqSettingsSort to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV2GetCardsTrashPostReqSettingsSort) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV2GetCardsTrashPostReqSettingsSort) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV3MediaFilePostOKAdditionalErrors as json. +func (o OptContentV3MediaFilePostOKAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV3MediaFilePostOKAdditionalErrors from json. +func (o *OptContentV3MediaFilePostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV3MediaFilePostOKAdditionalErrors to nil") + } + o.Set = true + o.Value = new(ContentV3MediaFilePostOKAdditionalErrors) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV3MediaFilePostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV3MediaFilePostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ContentV3MediaSavePostOKAdditionalErrors as json. +func (o OptContentV3MediaSavePostOKAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ContentV3MediaSavePostOKAdditionalErrors from json. +func (o *OptContentV3MediaSavePostOKAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptContentV3MediaSavePostOKAdditionalErrors to nil") + } + o.Set = true + o.Value = new(ContentV3MediaSavePostOKAdditionalErrors) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptContentV3MediaSavePostOKAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptContentV3MediaSavePostOKAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes time.Time as json. +func (o OptDateTime) Encode(e *jx.Encoder, format func(*jx.Encoder, time.Time)) { + if !o.Set { + return + } + format(e, o.Value) +} + +// Decode decodes time.Time from json. +func (o *OptDateTime) Decode(d *jx.Decoder, format func(*jx.Decoder) (time.Time, error)) error { + if o == nil { + return errors.New("invalid: unable to decode OptDateTime to nil") + } + o.Set = true + v, err := format(d) + if err != nil { + return err + } + o.Value = v + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptDateTime) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e, json.EncodeDateTime) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptDateTime) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d, json.DecodeDateTime) +} + +// Encode encodes *ErrorData as json. +func (o OptErrorData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ErrorData from json. +func (o *OptErrorData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptErrorData to nil") + } + o.Set = true + o.Value = new(ErrorData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes float32 as json. +func (o OptFloat32) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Float32(float32(o.Value)) +} + +// Decode decodes float32 from json. +func (o *OptFloat32) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptFloat32 to nil") + } + o.Set = true + v, err := d.Float32() + if err != nil { + return err + } + o.Value = float32(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptFloat32) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptFloat32) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes float64 as json. +func (o OptFloat64) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Float64(float64(o.Value)) +} + +// Decode decodes float64 from json. +func (o *OptFloat64) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptFloat64 to nil") + } + o.Set = true + v, err := d.Float64() + if err != nil { + return err + } + o.Value = float64(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptFloat64) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptFloat64) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GoodStatus as json. +func (o OptGoodStatus) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes GoodStatus from json. +func (o *OptGoodStatus) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptGoodStatus to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptGoodStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptGoodStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GoodStatusBuffer as json. +func (o OptGoodStatusBuffer) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes GoodStatusBuffer from json. +func (o *OptGoodStatusBuffer) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptGoodStatusBuffer to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptGoodStatusBuffer) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptGoodStatusBuffer) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes int as json. +func (o OptInt) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes int from json. +func (o *OptInt) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptInt to nil") + } + o.Set = true + v, err := d.Int() + if err != nil { + return err + } + o.Value = int(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptInt) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptInt) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes int64 as json. +func (o OptInt64) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int64(int64(o.Value)) +} + +// Decode decodes int64 from json. +func (o *OptInt64) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptInt64 to nil") + } + o.Set = true + v, err := d.Int64() + if err != nil { + return err + } + o.Value = int64(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptInt64) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptInt64) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *MediaErrorsAdditionalErrors as json. +func (o OptMediaErrorsAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *MediaErrorsAdditionalErrors from json. +func (o *OptMediaErrorsAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptMediaErrorsAdditionalErrors to nil") + } + o.Set = true + o.Value = new(MediaErrorsAdditionalErrors) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptMediaErrorsAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptMediaErrorsAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes int as json. +func (o OptNilInt) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + e.Int(int(o.Value)) +} + +// Decode decodes int from json. +func (o *OptNilInt) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilInt to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v int + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + v, err := d.Int() + if err != nil { + return err + } + o.Value = int(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilInt) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilInt) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseBodyContentError400AdditionalErrors as json. +func (o OptNilResponseBodyContentError400AdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseBodyContentError400AdditionalErrors from json. +func (o *OptNilResponseBodyContentError400AdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilResponseBodyContentError400AdditionalErrors to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v ResponseBodyContentError400AdditionalErrors + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilResponseBodyContentError400AdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilResponseBodyContentError400AdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseContentError4AdditionalErrors as json. +func (o OptNilResponseContentError4AdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseContentError4AdditionalErrors from json. +func (o *OptNilResponseContentError4AdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilResponseContentError4AdditionalErrors to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v ResponseContentError4AdditionalErrors + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilResponseContentError4AdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilResponseContentError4AdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseQuarantineGoodsData as json. +func (o OptNilResponseQuarantineGoodsData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseQuarantineGoodsData from json. +func (o *OptNilResponseQuarantineGoodsData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilResponseQuarantineGoodsData to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v ResponseQuarantineGoodsData + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilResponseQuarantineGoodsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilResponseQuarantineGoodsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes string as json. +func (o OptNilString) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + e.Str(string(o.Value)) +} + +// Decode decodes string from json. +func (o *OptNilString) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilString to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v string + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + v, err := d.Str() + if err != nil { + return err + } + o.Value = string(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilString) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilString) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OfficeCargoType as json. +func (o OptOfficeCargoType) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes OfficeCargoType from json. +func (o *OptOfficeCargoType) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOfficeCargoType to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOfficeCargoType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOfficeCargoType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OfficeDeliveryType as json. +func (o OptOfficeDeliveryType) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes OfficeDeliveryType from json. +func (o *OptOfficeDeliveryType) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOfficeDeliveryType to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOfficeDeliveryType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOfficeDeliveryType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RequestAlreadyExistsErrorData as json. +func (o OptRequestAlreadyExistsErrorData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes RequestAlreadyExistsErrorData from json. +func (o *OptRequestAlreadyExistsErrorData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptRequestAlreadyExistsErrorData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptRequestAlreadyExistsErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptRequestAlreadyExistsErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseBodyContentError400Data as json. +func (o OptResponseBodyContentError400Data) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseBodyContentError400Data from json. +func (o *OptResponseBodyContentError400Data) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseBodyContentError400Data to nil") + } + o.Set = true + o.Value = new(ResponseBodyContentError400Data) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseBodyContentError400Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseBodyContentError400Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseBodyContentError403Data as json. +func (o OptResponseBodyContentError403Data) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseBodyContentError403Data from json. +func (o *OptResponseBodyContentError403Data) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseBodyContentError403Data to nil") + } + o.Set = true + o.Value = new(ResponseBodyContentError403Data) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseBodyContentError403Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseBodyContentError403Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseCardCreateAdditionalErrors as json. +func (o OptResponseCardCreateAdditionalErrors) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseCardCreateAdditionalErrors from json. +func (o *OptResponseCardCreateAdditionalErrors) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseCardCreateAdditionalErrors to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseCardCreateAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseCardCreateAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseCardCreateData as json. +func (o OptResponseCardCreateData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseCardCreateData from json. +func (o *OptResponseCardCreateData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseCardCreateData to nil") + } + o.Set = true + o.Value = new(ResponseCardCreateData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseCardCreateData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseCardCreateData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseContentError4Data as json. +func (o OptResponseContentError4Data) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseContentError4Data from json. +func (o *OptResponseContentError4Data) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseContentError4Data to nil") + } + o.Set = true + o.Value = new(ResponseContentError4Data) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseContentError4Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseContentError4Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseContentError6Data as json. +func (o OptResponseContentError6Data) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseContentError6Data from json. +func (o *OptResponseContentError6Data) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseContentError6Data to nil") + } + o.Set = true + o.Value = new(ResponseContentError6Data) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseContentError6Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseContentError6Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *ResponseErrorData as json. +func (o OptResponseErrorData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *ResponseErrorData from json. +func (o *OptResponseErrorData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseErrorData to nil") + } + o.Set = true + o.Value = new(ResponseErrorData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseGoodBufferHistoriesData as json. +func (o OptResponseGoodBufferHistoriesData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseGoodBufferHistoriesData from json. +func (o *OptResponseGoodBufferHistoriesData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseGoodBufferHistoriesData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseGoodBufferHistoriesData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseGoodBufferHistoriesData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseGoodHistoriesData as json. +func (o OptResponseGoodHistoriesData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseGoodHistoriesData from json. +func (o *OptResponseGoodHistoriesData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseGoodHistoriesData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseGoodHistoriesData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseGoodHistoriesData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseGoodsListsData as json. +func (o OptResponseGoodsListsData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseGoodsListsData from json. +func (o *OptResponseGoodsListsData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseGoodsListsData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseGoodsListsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseGoodsListsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseSizeListsData as json. +func (o OptResponseSizeListsData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ResponseSizeListsData from json. +func (o *OptResponseSizeListsData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptResponseSizeListsData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptResponseSizeListsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptResponseSizeListsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes *StocksWarehouseErrorItemData as json. +func (o OptStocksWarehouseErrorItemData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes *StocksWarehouseErrorItemData from json. +func (o *OptStocksWarehouseErrorItemData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptStocksWarehouseErrorItemData to nil") + } + o.Set = true + o.Value = new(StocksWarehouseErrorItemData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptStocksWarehouseErrorItemData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptStocksWarehouseErrorItemData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes string as json. +func (o OptString) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes string from json. +func (o *OptString) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptString to nil") + } + o.Set = true + v, err := d.Str() + if err != nil { + return err + } + o.Value = string(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptString) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptString) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes TaskCreatedData as json. +func (o OptTaskCreatedData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes TaskCreatedData from json. +func (o *OptTaskCreatedData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptTaskCreatedData to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptTaskCreatedData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptTaskCreatedData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes uuid.UUID as json. +func (o OptUUID) Encode(e *jx.Encoder) { + if !o.Set { + return + } + json.EncodeUUID(e, o.Value) +} + +// Decode decodes uuid.UUID from json. +func (o *OptUUID) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUUID to nil") + } + o.Set = true + v, err := json.DecodeUUID(d) + if err != nil { + return err + } + o.Value = v + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUUID) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUUID) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes WarehouseCargoType as json. +func (o OptWarehouseCargoType) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes WarehouseCargoType from json. +func (o *OptWarehouseCargoType) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptWarehouseCargoType to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptWarehouseCargoType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptWarehouseCargoType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes WarehouseDeliveryType as json. +func (o OptWarehouseDeliveryType) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes WarehouseDeliveryType from json. +func (o *OptWarehouseDeliveryType) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptWarehouseDeliveryType to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptWarehouseDeliveryType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptWarehouseDeliveryType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *QuarantineGoods) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *QuarantineGoods) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.SizeID.Set { + e.FieldStart("sizeID") + s.SizeID.Encode(e) + } + } + { + if s.TechSizeName.Set { + e.FieldStart("techSizeName") + s.TechSizeName.Encode(e) + } + } + { + if s.CurrencyIsoCode4217.Set { + e.FieldStart("currencyIsoCode4217") + s.CurrencyIsoCode4217.Encode(e) + } + } + { + if s.NewPrice.Set { + e.FieldStart("newPrice") + s.NewPrice.Encode(e) + } + } + { + if s.OldPrice.Set { + e.FieldStart("oldPrice") + s.OldPrice.Encode(e) + } + } + { + if s.NewDiscount.Set { + e.FieldStart("newDiscount") + s.NewDiscount.Encode(e) + } + } + { + if s.OldDiscount.Set { + e.FieldStart("oldDiscount") + s.OldDiscount.Encode(e) + } + } + { + if s.PriceDiff.Set { + e.FieldStart("priceDiff") + s.PriceDiff.Encode(e) + } + } +} + +var jsonFieldsNameOfQuarantineGoods = [9]string{ + 0: "nmID", + 1: "sizeID", + 2: "techSizeName", + 3: "currencyIsoCode4217", + 4: "newPrice", + 5: "oldPrice", + 6: "newDiscount", + 7: "oldDiscount", + 8: "priceDiff", +} + +// Decode decodes QuarantineGoods from json. +func (s *QuarantineGoods) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode QuarantineGoods to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "sizeID": + if err := func() error { + s.SizeID.Reset() + if err := s.SizeID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "techSizeName": + if err := func() error { + s.TechSizeName.Reset() + if err := s.TechSizeName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSizeName\"") + } + case "currencyIsoCode4217": + if err := func() error { + s.CurrencyIsoCode4217.Reset() + if err := s.CurrencyIsoCode4217.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currencyIsoCode4217\"") + } + case "newPrice": + if err := func() error { + s.NewPrice.Reset() + if err := s.NewPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"newPrice\"") + } + case "oldPrice": + if err := func() error { + s.OldPrice.Reset() + if err := s.OldPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"oldPrice\"") + } + case "newDiscount": + if err := func() error { + s.NewDiscount.Reset() + if err := s.NewDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"newDiscount\"") + } + case "oldDiscount": + if err := func() error { + s.OldDiscount.Reset() + if err := s.OldDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"oldDiscount\"") + } + case "priceDiff": + if err := func() error { + s.PriceDiff.Reset() + if err := s.PriceDiff.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"priceDiff\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode QuarantineGoods") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *QuarantineGoods) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *QuarantineGoods) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *R401) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *R401) encodeFields(e *jx.Encoder) { + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Detail.Set { + e.FieldStart("detail") + s.Detail.Encode(e) + } + } + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.RequestId.Set { + e.FieldStart("requestId") + s.RequestId.Encode(e) + } + } + { + if s.Origin.Set { + e.FieldStart("origin") + s.Origin.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.StatusText.Set { + e.FieldStart("statusText") + s.StatusText.Encode(e) + } + } + { + if s.Timestamp.Set { + e.FieldStart("timestamp") + s.Timestamp.Encode(e, json.EncodeDateTime) + } + } +} + +var jsonFieldsNameOfR401 = [8]string{ + 0: "title", + 1: "detail", + 2: "code", + 3: "requestId", + 4: "origin", + 5: "status", + 6: "statusText", + 7: "timestamp", +} + +// Decode decodes R401 from json. +func (s *R401) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode R401 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "detail": + if err := func() error { + s.Detail.Reset() + if err := s.Detail.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"detail\"") + } + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "requestId": + if err := func() error { + s.RequestId.Reset() + if err := s.RequestId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"requestId\"") + } + case "origin": + if err := func() error { + s.Origin.Reset() + if err := s.Origin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"origin\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "statusText": + if err := func() error { + s.StatusText.Reset() + if err := s.StatusText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"statusText\"") + } + case "timestamp": + if err := func() error { + s.Timestamp.Reset() + if err := s.Timestamp.Decode(d, json.DecodeDateTime); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"timestamp\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode R401") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *R401) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *R401) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *R429) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *R429) encodeFields(e *jx.Encoder) { + { + if s.Title.Set { + e.FieldStart("title") + s.Title.Encode(e) + } + } + { + if s.Detail.Set { + e.FieldStart("detail") + s.Detail.Encode(e) + } + } + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.RequestId.Set { + e.FieldStart("requestId") + s.RequestId.Encode(e) + } + } + { + if s.Origin.Set { + e.FieldStart("origin") + s.Origin.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.StatusText.Set { + e.FieldStart("statusText") + s.StatusText.Encode(e) + } + } + { + if s.Timestamp.Set { + e.FieldStart("timestamp") + s.Timestamp.Encode(e, json.EncodeDateTime) + } + } +} + +var jsonFieldsNameOfR429 = [8]string{ + 0: "title", + 1: "detail", + 2: "code", + 3: "requestId", + 4: "origin", + 5: "status", + 6: "statusText", + 7: "timestamp", +} + +// Decode decodes R429 from json. +func (s *R429) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode R429 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "title": + if err := func() error { + s.Title.Reset() + if err := s.Title.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"title\"") + } + case "detail": + if err := func() error { + s.Detail.Reset() + if err := s.Detail.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"detail\"") + } + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "requestId": + if err := func() error { + s.RequestId.Reset() + if err := s.RequestId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"requestId\"") + } + case "origin": + if err := func() error { + s.Origin.Reset() + if err := s.Origin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"origin\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "statusText": + if err := func() error { + s.StatusText.Reset() + if err := s.StatusText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"statusText\"") + } + case "timestamp": + if err := func() error { + s.Timestamp.Reset() + if err := s.Timestamp.Decode(d, json.DecodeDateTime); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"timestamp\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode R429") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *R429) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *R429) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *RequestAlreadyExistsError) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *RequestAlreadyExistsError) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfRequestAlreadyExistsError = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes RequestAlreadyExistsError from json. +func (s *RequestAlreadyExistsError) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RequestAlreadyExistsError to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode RequestAlreadyExistsError") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RequestAlreadyExistsError) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RequestAlreadyExistsError) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *RequestAlreadyExistsErrorData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *RequestAlreadyExistsErrorData) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.AlreadyExists.Set { + e.FieldStart("alreadyExists") + s.AlreadyExists.Encode(e) + } + } +} + +var jsonFieldsNameOfRequestAlreadyExistsErrorData = [2]string{ + 0: "id", + 1: "alreadyExists", +} + +// Decode decodes RequestAlreadyExistsErrorData from json. +func (s *RequestAlreadyExistsErrorData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RequestAlreadyExistsErrorData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "alreadyExists": + if err := func() error { + s.AlreadyExists.Reset() + if err := s.AlreadyExists.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"alreadyExists\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode RequestAlreadyExistsErrorData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RequestAlreadyExistsErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RequestAlreadyExistsErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseBodyContentError400) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseBodyContentError400) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseBodyContentError400 = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ResponseBodyContentError400 from json. +func (s *ResponseBodyContentError400) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseBodyContentError400 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseBodyContentError400") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseBodyContentError400) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseBodyContentError400) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseBodyContentError400AdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseBodyContentError400AdditionalErrors) encodeFields(e *jx.Encoder) { + { + if s.MoveNmsToTrash.Set { + e.FieldStart("MoveNmsToTrash") + s.MoveNmsToTrash.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseBodyContentError400AdditionalErrors = [1]string{ + 0: "MoveNmsToTrash", +} + +// Decode decodes ResponseBodyContentError400AdditionalErrors from json. +func (s *ResponseBodyContentError400AdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseBodyContentError400AdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "MoveNmsToTrash": + if err := func() error { + s.MoveNmsToTrash.Reset() + if err := s.MoveNmsToTrash.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"MoveNmsToTrash\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseBodyContentError400AdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseBodyContentError400AdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseBodyContentError400AdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseBodyContentError400Data) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseBodyContentError400Data) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseBodyContentError400Data = [0]string{} + +// Decode decodes ResponseBodyContentError400Data from json. +func (s *ResponseBodyContentError400Data) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseBodyContentError400Data to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseBodyContentError400Data") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseBodyContentError400Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseBodyContentError400Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseBodyContentError403) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseBodyContentError403) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseBodyContentError403 = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ResponseBodyContentError403 from json. +func (s *ResponseBodyContentError403) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseBodyContentError403 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseBodyContentError403") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseBodyContentError403) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseBodyContentError403) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseBodyContentError403Data) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseBodyContentError403Data) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseBodyContentError403Data = [0]string{} + +// Decode decodes ResponseBodyContentError403Data from json. +func (s *ResponseBodyContentError403Data) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseBodyContentError403Data to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseBodyContentError403Data") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseBodyContentError403Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseBodyContentError403Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseCardCreate) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseCardCreate) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseCardCreate = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ResponseCardCreate from json. +func (s *ResponseCardCreate) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseCardCreate to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseCardCreate") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseCardCreate) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseCardCreate) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ResponseCardCreateAdditionalErrors as json. +func (s ResponseCardCreateAdditionalErrors) Encode(e *jx.Encoder) { + switch s.Type { + case NullResponseCardCreateAdditionalErrors: + _ = s.Null + e.Null() + case ResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors: + s.ResponseCardCreateAdditionalErrors0.Encode(e) + case StringResponseCardCreateAdditionalErrors: + e.Str(s.String) + } +} + +// Decode decodes ResponseCardCreateAdditionalErrors from json. +func (s *ResponseCardCreateAdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseCardCreateAdditionalErrors to nil") + } + // Sum type type_discriminator. + switch t := d.Next(); t { + case jx.Null: + if err := d.Null(); err != nil { + return err + } + s.Type = NullResponseCardCreateAdditionalErrors + case jx.Object: + if err := s.ResponseCardCreateAdditionalErrors0.Decode(d); err != nil { + return err + } + s.Type = ResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors + case jx.String: + v, err := d.Str() + s.String = string(v) + if err != nil { + return err + } + s.Type = StringResponseCardCreateAdditionalErrors + default: + return errors.Errorf("unexpected json type %q", t) + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ResponseCardCreateAdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseCardCreateAdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseCardCreateAdditionalErrors0) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseCardCreateAdditionalErrors0) encodeFields(e *jx.Encoder) { + { + if s.String.Set { + e.FieldStart("string") + s.String.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseCardCreateAdditionalErrors0 = [1]string{ + 0: "string", +} + +// Decode decodes ResponseCardCreateAdditionalErrors0 from json. +func (s *ResponseCardCreateAdditionalErrors0) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseCardCreateAdditionalErrors0 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "string": + if err := func() error { + s.String.Reset() + if err := s.String.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"string\"") + } + default: + return errors.Errorf("unexpected field %q", k) + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseCardCreateAdditionalErrors0") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseCardCreateAdditionalErrors0) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseCardCreateAdditionalErrors0) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseCardCreateData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseCardCreateData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseCardCreateData = [0]string{} + +// Decode decodes ResponseCardCreateData from json. +func (s *ResponseCardCreateData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseCardCreateData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseCardCreateData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseCardCreateData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseCardCreateData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseContentError4) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseContentError4) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseContentError4 = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ResponseContentError4 from json. +func (s *ResponseContentError4) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseContentError4 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseContentError4") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseContentError4) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseContentError4) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseContentError4AdditionalErrors) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseContentError4AdditionalErrors) encodeFields(e *jx.Encoder) { + { + if s.Description.Set { + e.FieldStart("description") + s.Description.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseContentError4AdditionalErrors = [1]string{ + 0: "description", +} + +// Decode decodes ResponseContentError4AdditionalErrors from json. +func (s *ResponseContentError4AdditionalErrors) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseContentError4AdditionalErrors to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "description": + if err := func() error { + s.Description.Reset() + if err := s.Description.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"description\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseContentError4AdditionalErrors") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseContentError4AdditionalErrors) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseContentError4AdditionalErrors) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseContentError4Data) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseContentError4Data) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseContentError4Data = [0]string{} + +// Decode decodes ResponseContentError4Data from json. +func (s *ResponseContentError4Data) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseContentError4Data to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseContentError4Data") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseContentError4Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseContentError4Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseContentError6) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseContentError6) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } + { + if s.AdditionalErrors.Set { + e.FieldStart("additionalErrors") + s.AdditionalErrors.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseContentError6 = [4]string{ + 0: "data", + 1: "error", + 2: "errorText", + 3: "additionalErrors", +} + +// Decode decodes ResponseContentError6 from json. +func (s *ResponseContentError6) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseContentError6 to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + case "additionalErrors": + if err := func() error { + s.AdditionalErrors.Reset() + if err := s.AdditionalErrors.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"additionalErrors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseContentError6") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseContentError6) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseContentError6) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseContentError6Data) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseContentError6Data) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseContentError6Data = [0]string{} + +// Decode decodes ResponseContentError6Data from json. +func (s *ResponseContentError6Data) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseContentError6Data to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseContentError6Data") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseContentError6Data) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseContentError6Data) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseError) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseError) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseError = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseError from json. +func (s *ResponseError) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseError to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseError") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseError) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseError) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseErrorData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseErrorData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfResponseErrorData = [0]string{} + +// Decode decodes ResponseErrorData from json. +func (s *ResponseErrorData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseErrorData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode ResponseErrorData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseErrorData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseErrorData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodBufferHistories) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodBufferHistories) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseGoodBufferHistories = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseGoodBufferHistories from json. +func (s *ResponseGoodBufferHistories) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodBufferHistories to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodBufferHistories") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodBufferHistories) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodBufferHistories) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodBufferHistoriesData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodBufferHistoriesData) encodeFields(e *jx.Encoder) { + { + if s.UploadID.Set { + e.FieldStart("uploadID") + s.UploadID.Encode(e) + } + } + { + if s.BufferGoods != nil { + e.FieldStart("bufferGoods") + e.ArrStart() + for _, elem := range s.BufferGoods { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfResponseGoodBufferHistoriesData = [2]string{ + 0: "uploadID", + 1: "bufferGoods", +} + +// Decode decodes ResponseGoodBufferHistoriesData from json. +func (s *ResponseGoodBufferHistoriesData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodBufferHistoriesData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "uploadID": + if err := func() error { + s.UploadID.Reset() + if err := s.UploadID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"uploadID\"") + } + case "bufferGoods": + if err := func() error { + s.BufferGoods = make([]GoodBufferHistory, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem GoodBufferHistory + if err := elem.Decode(d); err != nil { + return err + } + s.BufferGoods = append(s.BufferGoods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"bufferGoods\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodBufferHistoriesData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodBufferHistoriesData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodBufferHistoriesData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodHistories) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodHistories) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseGoodHistories = [1]string{ + 0: "data", +} + +// Decode decodes ResponseGoodHistories from json. +func (s *ResponseGoodHistories) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodHistories to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodHistories") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodHistories) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodHistories) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodHistoriesData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodHistoriesData) encodeFields(e *jx.Encoder) { + { + if s.UploadID.Set { + e.FieldStart("uploadID") + s.UploadID.Encode(e) + } + } + { + if s.HistoryGoods != nil { + e.FieldStart("historyGoods") + e.ArrStart() + for _, elem := range s.HistoryGoods { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfResponseGoodHistoriesData = [2]string{ + 0: "uploadID", + 1: "historyGoods", +} + +// Decode decodes ResponseGoodHistoriesData from json. +func (s *ResponseGoodHistoriesData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodHistoriesData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "uploadID": + if err := func() error { + s.UploadID.Reset() + if err := s.UploadID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"uploadID\"") + } + case "historyGoods": + if err := func() error { + s.HistoryGoods = make([]GoodHistory, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem GoodHistory + if err := elem.Decode(d); err != nil { + return err + } + s.HistoryGoods = append(s.HistoryGoods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"historyGoods\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodHistoriesData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodHistoriesData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodHistoriesData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodsLists) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodsLists) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseGoodsLists = [1]string{ + 0: "data", +} + +// Decode decodes ResponseGoodsLists from json. +func (s *ResponseGoodsLists) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodsLists to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodsLists") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodsLists) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodsLists) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseGoodsListsData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseGoodsListsData) encodeFields(e *jx.Encoder) { + { + if s.ListGoods != nil { + e.FieldStart("listGoods") + e.ArrStart() + for _, elem := range s.ListGoods { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfResponseGoodsListsData = [1]string{ + 0: "listGoods", +} + +// Decode decodes ResponseGoodsListsData from json. +func (s *ResponseGoodsListsData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseGoodsListsData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "listGoods": + if err := func() error { + s.ListGoods = make([]GoodsList, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem GoodsList + if err := elem.Decode(d); err != nil { + return err + } + s.ListGoods = append(s.ListGoods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"listGoods\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseGoodsListsData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseGoodsListsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseGoodsListsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseQuarantineGoods) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseQuarantineGoods) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseQuarantineGoods = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseQuarantineGoods from json. +func (s *ResponseQuarantineGoods) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseQuarantineGoods to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseQuarantineGoods") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseQuarantineGoods) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseQuarantineGoods) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseQuarantineGoodsData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseQuarantineGoodsData) encodeFields(e *jx.Encoder) { + { + if s.QuarantineGoods != nil { + e.FieldStart("quarantineGoods") + e.ArrStart() + for _, elem := range s.QuarantineGoods { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfResponseQuarantineGoodsData = [1]string{ + 0: "quarantineGoods", +} + +// Decode decodes ResponseQuarantineGoodsData from json. +func (s *ResponseQuarantineGoodsData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseQuarantineGoodsData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "quarantineGoods": + if err := func() error { + s.QuarantineGoods = make([]QuarantineGoods, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem QuarantineGoods + if err := elem.Decode(d); err != nil { + return err + } + s.QuarantineGoods = append(s.QuarantineGoods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"quarantineGoods\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseQuarantineGoodsData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseQuarantineGoodsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseQuarantineGoodsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseSizeLists) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseSizeLists) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseSizeLists = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseSizeLists from json. +func (s *ResponseSizeLists) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseSizeLists to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseSizeLists") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseSizeLists) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseSizeLists) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseSizeListsData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseSizeListsData) encodeFields(e *jx.Encoder) { + { + if s.ListGoods != nil { + e.FieldStart("listGoods") + e.ArrStart() + for _, elem := range s.ListGoods { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfResponseSizeListsData = [1]string{ + 0: "listGoods", +} + +// Decode decodes ResponseSizeListsData from json. +func (s *ResponseSizeListsData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseSizeListsData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "listGoods": + if err := func() error { + s.ListGoods = make([]SizeGood, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem SizeGood + if err := elem.Decode(d); err != nil { + return err + } + s.ListGoods = append(s.ListGoods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"listGoods\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseSizeListsData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseSizeListsData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseSizeListsData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseTaskBuffer) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseTaskBuffer) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseTaskBuffer = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseTaskBuffer from json. +func (s *ResponseTaskBuffer) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseTaskBuffer to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseTaskBuffer") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseTaskBuffer) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseTaskBuffer) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ResponseTaskHistory) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ResponseTaskHistory) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfResponseTaskHistory = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes ResponseTaskHistory from json. +func (s *ResponseTaskHistory) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ResponseTaskHistory to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ResponseTaskHistory") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ResponseTaskHistory) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ResponseTaskHistory) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *SizeGood) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *SizeGood) encodeFields(e *jx.Encoder) { + { + if s.NmID.Set { + e.FieldStart("nmID") + s.NmID.Encode(e) + } + } + { + if s.SizeID.Set { + e.FieldStart("sizeID") + s.SizeID.Encode(e) + } + } + { + if s.VendorCode.Set { + e.FieldStart("vendorCode") + s.VendorCode.Encode(e) + } + } + { + if s.Price.Set { + e.FieldStart("price") + s.Price.Encode(e) + } + } + { + if s.CurrencyIsoCode4217.Set { + e.FieldStart("currencyIsoCode4217") + s.CurrencyIsoCode4217.Encode(e) + } + } + { + if s.DiscountedPrice.Set { + e.FieldStart("discountedPrice") + s.DiscountedPrice.Encode(e) + } + } + { + if s.ClubDiscountedPrice.Set { + e.FieldStart("clubDiscountedPrice") + s.ClubDiscountedPrice.Encode(e) + } + } + { + if s.Discount.Set { + e.FieldStart("discount") + s.Discount.Encode(e) + } + } + { + if s.ClubDiscount.Set { + e.FieldStart("clubDiscount") + s.ClubDiscount.Encode(e) + } + } + { + if s.TechSizeName.Set { + e.FieldStart("techSizeName") + s.TechSizeName.Encode(e) + } + } + { + if s.EditableSizePrice.Set { + e.FieldStart("editableSizePrice") + s.EditableSizePrice.Encode(e) + } + } +} + +var jsonFieldsNameOfSizeGood = [11]string{ + 0: "nmID", + 1: "sizeID", + 2: "vendorCode", + 3: "price", + 4: "currencyIsoCode4217", + 5: "discountedPrice", + 6: "clubDiscountedPrice", + 7: "discount", + 8: "clubDiscount", + 9: "techSizeName", + 10: "editableSizePrice", +} + +// Decode decodes SizeGood from json. +func (s *SizeGood) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SizeGood to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + if err := func() error { + s.NmID.Reset() + if err := s.NmID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "sizeID": + if err := func() error { + s.SizeID.Reset() + if err := s.SizeID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "vendorCode": + if err := func() error { + s.VendorCode.Reset() + if err := s.VendorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"vendorCode\"") + } + case "price": + if err := func() error { + s.Price.Reset() + if err := s.Price.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + case "currencyIsoCode4217": + if err := func() error { + s.CurrencyIsoCode4217.Reset() + if err := s.CurrencyIsoCode4217.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currencyIsoCode4217\"") + } + case "discountedPrice": + if err := func() error { + s.DiscountedPrice.Reset() + if err := s.DiscountedPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discountedPrice\"") + } + case "clubDiscountedPrice": + if err := func() error { + s.ClubDiscountedPrice.Reset() + if err := s.ClubDiscountedPrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscountedPrice\"") + } + case "discount": + if err := func() error { + s.Discount.Reset() + if err := s.Discount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"discount\"") + } + case "clubDiscount": + if err := func() error { + s.ClubDiscount.Reset() + if err := s.ClubDiscount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"clubDiscount\"") + } + case "techSizeName": + if err := func() error { + s.TechSizeName.Reset() + if err := s.TechSizeName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"techSizeName\"") + } + case "editableSizePrice": + if err := func() error { + s.EditableSizePrice.Reset() + if err := s.EditableSizePrice.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"editableSizePrice\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode SizeGood") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *SizeGood) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SizeGood) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *SizeGoodReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *SizeGoodReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("nmID") + e.Int(s.NmID) + } + { + e.FieldStart("sizeID") + e.Int(s.SizeID) + } + { + e.FieldStart("price") + e.Int(s.Price) + } +} + +var jsonFieldsNameOfSizeGoodReq = [3]string{ + 0: "nmID", + 1: "sizeID", + 2: "price", +} + +// Decode decodes SizeGoodReq from json. +func (s *SizeGoodReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SizeGoodReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nmID": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.NmID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nmID\"") + } + case "sizeID": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int() + s.SizeID = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sizeID\"") + } + case "price": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Int() + s.Price = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"price\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode SizeGoodReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfSizeGoodReq) { + name = jsonFieldsNameOfSizeGoodReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *SizeGoodReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SizeGoodReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes SizeGoodsBody as json. +func (s SizeGoodsBody) Encode(e *jx.Encoder) { + unwrapped := []SizeGoodReq(s) + if unwrapped == nil { + e.ArrEmpty() + return + } + if unwrapped != nil { + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() + } +} + +// Decode decodes SizeGoodsBody from json. +func (s *SizeGoodsBody) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SizeGoodsBody to nil") + } + var unwrapped []SizeGoodReq + if err := func() error { + unwrapped = make([]SizeGoodReq, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem SizeGoodReq + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = SizeGoodsBody(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s SizeGoodsBody) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SizeGoodsBody) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StocksWarehouseError as json. +func (s StocksWarehouseError) Encode(e *jx.Encoder) { + unwrapped := []StocksWarehouseErrorItem(s) + + e.ArrStart() + for _, elem := range unwrapped { + elem.Encode(e) + } + e.ArrEnd() +} + +// Decode decodes StocksWarehouseError from json. +func (s *StocksWarehouseError) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StocksWarehouseError to nil") + } + var unwrapped []StocksWarehouseErrorItem + if err := func() error { + unwrapped = make([]StocksWarehouseErrorItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem StocksWarehouseErrorItem + if err := elem.Decode(d); err != nil { + return err + } + unwrapped = append(unwrapped, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StocksWarehouseError(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s StocksWarehouseError) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StocksWarehouseError) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *StocksWarehouseErrorItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *StocksWarehouseErrorItem) encodeFields(e *jx.Encoder) { + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Message.Set { + e.FieldStart("message") + s.Message.Encode(e) + } + } +} + +var jsonFieldsNameOfStocksWarehouseErrorItem = [3]string{ + 0: "code", + 1: "data", + 2: "message", +} + +// Decode decodes StocksWarehouseErrorItem from json. +func (s *StocksWarehouseErrorItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StocksWarehouseErrorItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "message": + if err := func() error { + s.Message.Reset() + if err := s.Message.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"message\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode StocksWarehouseErrorItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StocksWarehouseErrorItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StocksWarehouseErrorItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *StocksWarehouseErrorItemData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *StocksWarehouseErrorItemData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfStocksWarehouseErrorItemData = [0]string{} + +// Decode decodes StocksWarehouseErrorItemData from json. +func (s *StocksWarehouseErrorItemData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StocksWarehouseErrorItemData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode StocksWarehouseErrorItemData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StocksWarehouseErrorItemData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StocksWarehouseErrorItemData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes SupplierTaskMetadata as json. +func (s SupplierTaskMetadata) Encode(e *jx.Encoder) { + unwrapped := jx.Raw(s) + + if len(unwrapped) != 0 { + e.Raw(unwrapped) + } +} + +// Decode decodes SupplierTaskMetadata from json. +func (s *SupplierTaskMetadata) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SupplierTaskMetadata to nil") + } + var unwrapped jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + unwrapped = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = SupplierTaskMetadata(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s SupplierTaskMetadata) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SupplierTaskMetadata) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes SupplierTaskMetadataBuffer as json. +func (s SupplierTaskMetadataBuffer) Encode(e *jx.Encoder) { + unwrapped := jx.Raw(s) + + if len(unwrapped) != 0 { + e.Raw(unwrapped) + } +} + +// Decode decodes SupplierTaskMetadataBuffer from json. +func (s *SupplierTaskMetadataBuffer) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SupplierTaskMetadataBuffer to nil") + } + var unwrapped jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + unwrapped = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = SupplierTaskMetadataBuffer(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s SupplierTaskMetadataBuffer) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SupplierTaskMetadataBuffer) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *TaskCreated) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *TaskCreated) encodeFields(e *jx.Encoder) { + { + if s.Data.Set { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Error.Set { + e.FieldStart("error") + s.Error.Encode(e) + } + } + { + if s.ErrorText.Set { + e.FieldStart("errorText") + s.ErrorText.Encode(e) + } + } +} + +var jsonFieldsNameOfTaskCreated = [3]string{ + 0: "data", + 1: "error", + 2: "errorText", +} + +// Decode decodes TaskCreated from json. +func (s *TaskCreated) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode TaskCreated to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "error": + if err := func() error { + s.Error.Reset() + if err := s.Error.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + case "errorText": + if err := func() error { + s.ErrorText.Reset() + if err := s.ErrorText.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errorText\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode TaskCreated") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *TaskCreated) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *TaskCreated) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *TaskCreatedData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *TaskCreatedData) encodeFields(e *jx.Encoder) { + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.AlreadyExists.Set { + e.FieldStart("alreadyExists") + s.AlreadyExists.Encode(e) + } + } +} + +var jsonFieldsNameOfTaskCreatedData = [2]string{ + 0: "id", + 1: "alreadyExists", +} + +// Decode decodes TaskCreatedData from json. +func (s *TaskCreatedData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode TaskCreatedData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "alreadyExists": + if err := func() error { + s.AlreadyExists.Reset() + if err := s.AlreadyExists.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"alreadyExists\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode TaskCreatedData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *TaskCreatedData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *TaskCreatedData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Warehouse) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Warehouse) encodeFields(e *jx.Encoder) { + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.OfficeId.Set { + e.FieldStart("officeId") + s.OfficeId.Encode(e) + } + } + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.CargoType.Set { + e.FieldStart("cargoType") + s.CargoType.Encode(e) + } + } + { + if s.DeliveryType.Set { + e.FieldStart("deliveryType") + s.DeliveryType.Encode(e) + } + } +} + +var jsonFieldsNameOfWarehouse = [5]string{ + 0: "name", + 1: "officeId", + 2: "id", + 3: "cargoType", + 4: "deliveryType", +} + +// Decode decodes Warehouse from json. +func (s *Warehouse) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Warehouse to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "officeId": + if err := func() error { + s.OfficeId.Reset() + if err := s.OfficeId.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"officeId\"") + } + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "cargoType": + if err := func() error { + s.CargoType.Reset() + if err := s.CargoType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cargoType\"") + } + case "deliveryType": + if err := func() error { + s.DeliveryType.Reset() + if err := s.DeliveryType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"deliveryType\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Warehouse") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Warehouse) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Warehouse) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes WarehouseCargoType as json. +func (s WarehouseCargoType) Encode(e *jx.Encoder) { + e.Int(int(s)) +} + +// Decode decodes WarehouseCargoType from json. +func (s *WarehouseCargoType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode WarehouseCargoType to nil") + } + v, err := d.Int() + if err != nil { + return err + } + *s = WarehouseCargoType(v) + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s WarehouseCargoType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *WarehouseCargoType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes WarehouseDeliveryType as json. +func (s WarehouseDeliveryType) Encode(e *jx.Encoder) { + e.Int(int(s)) +} + +// Decode decodes WarehouseDeliveryType from json. +func (s *WarehouseDeliveryType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode WarehouseDeliveryType to nil") + } + v, err := d.Int() + if err != nil { + return err + } + *s = WarehouseDeliveryType(v) + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s WarehouseDeliveryType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *WarehouseDeliveryType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} diff --git a/pkg/api/wb/client/oas_labeler_gen.go b/pkg/api/wb/client/oas_labeler_gen.go new file mode 100644 index 0000000..7e519e8 --- /dev/null +++ b/pkg/api/wb/client/oas_labeler_gen.go @@ -0,0 +1,42 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" +) + +// Labeler is used to allow adding custom attributes to the server request metrics. +type Labeler struct { + attrs []attribute.KeyValue +} + +// Add attributes to the Labeler. +func (l *Labeler) Add(attrs ...attribute.KeyValue) { + l.attrs = append(l.attrs, attrs...) +} + +// AttributeSet returns the attributes added to the Labeler as an attribute.Set. +func (l *Labeler) AttributeSet() attribute.Set { + return attribute.NewSet(l.attrs...) +} + +type labelerContextKey struct{} + +// LabelerFromContext retrieves the Labeler from the provided context, if present. +// +// If no Labeler was found in the provided context a new, empty Labeler is returned and the second +// return value is false. In this case it is safe to use the Labeler but any attributes added to +// it will not be used. +func LabelerFromContext(ctx context.Context) (*Labeler, bool) { + if l, ok := ctx.Value(labelerContextKey{}).(*Labeler); ok { + return l, true + } + return &Labeler{}, false +} + +func contextWithLabeler(ctx context.Context, l *Labeler) context.Context { + return context.WithValue(ctx, labelerContextKey{}, l) +} diff --git a/pkg/api/wb/client/oas_middleware_gen.go b/pkg/api/wb/client/oas_middleware_gen.go new file mode 100644 index 0000000..6f58a1a --- /dev/null +++ b/pkg/api/wb/client/oas_middleware_gen.go @@ -0,0 +1,10 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "github.com/ogen-go/ogen/middleware" +) + +// Middleware is middleware type. +type Middleware = middleware.Middleware diff --git a/pkg/api/wb/client/oas_operations_gen.go b/pkg/api/wb/client/oas_operations_gen.go new file mode 100644 index 0000000..8a9aeac --- /dev/null +++ b/pkg/api/wb/client/oas_operations_gen.go @@ -0,0 +1,50 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +// OperationName is the ogen operation name +type OperationName = string + +const ( + APIV2BufferGoodsTaskGetOperation OperationName = "APIV2BufferGoodsTaskGet" + APIV2BufferTasksGetOperation OperationName = "APIV2BufferTasksGet" + APIV2HistoryGoodsTaskGetOperation OperationName = "APIV2HistoryGoodsTaskGet" + APIV2HistoryTasksGetOperation OperationName = "APIV2HistoryTasksGet" + APIV2ListGoodsFilterGetOperation OperationName = "APIV2ListGoodsFilterGet" + APIV2ListGoodsSizeNmGetOperation OperationName = "APIV2ListGoodsSizeNmGet" + APIV2QuarantineGoodsGetOperation OperationName = "APIV2QuarantineGoodsGet" + APIV2UploadTaskClubDiscountPostOperation OperationName = "APIV2UploadTaskClubDiscountPost" + APIV2UploadTaskPostOperation OperationName = "APIV2UploadTaskPost" + APIV2UploadTaskSizePostOperation OperationName = "APIV2UploadTaskSizePost" + APIV3OfficesGetOperation OperationName = "APIV3OfficesGet" + APIV3StocksWarehouseIdDeleteOperation OperationName = "APIV3StocksWarehouseIdDelete" + APIV3StocksWarehouseIdPostOperation OperationName = "APIV3StocksWarehouseIdPost" + APIV3StocksWarehouseIdPutOperation OperationName = "APIV3StocksWarehouseIdPut" + APIV3WarehousesGetOperation OperationName = "APIV3WarehousesGet" + APIV3WarehousesPostOperation OperationName = "APIV3WarehousesPost" + APIV3WarehousesWarehouseIdDeleteOperation OperationName = "APIV3WarehousesWarehouseIdDelete" + APIV3WarehousesWarehouseIdPutOperation OperationName = "APIV3WarehousesWarehouseIdPut" + ContentV2BarcodesPostOperation OperationName = "ContentV2BarcodesPost" + ContentV2CardsDeleteTrashPostOperation OperationName = "ContentV2CardsDeleteTrashPost" + ContentV2CardsErrorListGetOperation OperationName = "ContentV2CardsErrorListGet" + ContentV2CardsLimitsGetOperation OperationName = "ContentV2CardsLimitsGet" + ContentV2CardsRecoverPostOperation OperationName = "ContentV2CardsRecoverPost" + ContentV2CardsUpdatePostOperation OperationName = "ContentV2CardsUpdatePost" + ContentV2CardsUploadAddPostOperation OperationName = "ContentV2CardsUploadAddPost" + ContentV2CardsUploadPostOperation OperationName = "ContentV2CardsUploadPost" + ContentV2DirectoryColorsGetOperation OperationName = "ContentV2DirectoryColorsGet" + ContentV2DirectoryCountriesGetOperation OperationName = "ContentV2DirectoryCountriesGet" + ContentV2DirectoryKindsGetOperation OperationName = "ContentV2DirectoryKindsGet" + ContentV2DirectorySeasonsGetOperation OperationName = "ContentV2DirectorySeasonsGet" + ContentV2DirectoryTnvedGetOperation OperationName = "ContentV2DirectoryTnvedGet" + ContentV2DirectoryVatGetOperation OperationName = "ContentV2DirectoryVatGet" + ContentV2GetCardsListPostOperation OperationName = "ContentV2GetCardsListPost" + ContentV2GetCardsTrashPostOperation OperationName = "ContentV2GetCardsTrashPost" + ContentV2ObjectAllGetOperation OperationName = "ContentV2ObjectAllGet" + ContentV2ObjectCharcsSubjectIdGetOperation OperationName = "ContentV2ObjectCharcsSubjectIdGet" + ContentV2ObjectParentAllGetOperation OperationName = "ContentV2ObjectParentAllGet" + ContentV2TagNomenclatureLinkPostOperation OperationName = "ContentV2TagNomenclatureLinkPost" + ContentV2TagsGetOperation OperationName = "ContentV2TagsGet" + ContentV3MediaFilePostOperation OperationName = "ContentV3MediaFilePost" + ContentV3MediaSavePostOperation OperationName = "ContentV3MediaSavePost" +) diff --git a/pkg/api/wb/client/oas_parameters_gen.go b/pkg/api/wb/client/oas_parameters_gen.go new file mode 100644 index 0000000..63e18ec --- /dev/null +++ b/pkg/api/wb/client/oas_parameters_gen.go @@ -0,0 +1,2634 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + "net/url" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/conv" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/uri" + "github.com/ogen-go/ogen/validate" +) + +// APIV2BufferGoodsTaskGetParams is parameters of GET /api/v2/buffer/goods/task operation. +type APIV2BufferGoodsTaskGetParams struct { + // Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС + // (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1Β 000 элСмСнтов. + Limit uint + // ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. + Offset OptUint + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID int +} + +func unpackAPIV2BufferGoodsTaskGetParams(packed middleware.Parameters) (params APIV2BufferGoodsTaskGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + params.Limit = packed[key].(uint) + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptUint) + } + } + { + key := middleware.ParameterKey{ + Name: "uploadID", + In: "query", + } + params.UploadID = packed[key].(int) + } + return params +} + +func decodeAPIV2BufferGoodsTaskGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2BufferGoodsTaskGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + params.Limit = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal uint + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Offset.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 0, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + // Decode query: uploadID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "uploadID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2BufferTasksGetParams is parameters of GET /api/v2/buffer/tasks operation. +type APIV2BufferTasksGetParams struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID int +} + +func unpackAPIV2BufferTasksGetParams(packed middleware.Parameters) (params APIV2BufferTasksGetParams) { + { + key := middleware.ParameterKey{ + Name: "uploadID", + In: "query", + } + params.UploadID = packed[key].(int) + } + return params +} + +func decodeAPIV2BufferTasksGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2BufferTasksGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: uploadID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "uploadID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2HistoryGoodsTaskGetParams is parameters of GET /api/v2/history/goods/task operation. +type APIV2HistoryGoodsTaskGetParams struct { + // Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС + // (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1Β 000 элСмСнтов. + Limit uint + // ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. + Offset OptUint + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID int +} + +func unpackAPIV2HistoryGoodsTaskGetParams(packed middleware.Parameters) (params APIV2HistoryGoodsTaskGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + params.Limit = packed[key].(uint) + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptUint) + } + } + { + key := middleware.ParameterKey{ + Name: "uploadID", + In: "query", + } + params.UploadID = packed[key].(int) + } + return params +} + +func decodeAPIV2HistoryGoodsTaskGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2HistoryGoodsTaskGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + params.Limit = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal uint + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Offset.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 0, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + // Decode query: uploadID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "uploadID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2HistoryTasksGetParams is parameters of GET /api/v2/history/tasks operation. +type APIV2HistoryTasksGetParams struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID int +} + +func unpackAPIV2HistoryTasksGetParams(packed middleware.Parameters) (params APIV2HistoryTasksGetParams) { + { + key := middleware.ParameterKey{ + Name: "uploadID", + In: "query", + } + params.UploadID = packed[key].(int) + } + return params +} + +func decodeAPIV2HistoryTasksGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2HistoryTasksGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: uploadID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "uploadID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "uploadID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2ListGoodsFilterGetParams is parameters of GET /api/v2/list/goods/filter operation. +type APIV2ListGoodsFilterGetParams struct { + // Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС + // (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1Β 000 элСмСнтов. + Limit uint + // ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. + Offset OptUint + // Артикул WB, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€. + FilterNmID OptInt +} + +func unpackAPIV2ListGoodsFilterGetParams(packed middleware.Parameters) (params APIV2ListGoodsFilterGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + params.Limit = packed[key].(uint) + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptUint) + } + } + { + key := middleware.ParameterKey{ + Name: "filterNmID", + In: "query", + } + if v, ok := packed[key]; ok { + params.FilterNmID = v.(OptInt) + } + } + return params +} + +func decodeAPIV2ListGoodsFilterGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2ListGoodsFilterGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + params.Limit = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal uint + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Offset.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 0, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + // Decode query: filterNmID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "filterNmID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotFilterNmIDVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotFilterNmIDVal = c + return nil + }(); err != nil { + return err + } + params.FilterNmID.SetTo(paramsDotFilterNmIDVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "filterNmID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2ListGoodsSizeNmGetParams is parameters of GET /api/v2/list/goods/size/nm operation. +type APIV2ListGoodsSizeNmGetParams struct { + // Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС + // (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1Β 000 элСмСнтов. + Limit uint + // ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. + Offset OptUint + // Артикул WB. + NmID int +} + +func unpackAPIV2ListGoodsSizeNmGetParams(packed middleware.Parameters) (params APIV2ListGoodsSizeNmGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + params.Limit = packed[key].(uint) + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptUint) + } + } + { + key := middleware.ParameterKey{ + Name: "nmID", + In: "query", + } + params.NmID = packed[key].(int) + } + return params +} + +func decodeAPIV2ListGoodsSizeNmGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2ListGoodsSizeNmGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + params.Limit = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal uint + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Offset.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 0, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + // Decode query: nmID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "nmID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.NmID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "nmID", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV2QuarantineGoodsGetParams is parameters of GET /api/v2/quarantine/goods operation. +type APIV2QuarantineGoodsGetParams struct { + // Бколько элСмСнтов вывСсти Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС + // (пагинация). ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 1Β 000 элСмСнтов. + Limit uint + // ПослС ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. + Offset OptUint +} + +func unpackAPIV2QuarantineGoodsGetParams(packed middleware.Parameters) (params APIV2QuarantineGoodsGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + params.Limit = packed[key].(uint) + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptUint) + } + } + return params +} + +func decodeAPIV2QuarantineGoodsGetParams(args [0]string, argsEscaped bool, r *http.Request) (params APIV2QuarantineGoodsGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + params.Limit = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal uint + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToUint(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Offset.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 0, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + return params, nil +} + +// APIV3StocksWarehouseIdDeleteParams is parameters of DELETE /api/v3/stocks/{warehouseId} operation. +type APIV3StocksWarehouseIdDeleteParams struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + WarehouseId int64 +} + +func unpackAPIV3StocksWarehouseIdDeleteParams(packed middleware.Parameters) (params APIV3StocksWarehouseIdDeleteParams) { + { + key := middleware.ParameterKey{ + Name: "warehouseId", + In: "path", + } + params.WarehouseId = packed[key].(int64) + } + return params +} + +func decodeAPIV3StocksWarehouseIdDeleteParams(args [1]string, argsEscaped bool, r *http.Request) (params APIV3StocksWarehouseIdDeleteParams, _ error) { + // Decode path: warehouseId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "warehouseId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt64(val) + if err != nil { + return err + } + + params.WarehouseId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "warehouseId", + In: "path", + Err: err, + } + } + return params, nil +} + +// APIV3StocksWarehouseIdPostParams is parameters of POST /api/v3/stocks/{warehouseId} operation. +type APIV3StocksWarehouseIdPostParams struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + WarehouseId int64 +} + +func unpackAPIV3StocksWarehouseIdPostParams(packed middleware.Parameters) (params APIV3StocksWarehouseIdPostParams) { + { + key := middleware.ParameterKey{ + Name: "warehouseId", + In: "path", + } + params.WarehouseId = packed[key].(int64) + } + return params +} + +func decodeAPIV3StocksWarehouseIdPostParams(args [1]string, argsEscaped bool, r *http.Request) (params APIV3StocksWarehouseIdPostParams, _ error) { + // Decode path: warehouseId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "warehouseId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt64(val) + if err != nil { + return err + } + + params.WarehouseId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "warehouseId", + In: "path", + Err: err, + } + } + return params, nil +} + +// APIV3StocksWarehouseIdPutParams is parameters of PUT /api/v3/stocks/{warehouseId} operation. +type APIV3StocksWarehouseIdPutParams struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + WarehouseId int64 +} + +func unpackAPIV3StocksWarehouseIdPutParams(packed middleware.Parameters) (params APIV3StocksWarehouseIdPutParams) { + { + key := middleware.ParameterKey{ + Name: "warehouseId", + In: "path", + } + params.WarehouseId = packed[key].(int64) + } + return params +} + +func decodeAPIV3StocksWarehouseIdPutParams(args [1]string, argsEscaped bool, r *http.Request) (params APIV3StocksWarehouseIdPutParams, _ error) { + // Decode path: warehouseId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "warehouseId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt64(val) + if err != nil { + return err + } + + params.WarehouseId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "warehouseId", + In: "path", + Err: err, + } + } + return params, nil +} + +// APIV3WarehousesWarehouseIdDeleteParams is parameters of DELETE /api/v3/warehouses/{warehouseId} operation. +type APIV3WarehousesWarehouseIdDeleteParams struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + WarehouseId int64 +} + +func unpackAPIV3WarehousesWarehouseIdDeleteParams(packed middleware.Parameters) (params APIV3WarehousesWarehouseIdDeleteParams) { + { + key := middleware.ParameterKey{ + Name: "warehouseId", + In: "path", + } + params.WarehouseId = packed[key].(int64) + } + return params +} + +func decodeAPIV3WarehousesWarehouseIdDeleteParams(args [1]string, argsEscaped bool, r *http.Request) (params APIV3WarehousesWarehouseIdDeleteParams, _ error) { + // Decode path: warehouseId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "warehouseId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt64(val) + if err != nil { + return err + } + + params.WarehouseId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "warehouseId", + In: "path", + Err: err, + } + } + return params, nil +} + +// APIV3WarehousesWarehouseIdPutParams is parameters of PUT /api/v3/warehouses/{warehouseId} operation. +type APIV3WarehousesWarehouseIdPutParams struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + WarehouseId int64 +} + +func unpackAPIV3WarehousesWarehouseIdPutParams(packed middleware.Parameters) (params APIV3WarehousesWarehouseIdPutParams) { + { + key := middleware.ParameterKey{ + Name: "warehouseId", + In: "path", + } + params.WarehouseId = packed[key].(int64) + } + return params +} + +func decodeAPIV3WarehousesWarehouseIdPutParams(args [1]string, argsEscaped bool, r *http.Request) (params APIV3WarehousesWarehouseIdPutParams, _ error) { + // Decode path: warehouseId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "warehouseId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt64(val) + if err != nil { + return err + } + + params.WarehouseId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "warehouseId", + In: "path", + Err: err, + } + } + return params, nil +} + +// ContentV2CardsErrorListGetParams is parameters of GET /content/v2/cards/error/list operation. +type ContentV2CardsErrorListGetParams struct { + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Ρ‹Π±ΠΎΡ€Π° языка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° (для + // ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдусмотрСна ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ). + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2CardsErrorListGetParams(packed middleware.Parameters) (params ContentV2CardsErrorListGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2CardsErrorListGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2CardsErrorListGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectoryColorsGetParams is parameters of GET /content/v2/directory/colors operation. +type ContentV2DirectoryColorsGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectoryColorsGetParams(packed middleware.Parameters) (params ContentV2DirectoryColorsGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectoryColorsGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectoryColorsGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectoryCountriesGetParams is parameters of GET /content/v2/directory/countries operation. +type ContentV2DirectoryCountriesGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectoryCountriesGetParams(packed middleware.Parameters) (params ContentV2DirectoryCountriesGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectoryCountriesGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectoryCountriesGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectoryKindsGetParams is parameters of GET /content/v2/directory/kinds operation. +type ContentV2DirectoryKindsGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectoryKindsGetParams(packed middleware.Parameters) (params ContentV2DirectoryKindsGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectoryKindsGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectoryKindsGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectorySeasonsGetParams is parameters of GET /content/v2/directory/seasons operation. +type ContentV2DirectorySeasonsGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectorySeasonsGetParams(packed middleware.Parameters) (params ContentV2DirectorySeasonsGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectorySeasonsGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectorySeasonsGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectoryTnvedGetParams is parameters of GET /content/v2/directory/tnved operation. +type ContentV2DirectoryTnvedGetParams struct { + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID int + // Поиск ΠΏΠΎ ВНВЭД-ΠΊΠΎΠ΄Ρƒ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ°Ρ€Π΅ с `subjectID`. + Search OptInt + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π°: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectoryTnvedGetParams(packed middleware.Parameters) (params ContentV2DirectoryTnvedGetParams) { + { + key := middleware.ParameterKey{ + Name: "subjectID", + In: "query", + } + params.SubjectID = packed[key].(int) + } + { + key := middleware.ParameterKey{ + Name: "search", + In: "query", + } + if v, ok := packed[key]; ok { + params.Search = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectoryTnvedGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectoryTnvedGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: subjectID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "subjectID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.SubjectID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "subjectID", + In: "query", + Err: err, + } + } + // Decode query: search. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "search", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotSearchVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotSearchVal = c + return nil + }(); err != nil { + return err + } + params.Search.SetTo(paramsDotSearchVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "search", + In: "query", + Err: err, + } + } + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2DirectoryVatGetParams is parameters of GET /content/v2/directory/vat operation. +type ContentV2DirectoryVatGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2DirectoryVatGetParams(packed middleware.Parameters) (params ContentV2DirectoryVatGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2DirectoryVatGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2DirectoryVatGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2GetCardsListPostParams is parameters of POST /content/v2/get/cards/list operation. +type ContentV2GetCardsListPostParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `name`, `value` ΠΈ `object`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2GetCardsListPostParams(packed middleware.Parameters) (params ContentV2GetCardsListPostParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2GetCardsListPostParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2GetCardsListPostParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2GetCardsTrashPostParams is parameters of POST /content/v2/get/cards/trash operation. +type ContentV2GetCardsTrashPostParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `name`, `value` ΠΈ `object`: `ru`, `en`, `zh`. + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptContentV2GetCardsTrashPostLocale +} + +func unpackContentV2GetCardsTrashPostParams(packed middleware.Parameters) (params ContentV2GetCardsTrashPostParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptContentV2GetCardsTrashPostLocale) + } + } + return params +} + +func decodeContentV2GetCardsTrashPostParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2GetCardsTrashPostParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal ContentV2GetCardsTrashPostLocale + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = ContentV2GetCardsTrashPostLocale(c) + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.Locale.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2ObjectAllGetParams is parameters of GET /content/v2/object/all operation. +type ContentV2ObjectAllGetParams struct { + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π°: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString + // Поиск ΠΏΠΎ названию ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° (Носки), поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ + // подстрокС, ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° любом ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… + // языков. + Name OptString + Limit OptInt + Offset OptInt + // ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + ParentID OptInt +} + +func unpackContentV2ObjectAllGetParams(packed middleware.Parameters) (params ContentV2ObjectAllGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + if v, ok := packed[key]; ok { + params.Name = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + if v, ok := packed[key]; ok { + params.Limit = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "offset", + In: "query", + } + if v, ok := packed[key]; ok { + params.Offset = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "parentID", + In: "query", + } + if v, ok := packed[key]; ok { + params.ParentID = v.(OptInt) + } + } + return params +} + +func decodeContentV2ObjectAllGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2ObjectAllGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotNameVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotNameVal = c + return nil + }(); err != nil { + return err + } + params.Name.SetTo(paramsDotNameVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + // Set default value for query: limit. + { + val := int(30) + params.Limit.SetTo(val) + } + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotLimitVal = c + return nil + }(); err != nil { + return err + } + params.Limit.SetTo(paramsDotLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Set default value for query: offset. + { + val := int(0) + params.Offset.SetTo(val) + } + // Decode query: offset. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "offset", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotOffsetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotOffsetVal = c + return nil + }(); err != nil { + return err + } + params.Offset.SetTo(paramsDotOffsetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "offset", + In: "query", + Err: err, + } + } + // Decode query: parentID. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "parentID", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotParentIDVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotParentIDVal = c + return nil + }(); err != nil { + return err + } + params.ParentID.SetTo(paramsDotParentIDVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "parentID", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2ObjectCharcsSubjectIdGetParams is parameters of GET /content/v2/object/charcs/{subjectId} operation. +type ContentV2ObjectCharcsSubjectIdGetParams struct { + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectId int + // Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚Π° `subjectName` ΠΈ `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2ObjectCharcsSubjectIdGetParams(packed middleware.Parameters) (params ContentV2ObjectCharcsSubjectIdGetParams) { + { + key := middleware.ParameterKey{ + Name: "subjectId", + In: "path", + } + params.SubjectId = packed[key].(int) + } + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2ObjectCharcsSubjectIdGetParams(args [1]string, argsEscaped bool, r *http.Request) (params ContentV2ObjectCharcsSubjectIdGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode path: subjectId. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "subjectId", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.SubjectId = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "subjectId", + In: "path", + Err: err, + } + } + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV2ObjectParentAllGetParams is parameters of GET /content/v2/object/parent/all operation. +type ContentV2ObjectParentAllGetParams struct { + // Π―Π·Ρ‹ΠΊ поля ΠΎΡ‚Π²Π΅Ρ‚Π° `name`: + // - `ru` β€” русский + // - `en` β€” английский + // - `zh` β€” китайский + // ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + Locale OptString +} + +func unpackContentV2ObjectParentAllGetParams(packed middleware.Parameters) (params ContentV2ObjectParentAllGetParams) { + { + key := middleware.ParameterKey{ + Name: "locale", + In: "query", + } + if v, ok := packed[key]; ok { + params.Locale = v.(OptString) + } + } + return params +} + +func decodeContentV2ObjectParentAllGetParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV2ObjectParentAllGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: locale. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "locale", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLocaleVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotLocaleVal = c + return nil + }(); err != nil { + return err + } + params.Locale.SetTo(paramsDotLocaleVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "locale", + In: "query", + Err: err, + } + } + return params, nil +} + +// ContentV3MediaFilePostParams is parameters of POST /content/v3/media/file operation. +type ContentV3MediaFilePostParams struct { + // Артикул WB. + XNmID string + // НомСр ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Π° Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, начинаСтся с `1`. ΠŸΡ€ΠΈ + // Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π²ΠΈΠ΄Π΅ΠΎ всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ `1`. + // Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ, Π½ΠΎΠΌΠ΅Ρ€ + // ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС количСства ΡƒΠΆΠ΅ + // Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ². + XPhotoNumber int +} + +func unpackContentV3MediaFilePostParams(packed middleware.Parameters) (params ContentV3MediaFilePostParams) { + { + key := middleware.ParameterKey{ + Name: "X-Nm-Id", + In: "header", + } + params.XNmID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "X-Photo-Number", + In: "header", + } + params.XPhotoNumber = packed[key].(int) + } + return params +} + +func decodeContentV3MediaFilePostParams(args [0]string, argsEscaped bool, r *http.Request) (params ContentV3MediaFilePostParams, _ error) { + h := uri.NewHeaderDecoder(r.Header) + // Decode header: X-Nm-Id. + if err := func() error { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Nm-Id", + Explode: false, + } + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.XNmID = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "X-Nm-Id", + In: "header", + Err: err, + } + } + // Decode header: X-Photo-Number. + if err := func() error { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Photo-Number", + Explode: false, + } + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.XPhotoNumber = c + return nil + }); err != nil { + return err + } + } else { + return err + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "X-Photo-Number", + In: "header", + Err: err, + } + } + return params, nil +} diff --git a/pkg/api/wb/client/oas_request_decoders_gen.go b/pkg/api/wb/client/oas_request_decoders_gen.go new file mode 100644 index 0000000..68054ef --- /dev/null +++ b/pkg/api/wb/client/oas_request_decoders_gen.go @@ -0,0 +1,1360 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "fmt" + "io" + "mime" + "net/http" + "net/url" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/validate" +) + +func (s *Server) decodeAPIV2UploadTaskClubDiscountPostRequest(r *http.Request) ( + req *APIV2UploadTaskClubDiscountPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV2UploadTaskClubDiscountPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV2UploadTaskPostRequest(r *http.Request) ( + req *APIV2UploadTaskPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV2UploadTaskPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV2UploadTaskSizePostRequest(r *http.Request) ( + req *APIV2UploadTaskSizePostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV2UploadTaskSizePostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV3StocksWarehouseIdDeleteRequest(r *http.Request) ( + req *APIV3StocksWarehouseIdDeleteReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV3StocksWarehouseIdDeleteReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if err := request.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV3StocksWarehouseIdPostRequest(r *http.Request) ( + req *APIV3StocksWarehouseIdPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV3StocksWarehouseIdPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if err := request.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV3StocksWarehouseIdPutRequest(r *http.Request) ( + req OptAPIV3StocksWarehouseIdPutReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptAPIV3StocksWarehouseIdPutReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV3WarehousesPostRequest(r *http.Request) ( + req *APIV3WarehousesPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV3WarehousesPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if err := request.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeAPIV3WarehousesWarehouseIdPutRequest(r *http.Request) ( + req *APIV3WarehousesWarehouseIdPutReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request APIV3WarehousesWarehouseIdPutReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if err := request.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2BarcodesPostRequest(r *http.Request) ( + req *ContentV2BarcodesPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2BarcodesPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2CardsDeleteTrashPostRequest(r *http.Request) ( + req *ContentV2CardsDeleteTrashPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2CardsDeleteTrashPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2CardsRecoverPostRequest(r *http.Request) ( + req *ContentV2CardsRecoverPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2CardsRecoverPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2CardsUpdatePostRequest(r *http.Request) ( + req []ContentV2CardsUpdatePostReqItem, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request []ContentV2CardsUpdatePostReqItem + if err := func() error { + request = make([]ContentV2CardsUpdatePostReqItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUpdatePostReqItem + if err := elem.Decode(d); err != nil { + return err + } + request = append(request, elem) + return nil + }); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + var failures []validate.FieldError + for i, elem := range request { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2CardsUploadAddPostRequest(r *http.Request) ( + req OptContentV2CardsUploadAddPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptContentV2CardsUploadAddPostReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2CardsUploadPostRequest(r *http.Request) ( + req []ContentV2CardsUploadPostReqItem, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request []ContentV2CardsUploadPostReqItem + if err := func() error { + request = make([]ContentV2CardsUploadPostReqItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ContentV2CardsUploadPostReqItem + if err := elem.Decode(d); err != nil { + return err + } + request = append(request, elem) + return nil + }); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + var failures []validate.FieldError + for i, elem := range request { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2GetCardsListPostRequest(r *http.Request) ( + req *ContentV2GetCardsListPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2GetCardsListPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2GetCardsTrashPostRequest(r *http.Request) ( + req *ContentV2GetCardsTrashPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2GetCardsTrashPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV2TagNomenclatureLinkPostRequest(r *http.Request) ( + req *ContentV2TagNomenclatureLinkPostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV2TagNomenclatureLinkPostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV3MediaFilePostRequest(r *http.Request) ( + req *ContentV3MediaFilePostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "multipart/form-data": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + if err := r.ParseMultipartForm(s.cfg.MaxMultipartMemory); err != nil { + return req, close, errors.Wrap(err, "parse multipart form") + } + // Remove all temporary files created by ParseMultipartForm when the request is done. + // + // Notice that the closers are called in reverse order, to match defer behavior, so + // any opened file will be closed before RemoveAll call. + closers = append(closers, r.MultipartForm.RemoveAll) + // Form values may be unused. + form := url.Values(r.MultipartForm.Value) + _ = form + + var request ContentV3MediaFilePostReq + { + if err := func() error { + files, ok := r.MultipartForm.File["uploadfile"] + if !ok || len(files) < 1 { + return nil + } + fh := files[0] + + f, err := fh.Open() + if err != nil { + return errors.Wrap(err, "open") + } + closers = append(closers, f.Close) + request.Uploadfile.SetTo(ht.MultipartFile{ + Name: fh.Filename, + File: f, + Size: fh.Size, + Header: fh.Header, + }) + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "decode \"uploadfile\"") + } + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeContentV3MediaSavePostRequest(r *http.Request) ( + req *ContentV3MediaSavePostReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = errors.Join(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = errors.Join(rerr, close()) + } + }() + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, validate.ErrBodyRequired + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, validate.ErrBodyRequired + } + + d := jx.DecodeBytes(buf) + + var request ContentV3MediaSavePostReq + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return &request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} diff --git a/pkg/api/wb/client/oas_request_encoders_gen.go b/pkg/api/wb/client/oas_request_encoders_gen.go new file mode 100644 index 0000000..6117241 --- /dev/null +++ b/pkg/api/wb/client/oas_request_encoders_gen.go @@ -0,0 +1,315 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "bytes" + "mime" + "mime/multipart" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/uri" +) + +func encodeAPIV2UploadTaskClubDiscountPostRequest( + req *APIV2UploadTaskClubDiscountPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV2UploadTaskPostRequest( + req *APIV2UploadTaskPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV2UploadTaskSizePostRequest( + req *APIV2UploadTaskSizePostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV3StocksWarehouseIdDeleteRequest( + req *APIV3StocksWarehouseIdDeleteReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV3StocksWarehouseIdPostRequest( + req *APIV3StocksWarehouseIdPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV3StocksWarehouseIdPutRequest( + req OptAPIV3StocksWarehouseIdPutReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV3WarehousesPostRequest( + req *APIV3WarehousesPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeAPIV3WarehousesWarehouseIdPutRequest( + req *APIV3WarehousesWarehouseIdPutReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2BarcodesPostRequest( + req *ContentV2BarcodesPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2CardsDeleteTrashPostRequest( + req *ContentV2CardsDeleteTrashPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2CardsRecoverPostRequest( + req *ContentV2CardsRecoverPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2CardsUpdatePostRequest( + req []ContentV2CardsUpdatePostReqItem, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + if req != nil { + e.ArrStart() + for _, elem := range req { + elem.Encode(e) + } + e.ArrEnd() + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2CardsUploadAddPostRequest( + req OptContentV2CardsUploadAddPostReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2CardsUploadPostRequest( + req []ContentV2CardsUploadPostReqItem, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + if req != nil { + e.ArrStart() + for _, elem := range req { + elem.Encode(e) + } + e.ArrEnd() + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2GetCardsListPostRequest( + req *ContentV2GetCardsListPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2GetCardsTrashPostRequest( + req *ContentV2GetCardsTrashPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV2TagNomenclatureLinkPostRequest( + req *ContentV2TagNomenclatureLinkPostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeContentV3MediaFilePostRequest( + req *ContentV3MediaFilePostReq, + r *http.Request, +) error { + const contentType = "multipart/form-data" + request := req + + q := uri.NewFormEncoder(map[string]string{}) + body, boundary := ht.CreateMultipartBody(func(w *multipart.Writer) error { + if val, ok := request.Uploadfile.Get(); ok { + if err := val.WriteMultipart("uploadfile", w); err != nil { + return errors.Wrap(err, "write \"uploadfile\"") + } + } + if err := q.WriteMultipart(w); err != nil { + return errors.Wrap(err, "write multipart") + } + return nil + }) + ht.SetCloserBody(r, body, mime.FormatMediaType(contentType, map[string]string{"boundary": boundary})) + return nil +} + +func encodeContentV3MediaSavePostRequest( + req *ContentV3MediaSavePostReq, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} diff --git a/pkg/api/wb/client/oas_response_decoders_gen.go b/pkg/api/wb/client/oas_response_decoders_gen.go new file mode 100644 index 0000000..bb549b0 --- /dev/null +++ b/pkg/api/wb/client/oas_response_decoders_gen.go @@ -0,0 +1,12994 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "bytes" + "io" + "mime" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + "github.com/ogen-go/ogen/conv" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/uri" + "github.com/ogen-go/ogen/validate" +) + +func decodeAPIV2BufferGoodsTaskGetResponse(resp *http.Response) (res APIV2BufferGoodsTaskGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseGoodBufferHistories + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2BufferGoodsTaskGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2BufferTasksGetResponse(resp *http.Response) (res APIV2BufferTasksGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseTaskBuffer + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2BufferTasksGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2HistoryGoodsTaskGetResponse(resp *http.Response) (res APIV2HistoryGoodsTaskGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseGoodHistories + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2HistoryGoodsTaskGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2HistoryTasksGetResponse(resp *http.Response) (res APIV2HistoryTasksGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseTaskHistory + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2HistoryTasksGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2ListGoodsFilterGetResponse(resp *http.Response) (res APIV2ListGoodsFilterGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseGoodsLists + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2ListGoodsSizeNmGetResponse(resp *http.Response) (res APIV2ListGoodsSizeNmGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseSizeLists + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2QuarantineGoodsGetResponse(resp *http.Response) (res APIV2QuarantineGoodsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseQuarantineGoods + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2QuarantineGoodsGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 422: + // Code 422. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2QuarantineGoodsGetUnprocessableEntity + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2UploadTaskClubDiscountPostResponse(resp *http.Response) (res APIV2UploadTaskClubDiscountPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response TaskCreated + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 208: + // Code 208. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RequestAlreadyExistsError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskClubDiscountPostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 422: + // Code 422. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskClubDiscountPostUnprocessableEntity + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2UploadTaskPostResponse(resp *http.Response) (res APIV2UploadTaskPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response TaskCreated + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 208: + // Code 208. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RequestAlreadyExistsError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskPostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 422: + // Code 422. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskPostUnprocessableEntity + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV2UploadTaskSizePostResponse(resp *http.Response) (res APIV2UploadTaskSizePostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response TaskCreated + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 208: + // Code 208. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RequestAlreadyExistsError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskSizePostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 422: + // Code 422. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV2UploadTaskSizePostUnprocessableEntity + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3OfficesGetResponse(resp *http.Response) (res APIV3OfficesGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3OfficesGetOKApplicationJSON + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3StocksWarehouseIdDeleteResponse(resp *http.Response) (res APIV3StocksWarehouseIdDeleteRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &APIV3StocksWarehouseIdDeleteNoContent{}, nil + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdDeleteBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdDeleteForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdDeleteNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 409: + // Code 409. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdDeleteConflict + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3StocksWarehouseIdPostResponse(resp *http.Response) (res APIV3StocksWarehouseIdPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPostForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPostNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3StocksWarehouseIdPutResponse(resp *http.Response) (res APIV3StocksWarehouseIdPutRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &APIV3StocksWarehouseIdPutNoContent{}, nil + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StocksWarehouseError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPutForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPutNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 406: + // Code 406. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 409: + // Code 409. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3StocksWarehouseIdPutConflict + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3WarehousesGetResponse(resp *http.Response) (res APIV3WarehousesGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesGetOKApplicationJSON + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3WarehousesPostResponse(resp *http.Response) (res APIV3WarehousesPostRes, _ error) { + switch resp.StatusCode { + case 201: + // Code 201. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesPostCreated + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesPostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesPostForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesPostNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 409: + // Code 409. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesPostConflict + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3WarehousesWarehouseIdDeleteResponse(resp *http.Response) (res APIV3WarehousesWarehouseIdDeleteRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &APIV3WarehousesWarehouseIdDeleteNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdDeleteForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdDeleteNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeAPIV3WarehousesWarehouseIdPutResponse(resp *http.Response) (res APIV3WarehousesWarehouseIdPutRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &APIV3WarehousesWarehouseIdPutNoContent{}, nil + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdPutBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdPutForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdPutNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 409: + // Code 409. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response APIV3WarehousesWarehouseIdPutConflict + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2BarcodesPostResponse(resp *http.Response) (res ContentV2BarcodesPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2BarcodesPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsDeleteTrashPostResponse(resp *http.Response) (res ContentV2CardsDeleteTrashPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsDeleteTrashPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsErrorListGetResponse(resp *http.Response) (res ContentV2CardsErrorListGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsErrorListGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsLimitsGetResponse(resp *http.Response) (res ContentV2CardsLimitsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsLimitsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsRecoverPostResponse(resp *http.Response) (res ContentV2CardsRecoverPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsRecoverPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsUpdatePostResponse(resp *http.Response) (res ContentV2CardsUpdatePostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseCardCreate + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 413: + // Code 413. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsUpdatePostRequestEntityTooLarge + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsUploadAddPostResponse(resp *http.Response) (res ContentV2CardsUploadAddPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseCardCreate + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 413: + // Code 413. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsUploadAddPostRequestEntityTooLarge + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2CardsUploadPostResponse(resp *http.Response) (res ContentV2CardsUploadPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseCardCreate + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 413: + // Code 413. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2CardsUploadPostRequestEntityTooLarge + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectoryColorsGetResponse(resp *http.Response) (res ContentV2DirectoryColorsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectoryColorsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectoryCountriesGetResponse(resp *http.Response) (res ContentV2DirectoryCountriesGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectoryCountriesGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectoryKindsGetResponse(resp *http.Response) (res ContentV2DirectoryKindsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectoryKindsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectorySeasonsGetResponse(resp *http.Response) (res ContentV2DirectorySeasonsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectorySeasonsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectoryTnvedGetResponse(resp *http.Response) (res ContentV2DirectoryTnvedGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectoryTnvedGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2DirectoryVatGetResponse(resp *http.Response) (res ContentV2DirectoryVatGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2DirectoryVatGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2GetCardsListPostResponse(resp *http.Response) (res ContentV2GetCardsListPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2GetCardsListPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper ContentV2GetCardsListPostOKHeaders + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Remaining" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Remaining", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRemainingVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRemainingVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRemaining.SetTo(wrapperDotXRatelimitRemainingVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Remaining header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + case ct == "plain/text": + reader := resp.Body + b, err := io.ReadAll(reader) + if err != nil { + return res, err + } + + response := ContentV2GetCardsListPostBadRequestPlainText{Data: bytes.NewReader(b)} + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2GetCardsTrashPostResponse(resp *http.Response) (res ContentV2GetCardsTrashPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2GetCardsTrashPostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + case ct == "plain/text": + reader := resp.Body + b, err := io.ReadAll(reader) + if err != nil { + return res, err + } + + response := ContentV2GetCardsTrashPostBadRequestPlainText{Data: bytes.NewReader(b)} + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2ObjectAllGetResponse(resp *http.Response) (res ContentV2ObjectAllGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2ObjectAllGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2ObjectCharcsSubjectIdGetResponse(resp *http.Response) (res ContentV2ObjectCharcsSubjectIdGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2ObjectCharcsSubjectIdGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2ObjectParentAllGetResponse(resp *http.Response) (res ContentV2ObjectParentAllGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2ObjectParentAllGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError400 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2TagNomenclatureLinkPostResponse(resp *http.Response) (res ContentV2TagNomenclatureLinkPostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseContentError6 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseContentError4 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV2TagsGetResponse(resp *http.Response) (res ContentV2TagsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV2TagsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ResponseBodyContentError403 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV3MediaFilePostResponse(resp *http.Response) (res ContentV3MediaFilePostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaFilePostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaFilePostApplicationJSONBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + case ct == "plain/text": + reader := resp.Body + b, err := io.ReadAll(reader) + if err != nil { + return res, err + } + + response := ContentV3MediaFilePostBadRequestPlainText{Data: bytes.NewReader(b)} + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaFilePostForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeContentV3MediaSavePostResponse(resp *http.Response) (res ContentV3MediaSavePostRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaSavePostOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaSavePostBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R401 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaSavePostForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 409: + // Code 409. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaSavePostConflict + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 422: + // Code 422. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ContentV3MediaSavePostUnprocessableEntity + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 429: + // Code 429. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/problem+json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response R429 + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + var wrapper R429Headers + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitLimitVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitLimit.SetTo(wrapperDotXRatelimitLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Limit header") + } + } + // Parse "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitResetVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitResetVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitReset.SetTo(wrapperDotXRatelimitResetVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Reset header") + } + } + // Parse "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotXRatelimitRetryVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + wrapperDotXRatelimitRetryVal = c + return nil + }(); err != nil { + return err + } + wrapper.XRatelimitRetry.SetTo(wrapperDotXRatelimitRetryVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse X-Ratelimit-Retry header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} diff --git a/pkg/api/wb/client/oas_response_encoders_gen.go b/pkg/api/wb/client/oas_response_encoders_gen.go new file mode 100644 index 0000000..8b64c64 --- /dev/null +++ b/pkg/api/wb/client/oas_response_encoders_gen.go @@ -0,0 +1,5052 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "io" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" + + "github.com/ogen-go/ogen/conv" + "github.com/ogen-go/ogen/uri" +) + +func encodeAPIV2BufferGoodsTaskGetResponse(response APIV2BufferGoodsTaskGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseGoodBufferHistories: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2BufferGoodsTaskGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2BufferTasksGetResponse(response APIV2BufferTasksGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseTaskBuffer: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2BufferTasksGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2HistoryGoodsTaskGetResponse(response APIV2HistoryGoodsTaskGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseGoodHistories: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2HistoryGoodsTaskGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2HistoryTasksGetResponse(response APIV2HistoryTasksGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseTaskHistory: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2HistoryTasksGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2ListGoodsFilterGetResponse(response APIV2ListGoodsFilterGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseGoodsLists: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2ListGoodsSizeNmGetResponse(response APIV2ListGoodsSizeNmGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseSizeLists: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2QuarantineGoodsGetResponse(response APIV2QuarantineGoodsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseQuarantineGoods: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2QuarantineGoodsGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2QuarantineGoodsGetUnprocessableEntity: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(422) + span.SetStatus(codes.Error, http.StatusText(422)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2UploadTaskClubDiscountPostResponse(response APIV2UploadTaskClubDiscountPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *TaskCreated: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RequestAlreadyExistsError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(208) + span.SetStatus(codes.Ok, http.StatusText(208)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskClubDiscountPostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskClubDiscountPostUnprocessableEntity: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(422) + span.SetStatus(codes.Error, http.StatusText(422)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2UploadTaskPostResponse(response APIV2UploadTaskPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *TaskCreated: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RequestAlreadyExistsError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(208) + span.SetStatus(codes.Ok, http.StatusText(208)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskPostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskPostUnprocessableEntity: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(422) + span.SetStatus(codes.Error, http.StatusText(422)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV2UploadTaskSizePostResponse(response APIV2UploadTaskSizePostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *TaskCreated: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RequestAlreadyExistsError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(208) + span.SetStatus(codes.Ok, http.StatusText(208)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskSizePostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV2UploadTaskSizePostUnprocessableEntity: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(422) + span.SetStatus(codes.Error, http.StatusText(422)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3OfficesGetResponse(response APIV3OfficesGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3OfficesGetOKApplicationJSON: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3StocksWarehouseIdDeleteResponse(response APIV3StocksWarehouseIdDeleteRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3StocksWarehouseIdDeleteNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *APIV3StocksWarehouseIdDeleteBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdDeleteForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdDeleteNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdDeleteConflict: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(409) + span.SetStatus(codes.Error, http.StatusText(409)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3StocksWarehouseIdPostResponse(response APIV3StocksWarehouseIdPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3StocksWarehouseIdPostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPostForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPostNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3StocksWarehouseIdPutResponse(response APIV3StocksWarehouseIdPutRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3StocksWarehouseIdPutNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *StocksWarehouseError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPutForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPutNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(406) + span.SetStatus(codes.Error, http.StatusText(406)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3StocksWarehouseIdPutConflict: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(409) + span.SetStatus(codes.Error, http.StatusText(409)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3WarehousesGetResponse(response APIV3WarehousesGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3WarehousesGetOKApplicationJSON: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3WarehousesPostResponse(response APIV3WarehousesPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3WarehousesPostCreated: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(201) + span.SetStatus(codes.Ok, http.StatusText(201)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesPostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesPostForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesPostNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesPostConflict: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(409) + span.SetStatus(codes.Error, http.StatusText(409)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3WarehousesWarehouseIdDeleteResponse(response APIV3WarehousesWarehouseIdDeleteRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3WarehousesWarehouseIdDeleteNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesWarehouseIdDeleteForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesWarehouseIdDeleteNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeAPIV3WarehousesWarehouseIdPutResponse(response APIV3WarehousesWarehouseIdPutRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *APIV3WarehousesWarehouseIdPutNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *APIV3WarehousesWarehouseIdPutBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesWarehouseIdPutForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesWarehouseIdPutNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *APIV3WarehousesWarehouseIdPutConflict: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(409) + span.SetStatus(codes.Error, http.StatusText(409)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2BarcodesPostResponse(response ContentV2BarcodesPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2BarcodesPostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsDeleteTrashPostResponse(response ContentV2CardsDeleteTrashPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2CardsDeleteTrashPostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsErrorListGetResponse(response ContentV2CardsErrorListGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2CardsErrorListGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsLimitsGetResponse(response ContentV2CardsLimitsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2CardsLimitsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsRecoverPostResponse(response ContentV2CardsRecoverPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2CardsRecoverPostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsUpdatePostResponse(response ContentV2CardsUpdatePostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseCardCreate: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV2CardsUpdatePostRequestEntityTooLarge: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(413) + span.SetStatus(codes.Error, http.StatusText(413)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsUploadAddPostResponse(response ContentV2CardsUploadAddPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseCardCreate: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV2CardsUploadAddPostRequestEntityTooLarge: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(413) + span.SetStatus(codes.Error, http.StatusText(413)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2CardsUploadPostResponse(response ContentV2CardsUploadPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseCardCreate: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV2CardsUploadPostRequestEntityTooLarge: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(413) + span.SetStatus(codes.Error, http.StatusText(413)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectoryColorsGetResponse(response ContentV2DirectoryColorsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectoryColorsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectoryCountriesGetResponse(response ContentV2DirectoryCountriesGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectoryCountriesGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectoryKindsGetResponse(response ContentV2DirectoryKindsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectoryKindsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectorySeasonsGetResponse(response ContentV2DirectorySeasonsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectorySeasonsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectoryTnvedGetResponse(response ContentV2DirectoryTnvedGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectoryTnvedGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2DirectoryVatGetResponse(response ContentV2DirectoryVatGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2DirectoryVatGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2GetCardsListPostResponse(response ContentV2GetCardsListPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2GetCardsListPostOKHeaders: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Remaining" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Remaining", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRemaining.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Remaining header") + } + } + } + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV2GetCardsListPostBadRequestPlainText: + w.Header().Set("Content-Type", "plain/text") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + writer := w + if closer, ok := response.Data.(io.Closer); ok { + defer closer.Close() + } + if _, err := io.Copy(writer, response); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2GetCardsTrashPostResponse(response ContentV2GetCardsTrashPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2GetCardsTrashPostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV2GetCardsTrashPostBadRequestPlainText: + w.Header().Set("Content-Type", "plain/text") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + writer := w + if closer, ok := response.Data.(io.Closer); ok { + defer closer.Close() + } + if _, err := io.Copy(writer, response); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2ObjectAllGetResponse(response ContentV2ObjectAllGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2ObjectAllGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2ObjectCharcsSubjectIdGetResponse(response ContentV2ObjectCharcsSubjectIdGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2ObjectCharcsSubjectIdGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2ObjectParentAllGetResponse(response ContentV2ObjectParentAllGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2ObjectParentAllGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError400: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2TagNomenclatureLinkPostResponse(response ContentV2TagNomenclatureLinkPostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ResponseContentError6: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseContentError4: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV2TagsGetResponse(response ContentV2TagsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV2TagsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ResponseBodyContentError403: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV3MediaFilePostResponse(response ContentV3MediaFilePostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV3MediaFilePostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaFilePostApplicationJSONBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaFilePostBadRequestPlainText: + w.Header().Set("Content-Type", "plain/text") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + writer := w + if closer, ok := response.Data.(io.Closer); ok { + defer closer.Close() + } + if _, err := io.Copy(writer, response); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaFilePostForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeContentV3MediaSavePostResponse(response ContentV3MediaSavePostRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ContentV3MediaSavePostOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaSavePostBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R401: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaSavePostForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaSavePostConflict: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(409) + span.SetStatus(codes.Error, http.StatusText(409)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ContentV3MediaSavePostUnprocessableEntity: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(422) + span.SetStatus(codes.Error, http.StatusText(422)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *R429Headers: + w.Header().Set("Content-Type", "application/problem+json") + // Encoding response headers. + { + h := uri.NewHeaderEncoder(w.Header()) + // Encode "X-Ratelimit-Limit" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Limit", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitLimit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Limit header") + } + } + // Encode "X-Ratelimit-Reset" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Reset", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitReset.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Reset header") + } + } + // Encode "X-Ratelimit-Retry" header. + { + cfg := uri.HeaderParameterEncodingConfig{ + Name: "X-Ratelimit-Retry", + Explode: false, + } + if err := h.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := response.XRatelimitRetry.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return errors.Wrap(err, "encode X-Ratelimit-Retry header") + } + } + } + w.WriteHeader(429) + span.SetStatus(codes.Error, http.StatusText(429)) + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} diff --git a/pkg/api/wb/client/oas_router_gen.go b/pkg/api/wb/client/oas_router_gen.go new file mode 100644 index 0000000..a40be1e --- /dev/null +++ b/pkg/api/wb/client/oas_router_gen.go @@ -0,0 +1,2379 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + "net/url" + "strings" + + "github.com/ogen-go/ogen/uri" +) + +func (s *Server) cutPrefix(path string) (string, bool) { + prefix := s.cfg.Prefix + if prefix == "" { + return path, true + } + if !strings.HasPrefix(path, prefix) { + // Prefix doesn't match. + return "", false + } + // Cut prefix from the path. + return strings.TrimPrefix(path, prefix), true +} + +// ServeHTTP serves http request as defined by OpenAPI v3 specification, +// calling handler that matches the path or returning not found error. +func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + elem := r.URL.Path + elemIsEscaped := false + if rawPath := r.URL.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + elemIsEscaped = strings.ContainsRune(elem, '%') + } + } + + elem, ok := s.cutPrefix(elem) + if !ok || len(elem) == 0 { + s.notFound(w, r) + return + } + args := [1]string{} + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "api/v" + + if l := len("api/v"); len(elem) >= l && elem[0:l] == "api/v" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '2': // Prefix: "2/" + + if l := len("2/"); len(elem) >= l && elem[0:l] == "2/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'b': // Prefix: "buffer/" + + if l := len("buffer/"); len(elem) >= l && elem[0:l] == "buffer/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'g': // Prefix: "goods/task" + + if l := len("goods/task"); len(elem) >= l && elem[0:l] == "goods/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2BufferGoodsTaskGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 't': // Prefix: "tasks" + + if l := len("tasks"); len(elem) >= l && elem[0:l] == "tasks" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2BufferTasksGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 'h': // Prefix: "history/" + + if l := len("history/"); len(elem) >= l && elem[0:l] == "history/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'g': // Prefix: "goods/task" + + if l := len("goods/task"); len(elem) >= l && elem[0:l] == "goods/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2HistoryGoodsTaskGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 't': // Prefix: "tasks" + + if l := len("tasks"); len(elem) >= l && elem[0:l] == "tasks" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2HistoryTasksGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 'l': // Prefix: "list/goods/" + + if l := len("list/goods/"); len(elem) >= l && elem[0:l] == "list/goods/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'f': // Prefix: "filter" + + if l := len("filter"); len(elem) >= l && elem[0:l] == "filter" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2ListGoodsFilterGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 's': // Prefix: "size/nm" + + if l := len("size/nm"); len(elem) >= l && elem[0:l] == "size/nm" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2ListGoodsSizeNmGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 'q': // Prefix: "quarantine/goods" + + if l := len("quarantine/goods"); len(elem) >= l && elem[0:l] == "quarantine/goods" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV2QuarantineGoodsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'u': // Prefix: "upload/task" + + if l := len("upload/task"); len(elem) >= l && elem[0:l] == "upload/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "POST": + s.handleAPIV2UploadTaskPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "club-discount" + + if l := len("club-discount"); len(elem) >= l && elem[0:l] == "club-discount" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleAPIV2UploadTaskClubDiscountPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 's': // Prefix: "size" + + if l := len("size"); len(elem) >= l && elem[0:l] == "size" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleAPIV2UploadTaskSizePostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } + + } + + } + + case '3': // Prefix: "3/" + + if l := len("3/"); len(elem) >= l && elem[0:l] == "3/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'o': // Prefix: "offices" + + if l := len("offices"); len(elem) >= l && elem[0:l] == "offices" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleAPIV3OfficesGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 's': // Prefix: "stocks/" + + if l := len("stocks/"); len(elem) >= l && elem[0:l] == "stocks/" { + elem = elem[l:] + } else { + break + } + + // Param: "warehouseId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "DELETE": + s.handleAPIV3StocksWarehouseIdDeleteRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "POST": + s.handleAPIV3StocksWarehouseIdPostRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "PUT": + s.handleAPIV3StocksWarehouseIdPutRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "DELETE,POST,PUT") + } + + return + } + + case 'w': // Prefix: "warehouses" + + if l := len("warehouses"); len(elem) >= l && elem[0:l] == "warehouses" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleAPIV3WarehousesGetRequest([0]string{}, elemIsEscaped, w, r) + case "POST": + s.handleAPIV3WarehousesPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET,POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "warehouseId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "DELETE": + s.handleAPIV3WarehousesWarehouseIdDeleteRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "PUT": + s.handleAPIV3WarehousesWarehouseIdPutRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "DELETE,PUT") + } + + return + } + + } + + } + + } + + case 'c': // Prefix: "content/v" + + if l := len("content/v"); len(elem) >= l && elem[0:l] == "content/v" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '2': // Prefix: "2/" + + if l := len("2/"); len(elem) >= l && elem[0:l] == "2/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'b': // Prefix: "barcodes" + + if l := len("barcodes"); len(elem) >= l && elem[0:l] == "barcodes" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2BarcodesPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 'c': // Prefix: "cards/" + + if l := len("cards/"); len(elem) >= l && elem[0:l] == "cards/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "delete/trash" + + if l := len("delete/trash"); len(elem) >= l && elem[0:l] == "delete/trash" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2CardsDeleteTrashPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 'e': // Prefix: "error/list" + + if l := len("error/list"); len(elem) >= l && elem[0:l] == "error/list" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2CardsErrorListGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'l': // Prefix: "limits" + + if l := len("limits"); len(elem) >= l && elem[0:l] == "limits" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2CardsLimitsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'r': // Prefix: "recover" + + if l := len("recover"); len(elem) >= l && elem[0:l] == "recover" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2CardsRecoverPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 'u': // Prefix: "up" + + if l := len("up"); len(elem) >= l && elem[0:l] == "up" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "date" + + if l := len("date"); len(elem) >= l && elem[0:l] == "date" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2CardsUpdatePostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 'l': // Prefix: "load" + + if l := len("load"); len(elem) >= l && elem[0:l] == "load" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "POST": + s.handleContentV2CardsUploadPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/add" + + if l := len("/add"); len(elem) >= l && elem[0:l] == "/add" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2CardsUploadAddPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } + + } + + } + + case 'd': // Prefix: "directory/" + + if l := len("directory/"); len(elem) >= l && elem[0:l] == "directory/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "co" + + if l := len("co"); len(elem) >= l && elem[0:l] == "co" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'l': // Prefix: "lors" + + if l := len("lors"); len(elem) >= l && elem[0:l] == "lors" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectoryColorsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'u': // Prefix: "untries" + + if l := len("untries"); len(elem) >= l && elem[0:l] == "untries" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectoryCountriesGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 'k': // Prefix: "kinds" + + if l := len("kinds"); len(elem) >= l && elem[0:l] == "kinds" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectoryKindsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 's': // Prefix: "seasons" + + if l := len("seasons"); len(elem) >= l && elem[0:l] == "seasons" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectorySeasonsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 't': // Prefix: "tnved" + + if l := len("tnved"); len(elem) >= l && elem[0:l] == "tnved" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectoryTnvedGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'v': // Prefix: "vat" + + if l := len("vat"); len(elem) >= l && elem[0:l] == "vat" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2DirectoryVatGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 'g': // Prefix: "get/cards/" + + if l := len("get/cards/"); len(elem) >= l && elem[0:l] == "get/cards/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'l': // Prefix: "list" + + if l := len("list"); len(elem) >= l && elem[0:l] == "list" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2GetCardsListPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 't': // Prefix: "trash" + + if l := len("trash"); len(elem) >= l && elem[0:l] == "trash" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2GetCardsTrashPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } + + case 'o': // Prefix: "object/" + + if l := len("object/"); len(elem) >= l && elem[0:l] == "object/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "all" + + if l := len("all"); len(elem) >= l && elem[0:l] == "all" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2ObjectAllGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'c': // Prefix: "charcs/" + + if l := len("charcs/"); len(elem) >= l && elem[0:l] == "charcs/" { + elem = elem[l:] + } else { + break + } + + // Param: "subjectId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2ObjectCharcsSubjectIdGetRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + case 'p': // Prefix: "parent/all" + + if l := len("parent/all"); len(elem) >= l && elem[0:l] == "parent/all" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2ObjectParentAllGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + case 't': // Prefix: "tag" + + if l := len("tag"); len(elem) >= l && elem[0:l] == "tag" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/nomenclature/link" + + if l := len("/nomenclature/link"); len(elem) >= l && elem[0:l] == "/nomenclature/link" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV2TagNomenclatureLinkPostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 's': // Prefix: "s" + + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleContentV2TagsGetRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + } + + } + + case '3': // Prefix: "3/media/" + + if l := len("3/media/"); len(elem) >= l && elem[0:l] == "3/media/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'f': // Prefix: "file" + + if l := len("file"); len(elem) >= l && elem[0:l] == "file" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV3MediaFilePostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + case 's': // Prefix: "save" + + if l := len("save"); len(elem) >= l && elem[0:l] == "save" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleContentV3MediaSavePostRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } + + } + + } + + } + } + s.notFound(w, r) +} + +// Route is route object. +type Route struct { + name string + summary string + operationID string + pathPattern string + count int + args [1]string +} + +// Name returns ogen operation name. +// +// It is guaranteed to be unique and not empty. +func (r Route) Name() string { + return r.name +} + +// Summary returns OpenAPI summary. +func (r Route) Summary() string { + return r.summary +} + +// OperationID returns OpenAPI operationId. +func (r Route) OperationID() string { + return r.operationID +} + +// PathPattern returns OpenAPI path. +func (r Route) PathPattern() string { + return r.pathPattern +} + +// Args returns parsed arguments. +func (r Route) Args() []string { + return r.args[:r.count] +} + +// FindRoute finds Route for given method and path. +// +// Note: this method does not unescape path or handle reserved characters in path properly. Use FindPath instead. +func (s *Server) FindRoute(method, path string) (Route, bool) { + return s.FindPath(method, &url.URL{Path: path}) +} + +// FindPath finds Route for given method and URL. +func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { + var ( + elem = u.Path + args = r.args + ) + if rawPath := u.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + } + defer func() { + for i, arg := range r.args[:r.count] { + if unescaped, err := url.PathUnescape(arg); err == nil { + r.args[i] = unescaped + } + } + }() + } + + elem, ok := s.cutPrefix(elem) + if !ok { + return r, false + } + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "api/v" + + if l := len("api/v"); len(elem) >= l && elem[0:l] == "api/v" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '2': // Prefix: "2/" + + if l := len("2/"); len(elem) >= l && elem[0:l] == "2/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'b': // Prefix: "buffer/" + + if l := len("buffer/"); len(elem) >= l && elem[0:l] == "buffer/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'g': // Prefix: "goods/task" + + if l := len("goods/task"); len(elem) >= l && elem[0:l] == "goods/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2BufferGoodsTaskGetOperation + r.summary = "ДСтализация Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/buffer/goods/task" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 't': // Prefix: "tasks" + + if l := len("tasks"); len(elem) >= l && elem[0:l] == "tasks" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2BufferTasksGetOperation + r.summary = "БостояниС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/buffer/tasks" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'h': // Prefix: "history/" + + if l := len("history/"); len(elem) >= l && elem[0:l] == "history/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'g': // Prefix: "goods/task" + + if l := len("goods/task"); len(elem) >= l && elem[0:l] == "goods/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2HistoryGoodsTaskGetOperation + r.summary = "ДСтализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/history/goods/task" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 't': // Prefix: "tasks" + + if l := len("tasks"); len(elem) >= l && elem[0:l] == "tasks" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2HistoryTasksGetOperation + r.summary = "БостояниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/history/tasks" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'l': // Prefix: "list/goods/" + + if l := len("list/goods/"); len(elem) >= l && elem[0:l] == "list/goods/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'f': // Prefix: "filter" + + if l := len("filter"); len(elem) >= l && elem[0:l] == "filter" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2ListGoodsFilterGetOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ с Ρ†Π΅Π½Π°ΠΌΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/list/goods/filter" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "size/nm" + + if l := len("size/nm"); len(elem) >= l && elem[0:l] == "size/nm" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2ListGoodsSizeNmGetOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° с Ρ†Π΅Π½Π°ΠΌΠΈ" + r.operationID = "" + r.pathPattern = "/api/v2/list/goods/size/nm" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'q': // Prefix: "quarantine/goods" + + if l := len("quarantine/goods"); len(elem) >= l && elem[0:l] == "quarantine/goods" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV2QuarantineGoodsGetOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅" + r.operationID = "" + r.pathPattern = "/api/v2/quarantine/goods" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'u': // Prefix: "upload/task" + + if l := len("upload/task"); len(elem) >= l && elem[0:l] == "upload/task" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "POST": + r.name = APIV2UploadTaskPostOperation + r.summary = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки" + r.operationID = "" + r.pathPattern = "/api/v2/upload/task" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "club-discount" + + if l := len("club-discount"); len(elem) >= l && elem[0:l] == "club-discount" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = APIV2UploadTaskClubDiscountPostOperation + r.summary = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ скидки WB ΠšΠ»ΡƒΠ±Π°" + r.operationID = "" + r.pathPattern = "/api/v2/upload/task/club-discount" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "size" + + if l := len("size"); len(elem) >= l && elem[0:l] == "size" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = APIV2UploadTaskSizePostOperation + r.summary = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/api/v2/upload/task/size" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + } + + } + + case '3': // Prefix: "3/" + + if l := len("3/"); len(elem) >= l && elem[0:l] == "3/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'o': // Prefix: "offices" + + if l := len("offices"); len(elem) >= l && elem[0:l] == "offices" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = APIV3OfficesGetOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов WB" + r.operationID = "" + r.pathPattern = "/api/v3/offices" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "stocks/" + + if l := len("stocks/"); len(elem) >= l && elem[0:l] == "stocks/" { + elem = elem[l:] + } else { + break + } + + // Param: "warehouseId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "DELETE": + r.name = APIV3StocksWarehouseIdDeleteOperation + r.summary = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/api/v3/stocks/{warehouseId}" + r.args = args + r.count = 1 + return r, true + case "POST": + r.name = APIV3StocksWarehouseIdPostOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/api/v3/stocks/{warehouseId}" + r.args = args + r.count = 1 + return r, true + case "PUT": + r.name = APIV3StocksWarehouseIdPutOperation + r.summary = "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ остатки Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/api/v3/stocks/{warehouseId}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + case 'w': // Prefix: "warehouses" + + if l := len("warehouses"); len(elem) >= l && elem[0:l] == "warehouses" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + r.name = APIV3WarehousesGetOperation + r.summary = "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°" + r.operationID = "" + r.pathPattern = "/api/v3/warehouses" + r.args = args + r.count = 0 + return r, true + case "POST": + r.name = APIV3WarehousesPostOperation + r.summary = "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°" + r.operationID = "" + r.pathPattern = "/api/v3/warehouses" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "warehouseId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "DELETE": + r.name = APIV3WarehousesWarehouseIdDeleteOperation + r.summary = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°" + r.operationID = "" + r.pathPattern = "/api/v3/warehouses/{warehouseId}" + r.args = args + r.count = 1 + return r, true + case "PUT": + r.name = APIV3WarehousesWarehouseIdPutOperation + r.summary = "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°" + r.operationID = "" + r.pathPattern = "/api/v3/warehouses/{warehouseId}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + } + + } + + } + + case 'c': // Prefix: "content/v" + + if l := len("content/v"); len(elem) >= l && elem[0:l] == "content/v" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '2': // Prefix: "2/" + + if l := len("2/"); len(elem) >= l && elem[0:l] == "2/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'b': // Prefix: "barcodes" + + if l := len("barcodes"); len(elem) >= l && elem[0:l] == "barcodes" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2BarcodesPostOperation + r.summary = "ГСнСрация Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/barcodes" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'c': // Prefix: "cards/" + + if l := len("cards/"); len(elem) >= l && elem[0:l] == "cards/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "delete/trash" + + if l := len("delete/trash"); len(elem) >= l && elem[0:l] == "delete/trash" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2CardsDeleteTrashPostOperation + r.summary = "ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ" + r.operationID = "" + r.pathPattern = "/content/v2/cards/delete/trash" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'e': // Prefix: "error/list" + + if l := len("error/list"); len(elem) >= l && elem[0:l] == "error/list" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2CardsErrorListGetOperation + r.summary = "Бписок нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ошибками" + r.operationID = "" + r.pathPattern = "/content/v2/cards/error/list" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'l': // Prefix: "limits" + + if l := len("limits"); len(elem) >= l && elem[0:l] == "limits" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2CardsLimitsGetOperation + r.summary = "Π›ΠΈΠΌΠΈΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/cards/limits" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'r': // Prefix: "recover" + + if l := len("recover"); len(elem) >= l && elem[0:l] == "recover" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2CardsRecoverPostOperation + r.summary = "ВосстановлСниС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹" + r.operationID = "" + r.pathPattern = "/content/v2/cards/recover" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'u': // Prefix: "up" + + if l := len("up"); len(elem) >= l && elem[0:l] == "up" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "date" + + if l := len("date"); len(elem) >= l && elem[0:l] == "date" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2CardsUpdatePostOperation + r.summary = "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/cards/update" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'l': // Prefix: "load" + + if l := len("load"); len(elem) >= l && elem[0:l] == "load" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "POST": + r.name = ContentV2CardsUploadPostOperation + r.summary = "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/cards/upload" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/add" + + if l := len("/add"); len(elem) >= l && elem[0:l] == "/add" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2CardsUploadAddPostOperation + r.summary = "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с присоСдинСниСм" + r.operationID = "" + r.pathPattern = "/content/v2/cards/upload/add" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + } + + } + + case 'd': // Prefix: "directory/" + + if l := len("directory/"); len(elem) >= l && elem[0:l] == "directory/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "co" + + if l := len("co"); len(elem) >= l && elem[0:l] == "co" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'l': // Prefix: "lors" + + if l := len("lors"); len(elem) >= l && elem[0:l] == "lors" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectoryColorsGetOperation + r.summary = "Π¦Π²Π΅Ρ‚" + r.operationID = "" + r.pathPattern = "/content/v2/directory/colors" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'u': // Prefix: "untries" + + if l := len("untries"); len(elem) >= l && elem[0:l] == "untries" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectoryCountriesGetOperation + r.summary = "Π‘Ρ‚Ρ€Π°Π½Π° производства" + r.operationID = "" + r.pathPattern = "/content/v2/directory/countries" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'k': // Prefix: "kinds" + + if l := len("kinds"); len(elem) >= l && elem[0:l] == "kinds" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectoryKindsGetOperation + r.summary = "Пол" + r.operationID = "" + r.pathPattern = "/content/v2/directory/kinds" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "seasons" + + if l := len("seasons"); len(elem) >= l && elem[0:l] == "seasons" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectorySeasonsGetOperation + r.summary = "Π‘Π΅Π·ΠΎΠ½" + r.operationID = "" + r.pathPattern = "/content/v2/directory/seasons" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 't': // Prefix: "tnved" + + if l := len("tnved"); len(elem) >= l && elem[0:l] == "tnved" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectoryTnvedGetOperation + r.summary = "ВНВЭД-ΠΊΠΎΠ΄" + r.operationID = "" + r.pathPattern = "/content/v2/directory/tnved" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'v': // Prefix: "vat" + + if l := len("vat"); len(elem) >= l && elem[0:l] == "vat" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2DirectoryVatGetOperation + r.summary = "Π‘Ρ‚Π°Π²ΠΊΠ° НДБ" + r.operationID = "" + r.pathPattern = "/content/v2/directory/vat" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'g': // Prefix: "get/cards/" + + if l := len("get/cards/"); len(elem) >= l && elem[0:l] == "get/cards/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'l': // Prefix: "list" + + if l := len("list"); len(elem) >= l && elem[0:l] == "list" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2GetCardsListPostOperation + r.summary = "Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/get/cards/list" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 't': // Prefix: "trash" + + if l := len("trash"); len(elem) >= l && elem[0:l] == "trash" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2GetCardsTrashPostOperation + r.summary = "Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅" + r.operationID = "" + r.pathPattern = "/content/v2/get/cards/trash" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 'o': // Prefix: "object/" + + if l := len("object/"); len(elem) >= l && elem[0:l] == "object/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "all" + + if l := len("all"); len(elem) >= l && elem[0:l] == "all" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2ObjectAllGetOperation + r.summary = "Бписок ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/object/all" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 'c': // Prefix: "charcs/" + + if l := len("charcs/"); len(elem) >= l && elem[0:l] == "charcs/" { + elem = elem[l:] + } else { + break + } + + // Param: "subjectId" + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2ObjectCharcsSubjectIdGetOperation + r.summary = "Π₯арактСристики ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°" + r.operationID = "" + r.pathPattern = "/content/v2/object/charcs/{subjectId}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + case 'p': // Prefix: "parent/all" + + if l := len("parent/all"); len(elem) >= l && elem[0:l] == "parent/all" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2ObjectParentAllGetOperation + r.summary = "Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²" + r.operationID = "" + r.pathPattern = "/content/v2/object/parent/all" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + case 't': // Prefix: "tag" + + if l := len("tag"); len(elem) >= l && elem[0:l] == "tag" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/nomenclature/link" + + if l := len("/nomenclature/link"); len(elem) >= l && elem[0:l] == "/nomenclature/link" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV2TagNomenclatureLinkPostOperation + r.summary = "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ярлыками Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°" + r.operationID = "" + r.pathPattern = "/content/v2/tag/nomenclature/link" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "s" + + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = ContentV2TagsGetOperation + r.summary = "Бписок ярлыков" + r.operationID = "" + r.pathPattern = "/content/v2/tags" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + } + + case '3': // Prefix: "3/media/" + + if l := len("3/media/"); len(elem) >= l && elem[0:l] == "3/media/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'f': // Prefix: "file" + + if l := len("file"); len(elem) >= l && elem[0:l] == "file" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV3MediaFilePostOperation + r.summary = "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»" + r.operationID = "" + r.pathPattern = "/content/v3/media/file" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + case 's': // Prefix: "save" + + if l := len("save"); len(elem) >= l && elem[0:l] == "save" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ContentV3MediaSavePostOperation + r.summary = "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ссылкам" + r.operationID = "" + r.pathPattern = "/content/v3/media/save" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + } + + } + + } + + } + } + return r, false +} diff --git a/pkg/api/wb/client/oas_schemas_gen.go b/pkg/api/wb/client/oas_schemas_gen.go new file mode 100644 index 0000000..bc72873 --- /dev/null +++ b/pkg/api/wb/client/oas_schemas_gen.go @@ -0,0 +1,10053 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "io" + "time" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + "github.com/google/uuid" + + ht "github.com/ogen-go/ogen/http" +) + +type APIV2BufferGoodsTaskGetBadRequest struct { + Data OptAPIV2BufferGoodsTaskGetBadRequestData `json:"data"` + Error OptBool `json:"error"` + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *APIV2BufferGoodsTaskGetBadRequest) GetData() OptAPIV2BufferGoodsTaskGetBadRequestData { + return s.Data +} + +// GetError returns the value of Error. +func (s *APIV2BufferGoodsTaskGetBadRequest) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *APIV2BufferGoodsTaskGetBadRequest) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *APIV2BufferGoodsTaskGetBadRequest) SetData(val OptAPIV2BufferGoodsTaskGetBadRequestData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *APIV2BufferGoodsTaskGetBadRequest) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *APIV2BufferGoodsTaskGetBadRequest) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*APIV2BufferGoodsTaskGetBadRequest) aPIV2BufferGoodsTaskGetRes() {} + +type APIV2BufferGoodsTaskGetBadRequestData struct{} + +type APIV2BufferTasksGetBadRequest struct { + Data OptAPIV2BufferTasksGetBadRequestData `json:"data"` + Error OptBool `json:"error"` + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *APIV2BufferTasksGetBadRequest) GetData() OptAPIV2BufferTasksGetBadRequestData { + return s.Data +} + +// GetError returns the value of Error. +func (s *APIV2BufferTasksGetBadRequest) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *APIV2BufferTasksGetBadRequest) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *APIV2BufferTasksGetBadRequest) SetData(val OptAPIV2BufferTasksGetBadRequestData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *APIV2BufferTasksGetBadRequest) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *APIV2BufferTasksGetBadRequest) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*APIV2BufferTasksGetBadRequest) aPIV2BufferTasksGetRes() {} + +type APIV2BufferTasksGetBadRequestData struct{} + +type APIV2HistoryGoodsTaskGetBadRequest struct { + Data OptAPIV2HistoryGoodsTaskGetBadRequestData `json:"data"` + Error OptBool `json:"error"` + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *APIV2HistoryGoodsTaskGetBadRequest) GetData() OptAPIV2HistoryGoodsTaskGetBadRequestData { + return s.Data +} + +// GetError returns the value of Error. +func (s *APIV2HistoryGoodsTaskGetBadRequest) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *APIV2HistoryGoodsTaskGetBadRequest) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *APIV2HistoryGoodsTaskGetBadRequest) SetData(val OptAPIV2HistoryGoodsTaskGetBadRequestData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *APIV2HistoryGoodsTaskGetBadRequest) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *APIV2HistoryGoodsTaskGetBadRequest) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*APIV2HistoryGoodsTaskGetBadRequest) aPIV2HistoryGoodsTaskGetRes() {} + +type APIV2HistoryGoodsTaskGetBadRequestData struct{} + +type APIV2HistoryTasksGetBadRequest struct { + Data OptAPIV2HistoryTasksGetBadRequestData `json:"data"` + Error OptBool `json:"error"` + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *APIV2HistoryTasksGetBadRequest) GetData() OptAPIV2HistoryTasksGetBadRequestData { + return s.Data +} + +// GetError returns the value of Error. +func (s *APIV2HistoryTasksGetBadRequest) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *APIV2HistoryTasksGetBadRequest) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *APIV2HistoryTasksGetBadRequest) SetData(val OptAPIV2HistoryTasksGetBadRequestData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *APIV2HistoryTasksGetBadRequest) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *APIV2HistoryTasksGetBadRequest) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*APIV2HistoryTasksGetBadRequest) aPIV2HistoryTasksGetRes() {} + +type APIV2HistoryTasksGetBadRequestData struct{} + +type APIV2QuarantineGoodsGetBadRequest ResponseError + +func (*APIV2QuarantineGoodsGetBadRequest) aPIV2QuarantineGoodsGetRes() {} + +type APIV2QuarantineGoodsGetUnprocessableEntity ResponseError + +func (*APIV2QuarantineGoodsGetUnprocessableEntity) aPIV2QuarantineGoodsGetRes() {} + +type APIV2UploadTaskClubDiscountPostBadRequest ResponseError + +func (*APIV2UploadTaskClubDiscountPostBadRequest) aPIV2UploadTaskClubDiscountPostRes() {} + +type APIV2UploadTaskClubDiscountPostReq struct { + Data ClubDisc `json:"data"` +} + +// GetData returns the value of Data. +func (s *APIV2UploadTaskClubDiscountPostReq) GetData() ClubDisc { + return s.Data +} + +// SetData sets the value of Data. +func (s *APIV2UploadTaskClubDiscountPostReq) SetData(val ClubDisc) { + s.Data = val +} + +type APIV2UploadTaskClubDiscountPostUnprocessableEntity ResponseError + +func (*APIV2UploadTaskClubDiscountPostUnprocessableEntity) aPIV2UploadTaskClubDiscountPostRes() {} + +type APIV2UploadTaskPostBadRequest ResponseError + +func (*APIV2UploadTaskPostBadRequest) aPIV2UploadTaskPostRes() {} + +type APIV2UploadTaskPostReq struct { + Data Goods `json:"data"` +} + +// GetData returns the value of Data. +func (s *APIV2UploadTaskPostReq) GetData() Goods { + return s.Data +} + +// SetData sets the value of Data. +func (s *APIV2UploadTaskPostReq) SetData(val Goods) { + s.Data = val +} + +type APIV2UploadTaskPostUnprocessableEntity ResponseError + +func (*APIV2UploadTaskPostUnprocessableEntity) aPIV2UploadTaskPostRes() {} + +type APIV2UploadTaskSizePostBadRequest ResponseError + +func (*APIV2UploadTaskSizePostBadRequest) aPIV2UploadTaskSizePostRes() {} + +type APIV2UploadTaskSizePostReq struct { + Data SizeGoodsBody `json:"data"` +} + +// GetData returns the value of Data. +func (s *APIV2UploadTaskSizePostReq) GetData() SizeGoodsBody { + return s.Data +} + +// SetData sets the value of Data. +func (s *APIV2UploadTaskSizePostReq) SetData(val SizeGoodsBody) { + s.Data = val +} + +type APIV2UploadTaskSizePostUnprocessableEntity ResponseError + +func (*APIV2UploadTaskSizePostUnprocessableEntity) aPIV2UploadTaskSizePostRes() {} + +type APIV3OfficesGetOKApplicationJSON []Office + +func (*APIV3OfficesGetOKApplicationJSON) aPIV3OfficesGetRes() {} + +type APIV3StocksWarehouseIdDeleteBadRequest Error + +func (*APIV3StocksWarehouseIdDeleteBadRequest) aPIV3StocksWarehouseIdDeleteRes() {} + +type APIV3StocksWarehouseIdDeleteConflict Error + +func (*APIV3StocksWarehouseIdDeleteConflict) aPIV3StocksWarehouseIdDeleteRes() {} + +type APIV3StocksWarehouseIdDeleteForbidden Error + +func (*APIV3StocksWarehouseIdDeleteForbidden) aPIV3StocksWarehouseIdDeleteRes() {} + +// APIV3StocksWarehouseIdDeleteNoContent is response for APIV3StocksWarehouseIdDelete operation. +type APIV3StocksWarehouseIdDeleteNoContent struct{} + +func (*APIV3StocksWarehouseIdDeleteNoContent) aPIV3StocksWarehouseIdDeleteRes() {} + +type APIV3StocksWarehouseIdDeleteNotFound Error + +func (*APIV3StocksWarehouseIdDeleteNotFound) aPIV3StocksWarehouseIdDeleteRes() {} + +type APIV3StocksWarehouseIdDeleteReq struct { + // Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + Skus []string `json:"skus"` +} + +// GetSkus returns the value of Skus. +func (s *APIV3StocksWarehouseIdDeleteReq) GetSkus() []string { + return s.Skus +} + +// SetSkus sets the value of Skus. +func (s *APIV3StocksWarehouseIdDeleteReq) SetSkus(val []string) { + s.Skus = val +} + +type APIV3StocksWarehouseIdPostBadRequest Error + +func (*APIV3StocksWarehouseIdPostBadRequest) aPIV3StocksWarehouseIdPostRes() {} + +type APIV3StocksWarehouseIdPostForbidden Error + +func (*APIV3StocksWarehouseIdPostForbidden) aPIV3StocksWarehouseIdPostRes() {} + +type APIV3StocksWarehouseIdPostNotFound Error + +func (*APIV3StocksWarehouseIdPostNotFound) aPIV3StocksWarehouseIdPostRes() {} + +type APIV3StocksWarehouseIdPostOK struct { + Stocks []APIV3StocksWarehouseIdPostOKStocksItem `json:"stocks"` +} + +// GetStocks returns the value of Stocks. +func (s *APIV3StocksWarehouseIdPostOK) GetStocks() []APIV3StocksWarehouseIdPostOKStocksItem { + return s.Stocks +} + +// SetStocks sets the value of Stocks. +func (s *APIV3StocksWarehouseIdPostOK) SetStocks(val []APIV3StocksWarehouseIdPostOKStocksItem) { + s.Stocks = val +} + +func (*APIV3StocksWarehouseIdPostOK) aPIV3StocksWarehouseIdPostRes() {} + +type APIV3StocksWarehouseIdPostOKStocksItem struct { + // Π‘Π°Ρ€ΠΊΠΎΠ΄. + Sku OptString `json:"sku"` + // ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ. + Amount OptInt `json:"amount"` +} + +// GetSku returns the value of Sku. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) GetSku() OptString { + return s.Sku +} + +// GetAmount returns the value of Amount. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) GetAmount() OptInt { + return s.Amount +} + +// SetSku sets the value of Sku. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) SetSku(val OptString) { + s.Sku = val +} + +// SetAmount sets the value of Amount. +func (s *APIV3StocksWarehouseIdPostOKStocksItem) SetAmount(val OptInt) { + s.Amount = val +} + +type APIV3StocksWarehouseIdPostReq struct { + // Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + Skus []string `json:"skus"` +} + +// GetSkus returns the value of Skus. +func (s *APIV3StocksWarehouseIdPostReq) GetSkus() []string { + return s.Skus +} + +// SetSkus sets the value of Skus. +func (s *APIV3StocksWarehouseIdPostReq) SetSkus(val []string) { + s.Skus = val +} + +type APIV3StocksWarehouseIdPutConflict Error + +func (*APIV3StocksWarehouseIdPutConflict) aPIV3StocksWarehouseIdPutRes() {} + +type APIV3StocksWarehouseIdPutForbidden Error + +func (*APIV3StocksWarehouseIdPutForbidden) aPIV3StocksWarehouseIdPutRes() {} + +// APIV3StocksWarehouseIdPutNoContent is response for APIV3StocksWarehouseIdPut operation. +type APIV3StocksWarehouseIdPutNoContent struct{} + +func (*APIV3StocksWarehouseIdPutNoContent) aPIV3StocksWarehouseIdPutRes() {} + +type APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON jx.Raw + +func (*APIV3StocksWarehouseIdPutNotAcceptableApplicationJSON) aPIV3StocksWarehouseIdPutRes() {} + +type APIV3StocksWarehouseIdPutNotFound Error + +func (*APIV3StocksWarehouseIdPutNotFound) aPIV3StocksWarehouseIdPutRes() {} + +type APIV3StocksWarehouseIdPutReq struct { + // Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ ΠΈΡ… остатков. + Stocks []APIV3StocksWarehouseIdPutReqStocksItem `json:"stocks"` +} + +// GetStocks returns the value of Stocks. +func (s *APIV3StocksWarehouseIdPutReq) GetStocks() []APIV3StocksWarehouseIdPutReqStocksItem { + return s.Stocks +} + +// SetStocks sets the value of Stocks. +func (s *APIV3StocksWarehouseIdPutReq) SetStocks(val []APIV3StocksWarehouseIdPutReqStocksItem) { + s.Stocks = val +} + +type APIV3StocksWarehouseIdPutReqStocksItem struct { + // Π‘Π°Ρ€ΠΊΠΎΠ΄. + Sku OptString `json:"sku"` + // ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ. + Amount OptInt `json:"amount"` +} + +// GetSku returns the value of Sku. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) GetSku() OptString { + return s.Sku +} + +// GetAmount returns the value of Amount. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) GetAmount() OptInt { + return s.Amount +} + +// SetSku sets the value of Sku. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) SetSku(val OptString) { + s.Sku = val +} + +// SetAmount sets the value of Amount. +func (s *APIV3StocksWarehouseIdPutReqStocksItem) SetAmount(val OptInt) { + s.Amount = val +} + +type APIV3WarehousesGetOKApplicationJSON []Warehouse + +func (*APIV3WarehousesGetOKApplicationJSON) aPIV3WarehousesGetRes() {} + +type APIV3WarehousesPostBadRequest Error + +func (*APIV3WarehousesPostBadRequest) aPIV3WarehousesPostRes() {} + +type APIV3WarehousesPostConflict Error + +func (*APIV3WarehousesPostConflict) aPIV3WarehousesPostRes() {} + +type APIV3WarehousesPostCreated struct { + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + ID OptInt `json:"id"` +} + +// GetID returns the value of ID. +func (s *APIV3WarehousesPostCreated) GetID() OptInt { + return s.ID +} + +// SetID sets the value of ID. +func (s *APIV3WarehousesPostCreated) SetID(val OptInt) { + s.ID = val +} + +func (*APIV3WarehousesPostCreated) aPIV3WarehousesPostRes() {} + +type APIV3WarehousesPostForbidden Error + +func (*APIV3WarehousesPostForbidden) aPIV3WarehousesPostRes() {} + +type APIV3WarehousesPostNotFound Error + +func (*APIV3WarehousesPostNotFound) aPIV3WarehousesPostRes() {} + +type APIV3WarehousesPostReq struct { + // Имя склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + Name string `json:"name"` + // ID склада WB. + OfficeId int `json:"officeId"` +} + +// GetName returns the value of Name. +func (s *APIV3WarehousesPostReq) GetName() string { + return s.Name +} + +// GetOfficeId returns the value of OfficeId. +func (s *APIV3WarehousesPostReq) GetOfficeId() int { + return s.OfficeId +} + +// SetName sets the value of Name. +func (s *APIV3WarehousesPostReq) SetName(val string) { + s.Name = val +} + +// SetOfficeId sets the value of OfficeId. +func (s *APIV3WarehousesPostReq) SetOfficeId(val int) { + s.OfficeId = val +} + +type APIV3WarehousesWarehouseIdDeleteForbidden Error + +func (*APIV3WarehousesWarehouseIdDeleteForbidden) aPIV3WarehousesWarehouseIdDeleteRes() {} + +// APIV3WarehousesWarehouseIdDeleteNoContent is response for APIV3WarehousesWarehouseIdDelete operation. +type APIV3WarehousesWarehouseIdDeleteNoContent struct{} + +func (*APIV3WarehousesWarehouseIdDeleteNoContent) aPIV3WarehousesWarehouseIdDeleteRes() {} + +type APIV3WarehousesWarehouseIdDeleteNotFound Error + +func (*APIV3WarehousesWarehouseIdDeleteNotFound) aPIV3WarehousesWarehouseIdDeleteRes() {} + +type APIV3WarehousesWarehouseIdPutBadRequest Error + +func (*APIV3WarehousesWarehouseIdPutBadRequest) aPIV3WarehousesWarehouseIdPutRes() {} + +type APIV3WarehousesWarehouseIdPutConflict Error + +func (*APIV3WarehousesWarehouseIdPutConflict) aPIV3WarehousesWarehouseIdPutRes() {} + +type APIV3WarehousesWarehouseIdPutForbidden Error + +func (*APIV3WarehousesWarehouseIdPutForbidden) aPIV3WarehousesWarehouseIdPutRes() {} + +// APIV3WarehousesWarehouseIdPutNoContent is response for APIV3WarehousesWarehouseIdPut operation. +type APIV3WarehousesWarehouseIdPutNoContent struct{} + +func (*APIV3WarehousesWarehouseIdPutNoContent) aPIV3WarehousesWarehouseIdPutRes() {} + +type APIV3WarehousesWarehouseIdPutNotFound Error + +func (*APIV3WarehousesWarehouseIdPutNotFound) aPIV3WarehousesWarehouseIdPutRes() {} + +type APIV3WarehousesWarehouseIdPutReq struct { + // Имя склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + Name string `json:"name"` + // ID склада WB. + OfficeId int `json:"officeId"` +} + +// GetName returns the value of Name. +func (s *APIV3WarehousesWarehouseIdPutReq) GetName() string { + return s.Name +} + +// GetOfficeId returns the value of OfficeId. +func (s *APIV3WarehousesWarehouseIdPutReq) GetOfficeId() int { + return s.OfficeId +} + +// SetName sets the value of Name. +func (s *APIV3WarehousesWarehouseIdPutReq) SetName(val string) { + s.Name = val +} + +// SetOfficeId sets the value of OfficeId. +func (s *APIV3WarehousesWarehouseIdPutReq) SetOfficeId(val int) { + s.OfficeId = val +} + +type ClubDisc []ClubDiscReq + +// Ref: #/components/schemas/ClubDiscReq +type ClubDiscReq struct { + // Артикул WB. + NmID int `json:"nmID"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,Β %. + ClubDiscount int `json:"clubDiscount"` +} + +// GetNmID returns the value of NmID. +func (s *ClubDiscReq) GetNmID() int { + return s.NmID +} + +// GetClubDiscount returns the value of ClubDiscount. +func (s *ClubDiscReq) GetClubDiscount() int { + return s.ClubDiscount +} + +// SetNmID sets the value of NmID. +func (s *ClubDiscReq) SetNmID(val int) { + s.NmID = val +} + +// SetClubDiscount sets the value of ClubDiscount. +func (s *ClubDiscReq) SetClubDiscount(val int) { + s.ClubDiscount = val +} + +type ContentV2BarcodesPostOK struct { + // Массив сгСнСрированных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + Data []string `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2BarcodesPostOK) GetData() []string { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2BarcodesPostOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2BarcodesPostOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2BarcodesPostOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2BarcodesPostOK) SetData(val []string) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2BarcodesPostOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2BarcodesPostOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2BarcodesPostOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2BarcodesPostOK) contentV2BarcodesPostRes() {} + +type ContentV2BarcodesPostReq struct { + // Кол-Π²ΠΎ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, + // максимальноС доступноС количСство Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для + // Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ - `5 000`. + Count OptInt `json:"count"` +} + +// GetCount returns the value of Count. +func (s *ContentV2BarcodesPostReq) GetCount() OptInt { + return s.Count +} + +// SetCount sets the value of Count. +func (s *ContentV2BarcodesPostReq) SetCount(val OptInt) { + s.Count = val +} + +type ContentV2CardsDeleteTrashPostOK struct { + Data OptContentV2CardsDeleteTrashPostOKData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptContentV2CardsDeleteTrashPostOKAdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2CardsDeleteTrashPostOK) GetData() OptContentV2CardsDeleteTrashPostOKData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2CardsDeleteTrashPostOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2CardsDeleteTrashPostOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2CardsDeleteTrashPostOK) GetAdditionalErrors() OptContentV2CardsDeleteTrashPostOKAdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2CardsDeleteTrashPostOK) SetData(val OptContentV2CardsDeleteTrashPostOKData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2CardsDeleteTrashPostOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2CardsDeleteTrashPostOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2CardsDeleteTrashPostOK) SetAdditionalErrors(val OptContentV2CardsDeleteTrashPostOKAdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ContentV2CardsDeleteTrashPostOK) contentV2CardsDeleteTrashPostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ContentV2CardsDeleteTrashPostOKAdditionalErrors struct{} + +type ContentV2CardsDeleteTrashPostOKData struct{} + +type ContentV2CardsDeleteTrashPostReq struct { + // Артикул WB (max. 1000). + NmIDs []int `json:"nmIDs"` +} + +// GetNmIDs returns the value of NmIDs. +func (s *ContentV2CardsDeleteTrashPostReq) GetNmIDs() []int { + return s.NmIDs +} + +// SetNmIDs sets the value of NmIDs. +func (s *ContentV2CardsDeleteTrashPostReq) SetNmIDs(val []int) { + s.NmIDs = val +} + +type ContentV2CardsErrorListGetOK struct { + Data []ContentV2CardsErrorListGetOKDataItem `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2CardsErrorListGetOK) GetData() []ContentV2CardsErrorListGetOKDataItem { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2CardsErrorListGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2CardsErrorListGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2CardsErrorListGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2CardsErrorListGetOK) SetData(val []ContentV2CardsErrorListGetOKDataItem) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2CardsErrorListGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2CardsErrorListGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2CardsErrorListGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2CardsErrorListGetOK) contentV2CardsErrorListGetRes() {} + +type ContentV2CardsErrorListGetOKDataItem struct { + // ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создавалась ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π°. + Object OptString `json:"object"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // Π”Π°Ρ‚Π° ΠΈ врСмя запроса Π½Π° созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + UpdateAt OptString `json:"updateAt"` + // Бписок ошибок, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ обработался запрос Π½Π° + // созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + Errors []string `json:"errors"` + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + ObjectID OptInt `json:"objectID"` +} + +// GetObject returns the value of Object. +func (s *ContentV2CardsErrorListGetOKDataItem) GetObject() OptString { + return s.Object +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2CardsErrorListGetOKDataItem) GetVendorCode() OptString { + return s.VendorCode +} + +// GetUpdateAt returns the value of UpdateAt. +func (s *ContentV2CardsErrorListGetOKDataItem) GetUpdateAt() OptString { + return s.UpdateAt +} + +// GetErrors returns the value of Errors. +func (s *ContentV2CardsErrorListGetOKDataItem) GetErrors() []string { + return s.Errors +} + +// GetObjectID returns the value of ObjectID. +func (s *ContentV2CardsErrorListGetOKDataItem) GetObjectID() OptInt { + return s.ObjectID +} + +// SetObject sets the value of Object. +func (s *ContentV2CardsErrorListGetOKDataItem) SetObject(val OptString) { + s.Object = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2CardsErrorListGetOKDataItem) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetUpdateAt sets the value of UpdateAt. +func (s *ContentV2CardsErrorListGetOKDataItem) SetUpdateAt(val OptString) { + s.UpdateAt = val +} + +// SetErrors sets the value of Errors. +func (s *ContentV2CardsErrorListGetOKDataItem) SetErrors(val []string) { + s.Errors = val +} + +// SetObjectID sets the value of ObjectID. +func (s *ContentV2CardsErrorListGetOKDataItem) SetObjectID(val OptInt) { + s.ObjectID = val +} + +type ContentV2CardsLimitsGetOK struct { + Data OptContentV2CardsLimitsGetOKData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2CardsLimitsGetOK) GetData() OptContentV2CardsLimitsGetOKData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2CardsLimitsGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2CardsLimitsGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2CardsLimitsGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2CardsLimitsGetOK) SetData(val OptContentV2CardsLimitsGetOKData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2CardsLimitsGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2CardsLimitsGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2CardsLimitsGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2CardsLimitsGetOK) contentV2CardsLimitsGetRes() {} + +type ContentV2CardsLimitsGetOKData struct { + // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ бСсплатных Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². + FreeLimits OptInt `json:"freeLimits"` + // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ»Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². + PaidLimits OptInt `json:"paidLimits"` +} + +// GetFreeLimits returns the value of FreeLimits. +func (s *ContentV2CardsLimitsGetOKData) GetFreeLimits() OptInt { + return s.FreeLimits +} + +// GetPaidLimits returns the value of PaidLimits. +func (s *ContentV2CardsLimitsGetOKData) GetPaidLimits() OptInt { + return s.PaidLimits +} + +// SetFreeLimits sets the value of FreeLimits. +func (s *ContentV2CardsLimitsGetOKData) SetFreeLimits(val OptInt) { + s.FreeLimits = val +} + +// SetPaidLimits sets the value of PaidLimits. +func (s *ContentV2CardsLimitsGetOKData) SetPaidLimits(val OptInt) { + s.PaidLimits = val +} + +type ContentV2CardsRecoverPostOK struct { + Data OptContentV2CardsRecoverPostOKData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptContentV2CardsRecoverPostOKAdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2CardsRecoverPostOK) GetData() OptContentV2CardsRecoverPostOKData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2CardsRecoverPostOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2CardsRecoverPostOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2CardsRecoverPostOK) GetAdditionalErrors() OptContentV2CardsRecoverPostOKAdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2CardsRecoverPostOK) SetData(val OptContentV2CardsRecoverPostOKData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2CardsRecoverPostOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2CardsRecoverPostOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2CardsRecoverPostOK) SetAdditionalErrors(val OptContentV2CardsRecoverPostOKAdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ContentV2CardsRecoverPostOK) contentV2CardsRecoverPostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ContentV2CardsRecoverPostOKAdditionalErrors struct{} + +type ContentV2CardsRecoverPostOKData struct{} + +type ContentV2CardsRecoverPostReq struct { + // Артикул WB (max. 1000). + NmIDs []int `json:"nmIDs"` +} + +// GetNmIDs returns the value of NmIDs. +func (s *ContentV2CardsRecoverPostReq) GetNmIDs() []int { + return s.NmIDs +} + +// SetNmIDs sets the value of NmIDs. +func (s *ContentV2CardsRecoverPostReq) SetNmIDs(val []int) { + s.NmIDs = val +} + +type ContentV2CardsUpdatePostReqItem struct { + // Артикул WB. + NmID int `json:"nmID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode string `json:"vendorCode"` + // Π‘Ρ€Π΅Π½Π΄. + Brand OptString `json:"brand"` + // НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°. + Title OptString `json:"title"` + // ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // МаксимальноС количСство символов зависит ΠΎΡ‚ + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ // ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries. + // ru/help-center/article/A-113#описаниС) Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ². + Description OptString `json:"description"` + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ // Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого + // Ρ‚ΠΎΠ²Π°Ρ€Π°. + Dimensions OptContentV2CardsUpdatePostReqItemDimensions `json:"dimensions"` + // Π₯арактСристики Ρ‚ΠΎΠ²Π°Ρ€Π°. + Characteristics []ContentV2CardsUpdatePostReqItemCharacteristicsItem `json:"characteristics"` + // Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ // Для Π±Π΅Π·Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° всё Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ + // Π΄Π°Π½Π½Ρ‹ΠΉ массив Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (wbSize ΠΈ techSize), Π½ΠΎ с + // Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ. + Sizes []ContentV2CardsUpdatePostReqItemSizesItem `json:"sizes"` +} + +// GetNmID returns the value of NmID. +func (s *ContentV2CardsUpdatePostReqItem) GetNmID() int { + return s.NmID +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2CardsUpdatePostReqItem) GetVendorCode() string { + return s.VendorCode +} + +// GetBrand returns the value of Brand. +func (s *ContentV2CardsUpdatePostReqItem) GetBrand() OptString { + return s.Brand +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUpdatePostReqItem) GetTitle() OptString { + return s.Title +} + +// GetDescription returns the value of Description. +func (s *ContentV2CardsUpdatePostReqItem) GetDescription() OptString { + return s.Description +} + +// GetDimensions returns the value of Dimensions. +func (s *ContentV2CardsUpdatePostReqItem) GetDimensions() OptContentV2CardsUpdatePostReqItemDimensions { + return s.Dimensions +} + +// GetCharacteristics returns the value of Characteristics. +func (s *ContentV2CardsUpdatePostReqItem) GetCharacteristics() []ContentV2CardsUpdatePostReqItemCharacteristicsItem { + return s.Characteristics +} + +// GetSizes returns the value of Sizes. +func (s *ContentV2CardsUpdatePostReqItem) GetSizes() []ContentV2CardsUpdatePostReqItemSizesItem { + return s.Sizes +} + +// SetNmID sets the value of NmID. +func (s *ContentV2CardsUpdatePostReqItem) SetNmID(val int) { + s.NmID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2CardsUpdatePostReqItem) SetVendorCode(val string) { + s.VendorCode = val +} + +// SetBrand sets the value of Brand. +func (s *ContentV2CardsUpdatePostReqItem) SetBrand(val OptString) { + s.Brand = val +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUpdatePostReqItem) SetTitle(val OptString) { + s.Title = val +} + +// SetDescription sets the value of Description. +func (s *ContentV2CardsUpdatePostReqItem) SetDescription(val OptString) { + s.Description = val +} + +// SetDimensions sets the value of Dimensions. +func (s *ContentV2CardsUpdatePostReqItem) SetDimensions(val OptContentV2CardsUpdatePostReqItemDimensions) { + s.Dimensions = val +} + +// SetCharacteristics sets the value of Characteristics. +func (s *ContentV2CardsUpdatePostReqItem) SetCharacteristics(val []ContentV2CardsUpdatePostReqItemCharacteristicsItem) { + s.Characteristics = val +} + +// SetSizes sets the value of Sizes. +func (s *ContentV2CardsUpdatePostReqItem) SetSizes(val []ContentV2CardsUpdatePostReqItemSizesItem) { + s.Sizes = val +} + +type ContentV2CardsUpdatePostReqItemCharacteristicsItem struct { + // ID характСристики. + ID OptInt `json:"id"` + // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ + // Ρ‚ΠΈΠΏΠ° характСристики. + Value jx.Raw `json:"value"` +} + +// GetID returns the value of ID. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) GetID() OptInt { + return s.ID +} + +// GetValue returns the value of Value. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) GetValue() jx.Raw { + return s.Value +} + +// SetID sets the value of ID. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) SetID(val OptInt) { + s.ID = val +} + +// SetValue sets the value of Value. +func (s *ContentV2CardsUpdatePostReqItemCharacteristicsItem) SetValue(val jx.Raw) { + s.Value = val +} + +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+// Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого +// Ρ‚ΠΎΠ²Π°Ρ€Π°. +type ContentV2CardsUpdatePostReqItemDimensions struct { + // Π”Π»ΠΈΠ½Π°, см. + Length OptInt `json:"length"` + // Π¨ΠΈΡ€ΠΈΠ½Π°, см. + Width OptInt `json:"width"` + // Высота, см. + Height OptInt `json:"height"` + // ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3. + WeightBrutto OptFloat64 `json:"weightBrutto"` +} + +// GetLength returns the value of Length. +func (s *ContentV2CardsUpdatePostReqItemDimensions) GetLength() OptInt { + return s.Length +} + +// GetWidth returns the value of Width. +func (s *ContentV2CardsUpdatePostReqItemDimensions) GetWidth() OptInt { + return s.Width +} + +// GetHeight returns the value of Height. +func (s *ContentV2CardsUpdatePostReqItemDimensions) GetHeight() OptInt { + return s.Height +} + +// GetWeightBrutto returns the value of WeightBrutto. +func (s *ContentV2CardsUpdatePostReqItemDimensions) GetWeightBrutto() OptFloat64 { + return s.WeightBrutto +} + +// SetLength sets the value of Length. +func (s *ContentV2CardsUpdatePostReqItemDimensions) SetLength(val OptInt) { + s.Length = val +} + +// SetWidth sets the value of Width. +func (s *ContentV2CardsUpdatePostReqItemDimensions) SetWidth(val OptInt) { + s.Width = val +} + +// SetHeight sets the value of Height. +func (s *ContentV2CardsUpdatePostReqItemDimensions) SetHeight(val OptInt) { + s.Height = val +} + +// SetWeightBrutto sets the value of WeightBrutto. +func (s *ContentV2CardsUpdatePostReqItemDimensions) SetWeightBrutto(val OptFloat64) { + s.WeightBrutto = val +} + +type ContentV2CardsUpdatePostReqItemSizesItem struct { + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° WB
+ // ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½ ΠΊ заполнСнию для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ // Для добавляСмых Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅ указываСтся. + ChrtID OptInt `json:"chrtID"` + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, S, 45). + TechSize OptString `json:"techSize"` + // Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WbSize OptString `json:"wbSize"` + // Π‘Π°Ρ€ΠΊΠΎΠ΄Ρ‹. + Skus []string `json:"skus"` +} + +// GetChrtID returns the value of ChrtID. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) GetChrtID() OptInt { + return s.ChrtID +} + +// GetTechSize returns the value of TechSize. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) GetTechSize() OptString { + return s.TechSize +} + +// GetWbSize returns the value of WbSize. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) GetWbSize() OptString { + return s.WbSize +} + +// GetSkus returns the value of Skus. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) GetSkus() []string { + return s.Skus +} + +// SetChrtID sets the value of ChrtID. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) SetChrtID(val OptInt) { + s.ChrtID = val +} + +// SetTechSize sets the value of TechSize. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) SetTechSize(val OptString) { + s.TechSize = val +} + +// SetWbSize sets the value of WbSize. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) SetWbSize(val OptString) { + s.WbSize = val +} + +// SetSkus sets the value of Skus. +func (s *ContentV2CardsUpdatePostReqItemSizesItem) SetSkus(val []string) { + s.Skus = val +} + +type ContentV2CardsUpdatePostRequestEntityTooLarge struct { + // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки. + Title OptString `json:"title"` + // Π”Π΅Ρ‚Π°Π»ΠΈ ошибки. + Detail OptString `json:"detail"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки. + Code OptString `json:"code"` + // Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса. + RequestId OptString `json:"requestId"` + // ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB. + Origin OptString `json:"origin"` + // HTTP статус-ΠΊΠΎΠ΄. + Status OptFloat64 `json:"status"` + // Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π°. + StatusText OptString `json:"statusText"` +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetTitle() OptString { + return s.Title +} + +// GetDetail returns the value of Detail. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetDetail() OptString { + return s.Detail +} + +// GetCode returns the value of Code. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetCode() OptString { + return s.Code +} + +// GetRequestId returns the value of RequestId. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetRequestId() OptString { + return s.RequestId +} + +// GetOrigin returns the value of Origin. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetOrigin() OptString { + return s.Origin +} + +// GetStatus returns the value of Status. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetStatus() OptFloat64 { + return s.Status +} + +// GetStatusText returns the value of StatusText. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) GetStatusText() OptString { + return s.StatusText +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetTitle(val OptString) { + s.Title = val +} + +// SetDetail sets the value of Detail. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetDetail(val OptString) { + s.Detail = val +} + +// SetCode sets the value of Code. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetCode(val OptString) { + s.Code = val +} + +// SetRequestId sets the value of RequestId. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetRequestId(val OptString) { + s.RequestId = val +} + +// SetOrigin sets the value of Origin. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetOrigin(val OptString) { + s.Origin = val +} + +// SetStatus sets the value of Status. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetStatus(val OptFloat64) { + s.Status = val +} + +// SetStatusText sets the value of StatusText. +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) SetStatusText(val OptString) { + s.StatusText = val +} + +func (*ContentV2CardsUpdatePostRequestEntityTooLarge) contentV2CardsUpdatePostRes() {} + +type ContentV2CardsUploadAddPostReq struct { + // `imtID` ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ присоСдиняСтся + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π°. + ImtID OptInt `json:"imtID"` + // Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° присоСдиняСмой ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + CardsToAdd []ContentV2CardsUploadAddPostReqCardsToAddItem `json:"cardsToAdd"` +} + +// GetImtID returns the value of ImtID. +func (s *ContentV2CardsUploadAddPostReq) GetImtID() OptInt { + return s.ImtID +} + +// GetCardsToAdd returns the value of CardsToAdd. +func (s *ContentV2CardsUploadAddPostReq) GetCardsToAdd() []ContentV2CardsUploadAddPostReqCardsToAddItem { + return s.CardsToAdd +} + +// SetImtID sets the value of ImtID. +func (s *ContentV2CardsUploadAddPostReq) SetImtID(val OptInt) { + s.ImtID = val +} + +// SetCardsToAdd sets the value of CardsToAdd. +func (s *ContentV2CardsUploadAddPostReq) SetCardsToAdd(val []ContentV2CardsUploadAddPostReqCardsToAddItem) { + s.CardsToAdd = val +} + +type ContentV2CardsUploadAddPostReqCardsToAddItem struct { + // Π‘Ρ€Π΅Π½Π΄. + Brand OptString `json:"brand"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode string `json:"vendorCode"` + // НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°. + Title OptString `json:"title"` + // ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // МаксимальноС количСство символов зависит ΠΎΡ‚ + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ // ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries. + // ru/help-center/article/A-113#описаниС) Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ². + Description OptString `json:"description"` + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ // Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого + // Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с + // Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса. + Dimensions OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions `json:"dimensions"` + // Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ // Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° (ΠΎΠ±ΡƒΠ²ΡŒ, ΠΎΠ΄Π΅ΠΆΠ΄Π° ΠΈ + // Π΄Ρ€.), сгСнСрируСтся автоматичСски с `techSize` = "A", `wbSize` = "1" + // ΠΈ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ. + Sizes []ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem `json:"sizes"` + // Массив характСристик Ρ‚ΠΎΠ²Π°Ρ€Π°. + Characteristics []ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem `json:"characteristics"` +} + +// GetBrand returns the value of Brand. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetBrand() OptString { + return s.Brand +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetVendorCode() string { + return s.VendorCode +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetTitle() OptString { + return s.Title +} + +// GetDescription returns the value of Description. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetDescription() OptString { + return s.Description +} + +// GetDimensions returns the value of Dimensions. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetDimensions() OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions { + return s.Dimensions +} + +// GetSizes returns the value of Sizes. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetSizes() []ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem { + return s.Sizes +} + +// GetCharacteristics returns the value of Characteristics. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) GetCharacteristics() []ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem { + return s.Characteristics +} + +// SetBrand sets the value of Brand. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetBrand(val OptString) { + s.Brand = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetVendorCode(val string) { + s.VendorCode = val +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetTitle(val OptString) { + s.Title = val +} + +// SetDescription sets the value of Description. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetDescription(val OptString) { + s.Description = val +} + +// SetDimensions sets the value of Dimensions. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetDimensions(val OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) { + s.Dimensions = val +} + +// SetSizes sets the value of Sizes. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetSizes(val []ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) { + s.Sizes = val +} + +// SetCharacteristics sets the value of Characteristics. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) SetCharacteristics(val []ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) { + s.Characteristics = val +} + +type ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem struct { + // ID характСристики. + ID int `json:"id"` + // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ + // Ρ‚ΠΈΠΏΠ° характСристики. + Value jx.Raw `json:"value"` +} + +// GetID returns the value of ID. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) GetID() int { + return s.ID +} + +// GetValue returns the value of Value. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) GetValue() jx.Raw { + return s.Value +} + +// SetID sets the value of ID. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) SetID(val int) { + s.ID = val +} + +// SetValue sets the value of Value. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemCharacteristicsItem) SetValue(val jx.Raw) { + s.Value = val +} + +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+// Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого +// Ρ‚ΠΎΠ²Π°Ρ€Π°
+// Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с +// Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса. +type ContentV2CardsUploadAddPostReqCardsToAddItemDimensions struct { + // Π”Π»ΠΈΠ½Π°, см. + Length OptInt `json:"length"` + // Π¨ΠΈΡ€ΠΈΠ½Π°, см. + Width OptInt `json:"width"` + // Высота, см. + Height OptInt `json:"height"` + // ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3. + WeightBrutto OptFloat64 `json:"weightBrutto"` +} + +// GetLength returns the value of Length. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) GetLength() OptInt { + return s.Length +} + +// GetWidth returns the value of Width. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) GetWidth() OptInt { + return s.Width +} + +// GetHeight returns the value of Height. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) GetHeight() OptInt { + return s.Height +} + +// GetWeightBrutto returns the value of WeightBrutto. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) GetWeightBrutto() OptFloat64 { + return s.WeightBrutto +} + +// SetLength sets the value of Length. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) SetLength(val OptInt) { + s.Length = val +} + +// SetWidth sets the value of Width. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) SetWidth(val OptInt) { + s.Width = val +} + +// SetHeight sets the value of Height. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) SetHeight(val OptInt) { + s.Height = val +} + +// SetWeightBrutto sets the value of WeightBrutto. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) SetWeightBrutto(val OptFloat64) { + s.WeightBrutto = val +} + +type ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem struct { + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, 45). + TechSize OptString `json:"techSize"` + // Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WbSize OptString `json:"wbSize"` + // Π¦Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π°. + Price OptInt `json:"price"` + // Π‘Π°Ρ€ΠΊΠΎΠ΄. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски. + Skus []string `json:"skus"` +} + +// GetTechSize returns the value of TechSize. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) GetTechSize() OptString { + return s.TechSize +} + +// GetWbSize returns the value of WbSize. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) GetWbSize() OptString { + return s.WbSize +} + +// GetPrice returns the value of Price. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) GetPrice() OptInt { + return s.Price +} + +// GetSkus returns the value of Skus. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) GetSkus() []string { + return s.Skus +} + +// SetTechSize sets the value of TechSize. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) SetTechSize(val OptString) { + s.TechSize = val +} + +// SetWbSize sets the value of WbSize. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) SetWbSize(val OptString) { + s.WbSize = val +} + +// SetPrice sets the value of Price. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) SetPrice(val OptInt) { + s.Price = val +} + +// SetSkus sets the value of Skus. +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemSizesItem) SetSkus(val []string) { + s.Skus = val +} + +type ContentV2CardsUploadAddPostRequestEntityTooLarge struct { + // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки. + Title OptString `json:"title"` + // Π”Π΅Ρ‚Π°Π»ΠΈ ошибки. + Detail OptString `json:"detail"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки. + Code OptString `json:"code"` + // Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса. + RequestId OptString `json:"requestId"` + // ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB. + Origin OptString `json:"origin"` + // HTTP статус-ΠΊΠΎΠ΄. + Status OptFloat64 `json:"status"` + // Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π°. + StatusText OptString `json:"statusText"` +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetTitle() OptString { + return s.Title +} + +// GetDetail returns the value of Detail. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetDetail() OptString { + return s.Detail +} + +// GetCode returns the value of Code. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetCode() OptString { + return s.Code +} + +// GetRequestId returns the value of RequestId. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetRequestId() OptString { + return s.RequestId +} + +// GetOrigin returns the value of Origin. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetOrigin() OptString { + return s.Origin +} + +// GetStatus returns the value of Status. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetStatus() OptFloat64 { + return s.Status +} + +// GetStatusText returns the value of StatusText. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) GetStatusText() OptString { + return s.StatusText +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetTitle(val OptString) { + s.Title = val +} + +// SetDetail sets the value of Detail. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetDetail(val OptString) { + s.Detail = val +} + +// SetCode sets the value of Code. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetCode(val OptString) { + s.Code = val +} + +// SetRequestId sets the value of RequestId. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetRequestId(val OptString) { + s.RequestId = val +} + +// SetOrigin sets the value of Origin. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetOrigin(val OptString) { + s.Origin = val +} + +// SetStatus sets the value of Status. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetStatus(val OptFloat64) { + s.Status = val +} + +// SetStatusText sets the value of StatusText. +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) SetStatusText(val OptString) { + s.StatusText = val +} + +func (*ContentV2CardsUploadAddPostRequestEntityTooLarge) contentV2CardsUploadAddPostRes() {} + +type ContentV2CardsUploadPostReqItem struct { + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID int `json:"subjectID"` + // Массив Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ + // Π±ΠΎΠ»Π΅Π΅ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + Variants []ContentV2CardsUploadPostReqItemVariantsItem `json:"variants"` +} + +// GetSubjectID returns the value of SubjectID. +func (s *ContentV2CardsUploadPostReqItem) GetSubjectID() int { + return s.SubjectID +} + +// GetVariants returns the value of Variants. +func (s *ContentV2CardsUploadPostReqItem) GetVariants() []ContentV2CardsUploadPostReqItemVariantsItem { + return s.Variants +} + +// SetSubjectID sets the value of SubjectID. +func (s *ContentV2CardsUploadPostReqItem) SetSubjectID(val int) { + s.SubjectID = val +} + +// SetVariants sets the value of Variants. +func (s *ContentV2CardsUploadPostReqItem) SetVariants(val []ContentV2CardsUploadPostReqItemVariantsItem) { + s.Variants = val +} + +type ContentV2CardsUploadPostReqItemVariantsItem struct { + // Π‘Ρ€Π΅Π½Π΄. + Brand OptString `json:"brand"` + // НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°. + Title OptString `json:"title"` + // ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // МаксимальноС количСство символов зависит ΠΎΡ‚ + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ β€” 2000, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” 1000, максимум β€” 5000
+ // ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… описания Π² **ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ… заполнСния + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°** Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π² [Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΌ + // Ρ†Π΅Π½Ρ‚Ρ€Π΅](https://seller.wildberries.ru/help-center/article/A-113#описаниС) Π½Π° + // ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ². + Description OptString `json:"description"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode string `json:"vendorCode"` + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+ // Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого + // Ρ‚ΠΎΠ²Π°Ρ€Π°
+ // Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с + // Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса. + Dimensions OptContentV2CardsUploadPostReqItemVariantsItemDimensions `json:"dimensions"` + // Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²
+ // Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° (ΠΎΠ±ΡƒΠ²ΡŒ, ΠΎΠ΄Π΅ΠΆΠ΄Π° ΠΈ + // Π΄Ρ€.), сгСнСрируСтся автоматичСски с `techSize` = "A", `wbSize` = "1" + // ΠΈ Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠΌ. + Sizes []ContentV2CardsUploadPostReqItemVariantsItemSizesItem `json:"sizes"` + // Массив характСристик Ρ‚ΠΎΠ²Π°Ρ€Π°. + Characteristics []ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem `json:"characteristics"` +} + +// GetBrand returns the value of Brand. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetBrand() OptString { + return s.Brand +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetTitle() OptString { + return s.Title +} + +// GetDescription returns the value of Description. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetDescription() OptString { + return s.Description +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetVendorCode() string { + return s.VendorCode +} + +// GetDimensions returns the value of Dimensions. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetDimensions() OptContentV2CardsUploadPostReqItemVariantsItemDimensions { + return s.Dimensions +} + +// GetSizes returns the value of Sizes. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetSizes() []ContentV2CardsUploadPostReqItemVariantsItemSizesItem { + return s.Sizes +} + +// GetCharacteristics returns the value of Characteristics. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) GetCharacteristics() []ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem { + return s.Characteristics +} + +// SetBrand sets the value of Brand. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetBrand(val OptString) { + s.Brand = val +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetTitle(val OptString) { + s.Title = val +} + +// SetDescription sets the value of Description. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetDescription(val OptString) { + s.Description = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetVendorCode(val string) { + s.VendorCode = val +} + +// SetDimensions sets the value of Dimensions. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetDimensions(val OptContentV2CardsUploadPostReqItemVariantsItemDimensions) { + s.Dimensions = val +} + +// SetSizes sets the value of Sizes. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetSizes(val []ContentV2CardsUploadPostReqItemVariantsItemSizesItem) { + s.Sizes = val +} + +// SetCharacteristics sets the value of Characteristics. +func (s *ContentV2CardsUploadPostReqItemVariantsItem) SetCharacteristics(val []ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) { + s.Characteristics = val +} + +type ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem struct { + // ID характСристики. + ID int `json:"id"` + // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ + // Ρ‚ΠΈΠΏΠ° характСристики. + Value jx.Raw `json:"value"` +} + +// GetID returns the value of ID. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) GetID() int { + return s.ID +} + +// GetValue returns the value of Value. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) GetValue() jx.Raw { + return s.Value +} + +// SetID sets the value of ID. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) SetID(val int) { + s.ID = val +} + +// SetValue sets the value of Value. +func (s *ContentV2CardsUploadPostReqItemVariantsItemCharacteristicsItem) SetValue(val jx.Raw) { + s.Value = val +} + +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° `c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ`
+// Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² `сантимСтрах` ΠΈ `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…` для любого +// Ρ‚ΠΎΠ²Π°Ρ€Π°
+// Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски с +// Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями Π΄Π»ΠΈΠ½Ρ‹, ΡˆΠΈΡ€ΠΈΠ½Ρ‹, высоты, вСса. +type ContentV2CardsUploadPostReqItemVariantsItemDimensions struct { + // Π”Π»ΠΈΠ½Π°, см. + Length OptInt `json:"length"` + // Π¨ΠΈΡ€ΠΈΠ½Π°, см. + Width OptInt `json:"width"` + // Высота, см. + Height OptInt `json:"height"` + // ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3. + WeightBrutto OptFloat64 `json:"weightBrutto"` +} + +// GetLength returns the value of Length. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) GetLength() OptInt { + return s.Length +} + +// GetWidth returns the value of Width. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) GetWidth() OptInt { + return s.Width +} + +// GetHeight returns the value of Height. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) GetHeight() OptInt { + return s.Height +} + +// GetWeightBrutto returns the value of WeightBrutto. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) GetWeightBrutto() OptFloat64 { + return s.WeightBrutto +} + +// SetLength sets the value of Length. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) SetLength(val OptInt) { + s.Length = val +} + +// SetWidth sets the value of Width. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) SetWidth(val OptInt) { + s.Width = val +} + +// SetHeight sets the value of Height. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) SetHeight(val OptInt) { + s.Height = val +} + +// SetWeightBrutto sets the value of WeightBrutto. +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) SetWeightBrutto(val OptFloat64) { + s.WeightBrutto = val +} + +type ContentV2CardsUploadPostReqItemVariantsItemSizesItem struct { + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XL, 45). + TechSize OptString `json:"techSize"` + // Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WbSize OptString `json:"wbSize"` + // Π¦Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π°. + Price OptInt `json:"price"` + // Π‘Π°Ρ€ΠΊΠΎΠ΄. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, сгСнСрируСтся автоматичСски. + Skus []string `json:"skus"` +} + +// GetTechSize returns the value of TechSize. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) GetTechSize() OptString { + return s.TechSize +} + +// GetWbSize returns the value of WbSize. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) GetWbSize() OptString { + return s.WbSize +} + +// GetPrice returns the value of Price. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) GetPrice() OptInt { + return s.Price +} + +// GetSkus returns the value of Skus. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) GetSkus() []string { + return s.Skus +} + +// SetTechSize sets the value of TechSize. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) SetTechSize(val OptString) { + s.TechSize = val +} + +// SetWbSize sets the value of WbSize. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) SetWbSize(val OptString) { + s.WbSize = val +} + +// SetPrice sets the value of Price. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) SetPrice(val OptInt) { + s.Price = val +} + +// SetSkus sets the value of Skus. +func (s *ContentV2CardsUploadPostReqItemVariantsItemSizesItem) SetSkus(val []string) { + s.Skus = val +} + +type ContentV2CardsUploadPostRequestEntityTooLarge struct { + // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки. + Title OptString `json:"title"` + // Π”Π΅Ρ‚Π°Π»ΠΈ ошибки. + Detail OptString `json:"detail"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки. + Code OptString `json:"code"` + // Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса. + RequestId OptString `json:"requestId"` + // ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB. + Origin OptString `json:"origin"` + // HTTP статус-ΠΊΠΎΠ΄. + Status OptFloat64 `json:"status"` + // Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π°. + StatusText OptString `json:"statusText"` +} + +// GetTitle returns the value of Title. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetTitle() OptString { + return s.Title +} + +// GetDetail returns the value of Detail. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetDetail() OptString { + return s.Detail +} + +// GetCode returns the value of Code. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetCode() OptString { + return s.Code +} + +// GetRequestId returns the value of RequestId. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetRequestId() OptString { + return s.RequestId +} + +// GetOrigin returns the value of Origin. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetOrigin() OptString { + return s.Origin +} + +// GetStatus returns the value of Status. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetStatus() OptFloat64 { + return s.Status +} + +// GetStatusText returns the value of StatusText. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) GetStatusText() OptString { + return s.StatusText +} + +// SetTitle sets the value of Title. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetTitle(val OptString) { + s.Title = val +} + +// SetDetail sets the value of Detail. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetDetail(val OptString) { + s.Detail = val +} + +// SetCode sets the value of Code. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetCode(val OptString) { + s.Code = val +} + +// SetRequestId sets the value of RequestId. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetRequestId(val OptString) { + s.RequestId = val +} + +// SetOrigin sets the value of Origin. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetOrigin(val OptString) { + s.Origin = val +} + +// SetStatus sets the value of Status. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetStatus(val OptFloat64) { + s.Status = val +} + +// SetStatusText sets the value of StatusText. +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) SetStatusText(val OptString) { + s.StatusText = val +} + +func (*ContentV2CardsUploadPostRequestEntityTooLarge) contentV2CardsUploadPostRes() {} + +type ContentV2DirectoryColorsGetOK struct { + Data jx.Raw `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectoryColorsGetOK) GetData() jx.Raw { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectoryColorsGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectoryColorsGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectoryColorsGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectoryColorsGetOK) SetData(val jx.Raw) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectoryColorsGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectoryColorsGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectoryColorsGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectoryColorsGetOK) contentV2DirectoryColorsGetRes() {} + +type ContentV2DirectoryCountriesGetOK struct { + Data jx.Raw `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectoryCountriesGetOK) GetData() jx.Raw { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectoryCountriesGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectoryCountriesGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectoryCountriesGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectoryCountriesGetOK) SetData(val jx.Raw) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectoryCountriesGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectoryCountriesGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectoryCountriesGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectoryCountriesGetOK) contentV2DirectoryCountriesGetRes() {} + +type ContentV2DirectoryKindsGetOK struct { + // Массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Ρ…Π°Ρ€-ΠΊΠΈ Пол. + Data []string `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectoryKindsGetOK) GetData() []string { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectoryKindsGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectoryKindsGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectoryKindsGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectoryKindsGetOK) SetData(val []string) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectoryKindsGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectoryKindsGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectoryKindsGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectoryKindsGetOK) contentV2DirectoryKindsGetRes() {} + +type ContentV2DirectorySeasonsGetOK struct { + // Массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Ρ…Π°Ρ€-ΠΊΠΈ Π‘Π΅Π·ΠΎΠ½. + Data []string `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectorySeasonsGetOK) GetData() []string { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectorySeasonsGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectorySeasonsGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectorySeasonsGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectorySeasonsGetOK) SetData(val []string) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectorySeasonsGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectorySeasonsGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectorySeasonsGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectorySeasonsGetOK) contentV2DirectorySeasonsGetRes() {} + +type ContentV2DirectoryTnvedGetOK struct { + // Π”Π°Π½Π½Ρ‹Π΅. + Data []ContentV2DirectoryTnvedGetOKDataItem `json:"data"` + // Π€Π»Π°Π³ наличия ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectoryTnvedGetOK) GetData() []ContentV2DirectoryTnvedGetOKDataItem { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectoryTnvedGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectoryTnvedGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectoryTnvedGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectoryTnvedGetOK) SetData(val []ContentV2DirectoryTnvedGetOKDataItem) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectoryTnvedGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectoryTnvedGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectoryTnvedGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectoryTnvedGetOK) contentV2DirectoryTnvedGetRes() {} + +type ContentV2DirectoryTnvedGetOKDataItem struct { + // ВНВЭД-ΠΊΠΎΠ΄. + Tnved OptString `json:"tnved"` + // - `true` - ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ трСбуСтся + // - `false` - ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ трСбуСтся. + IsKiz OptBool `json:"isKiz"` +} + +// GetTnved returns the value of Tnved. +func (s *ContentV2DirectoryTnvedGetOKDataItem) GetTnved() OptString { + return s.Tnved +} + +// GetIsKiz returns the value of IsKiz. +func (s *ContentV2DirectoryTnvedGetOKDataItem) GetIsKiz() OptBool { + return s.IsKiz +} + +// SetTnved sets the value of Tnved. +func (s *ContentV2DirectoryTnvedGetOKDataItem) SetTnved(val OptString) { + s.Tnved = val +} + +// SetIsKiz sets the value of IsKiz. +func (s *ContentV2DirectoryTnvedGetOKDataItem) SetIsKiz(val OptBool) { + s.IsKiz = val +} + +type ContentV2DirectoryVatGetOK struct { + Data []string `json:"data"` + // Π€Π»Π°Π³ наличия ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2DirectoryVatGetOK) GetData() []string { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2DirectoryVatGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2DirectoryVatGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2DirectoryVatGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2DirectoryVatGetOK) SetData(val []string) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2DirectoryVatGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2DirectoryVatGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2DirectoryVatGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2DirectoryVatGetOK) contentV2DirectoryVatGetRes() {} + +type ContentV2GetCardsListPostBadRequestPlainText struct { + Data io.Reader +} + +// Read reads data from the Data reader. +// +// Kept to satisfy the io.Reader interface. +func (s ContentV2GetCardsListPostBadRequestPlainText) Read(p []byte) (n int, err error) { + if s.Data == nil { + return 0, io.EOF + } + return s.Data.Read(p) +} + +func (*ContentV2GetCardsListPostBadRequestPlainText) contentV2GetCardsListPostRes() {} + +type ContentV2GetCardsListPostOK struct { + // Бписок ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + Cards []ContentV2GetCardsListPostOKCardsItem `json:"cards"` + // ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€. + Cursor OptContentV2GetCardsListPostOKCursor `json:"cursor"` +} + +// GetCards returns the value of Cards. +func (s *ContentV2GetCardsListPostOK) GetCards() []ContentV2GetCardsListPostOKCardsItem { + return s.Cards +} + +// GetCursor returns the value of Cursor. +func (s *ContentV2GetCardsListPostOK) GetCursor() OptContentV2GetCardsListPostOKCursor { + return s.Cursor +} + +// SetCards sets the value of Cards. +func (s *ContentV2GetCardsListPostOK) SetCards(val []ContentV2GetCardsListPostOKCardsItem) { + s.Cards = val +} + +// SetCursor sets the value of Cursor. +func (s *ContentV2GetCardsListPostOK) SetCursor(val OptContentV2GetCardsListPostOKCursor) { + s.Cursor = val +} + +type ContentV2GetCardsListPostOKCardsItem struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // ID ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
Π•Π΄ΠΈΠ½ для всСх + // Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»ΠΎΠ² WB ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ + // Ρ‚ΠΎΠ²Π°Ρ€Π°
Π•ΡΡ‚ΡŒ Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° Π½Π΅ + // объСдинСна Π½ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. + ImtID OptInt `json:"imtID"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ тСхничСский ID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + NmUUID OptUUID `json:"nmUUID"` + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID OptInt `json:"subjectID"` + // НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectName OptString `json:"subjectName"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // Π‘Ρ€Π΅Π½Π΄. + Brand OptString `json:"brand"` + // НаимСнованиС Ρ‚ΠΎΠ²Π°Ρ€Π°. + Title OptString `json:"title"` + // ОписаниС Ρ‚ΠΎΠ²Π°Ρ€Π°. + Description OptString `json:"description"` + // ВрСбуСтся Π»ΠΈ [ΠΊΠΎΠ΄ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ](https://чСстныйзнак.Ρ€Ρ„/) для + // этого Ρ‚ΠΎΠ²Π°Ρ€Π° + //
+ // * `false` β€” Π½Π΅ трСбуСтся + //
+ // * `true` β€” трСбуСтся. + NeedKiz OptBool `json:"needKiz"` + // Массив Ρ„ΠΎΡ‚ΠΎ. + Photos []ContentV2GetCardsListPostOKCardsItemPhotosItem `json:"photos"` + // URL Π²ΠΈΠ΄Π΅ΠΎ. + Video OptString `json:"video"` + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³. + Dimensions OptContentV2GetCardsListPostOKCardsItemDimensions `json:"dimensions"` + // Π₯арактСристики. + Characteristics []ContentV2GetCardsListPostOKCardsItemCharacteristicsItem `json:"characteristics"` + // Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π°. + Sizes []ContentV2GetCardsListPostOKCardsItemSizesItem `json:"sizes"` + // Π―Ρ€Π»Ρ‹ΠΊΠΈ. + Tags []ContentV2GetCardsListPostOKCardsItemTagsItem `json:"tags"` + // Π”Π°Ρ‚Π° ΠΈ врСмя создания. + CreatedAt OptString `json:"createdAt"` + // Π”Π°Ρ‚Π° ΠΈ врСмя измСнСния. + UpdatedAt OptString `json:"updatedAt"` +} + +// GetNmID returns the value of NmID. +func (s *ContentV2GetCardsListPostOKCardsItem) GetNmID() OptInt { + return s.NmID +} + +// GetImtID returns the value of ImtID. +func (s *ContentV2GetCardsListPostOKCardsItem) GetImtID() OptInt { + return s.ImtID +} + +// GetNmUUID returns the value of NmUUID. +func (s *ContentV2GetCardsListPostOKCardsItem) GetNmUUID() OptUUID { + return s.NmUUID +} + +// GetSubjectID returns the value of SubjectID. +func (s *ContentV2GetCardsListPostOKCardsItem) GetSubjectID() OptInt { + return s.SubjectID +} + +// GetSubjectName returns the value of SubjectName. +func (s *ContentV2GetCardsListPostOKCardsItem) GetSubjectName() OptString { + return s.SubjectName +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2GetCardsListPostOKCardsItem) GetVendorCode() OptString { + return s.VendorCode +} + +// GetBrand returns the value of Brand. +func (s *ContentV2GetCardsListPostOKCardsItem) GetBrand() OptString { + return s.Brand +} + +// GetTitle returns the value of Title. +func (s *ContentV2GetCardsListPostOKCardsItem) GetTitle() OptString { + return s.Title +} + +// GetDescription returns the value of Description. +func (s *ContentV2GetCardsListPostOKCardsItem) GetDescription() OptString { + return s.Description +} + +// GetNeedKiz returns the value of NeedKiz. +func (s *ContentV2GetCardsListPostOKCardsItem) GetNeedKiz() OptBool { + return s.NeedKiz +} + +// GetPhotos returns the value of Photos. +func (s *ContentV2GetCardsListPostOKCardsItem) GetPhotos() []ContentV2GetCardsListPostOKCardsItemPhotosItem { + return s.Photos +} + +// GetVideo returns the value of Video. +func (s *ContentV2GetCardsListPostOKCardsItem) GetVideo() OptString { + return s.Video +} + +// GetDimensions returns the value of Dimensions. +func (s *ContentV2GetCardsListPostOKCardsItem) GetDimensions() OptContentV2GetCardsListPostOKCardsItemDimensions { + return s.Dimensions +} + +// GetCharacteristics returns the value of Characteristics. +func (s *ContentV2GetCardsListPostOKCardsItem) GetCharacteristics() []ContentV2GetCardsListPostOKCardsItemCharacteristicsItem { + return s.Characteristics +} + +// GetSizes returns the value of Sizes. +func (s *ContentV2GetCardsListPostOKCardsItem) GetSizes() []ContentV2GetCardsListPostOKCardsItemSizesItem { + return s.Sizes +} + +// GetTags returns the value of Tags. +func (s *ContentV2GetCardsListPostOKCardsItem) GetTags() []ContentV2GetCardsListPostOKCardsItemTagsItem { + return s.Tags +} + +// GetCreatedAt returns the value of CreatedAt. +func (s *ContentV2GetCardsListPostOKCardsItem) GetCreatedAt() OptString { + return s.CreatedAt +} + +// GetUpdatedAt returns the value of UpdatedAt. +func (s *ContentV2GetCardsListPostOKCardsItem) GetUpdatedAt() OptString { + return s.UpdatedAt +} + +// SetNmID sets the value of NmID. +func (s *ContentV2GetCardsListPostOKCardsItem) SetNmID(val OptInt) { + s.NmID = val +} + +// SetImtID sets the value of ImtID. +func (s *ContentV2GetCardsListPostOKCardsItem) SetImtID(val OptInt) { + s.ImtID = val +} + +// SetNmUUID sets the value of NmUUID. +func (s *ContentV2GetCardsListPostOKCardsItem) SetNmUUID(val OptUUID) { + s.NmUUID = val +} + +// SetSubjectID sets the value of SubjectID. +func (s *ContentV2GetCardsListPostOKCardsItem) SetSubjectID(val OptInt) { + s.SubjectID = val +} + +// SetSubjectName sets the value of SubjectName. +func (s *ContentV2GetCardsListPostOKCardsItem) SetSubjectName(val OptString) { + s.SubjectName = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2GetCardsListPostOKCardsItem) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetBrand sets the value of Brand. +func (s *ContentV2GetCardsListPostOKCardsItem) SetBrand(val OptString) { + s.Brand = val +} + +// SetTitle sets the value of Title. +func (s *ContentV2GetCardsListPostOKCardsItem) SetTitle(val OptString) { + s.Title = val +} + +// SetDescription sets the value of Description. +func (s *ContentV2GetCardsListPostOKCardsItem) SetDescription(val OptString) { + s.Description = val +} + +// SetNeedKiz sets the value of NeedKiz. +func (s *ContentV2GetCardsListPostOKCardsItem) SetNeedKiz(val OptBool) { + s.NeedKiz = val +} + +// SetPhotos sets the value of Photos. +func (s *ContentV2GetCardsListPostOKCardsItem) SetPhotos(val []ContentV2GetCardsListPostOKCardsItemPhotosItem) { + s.Photos = val +} + +// SetVideo sets the value of Video. +func (s *ContentV2GetCardsListPostOKCardsItem) SetVideo(val OptString) { + s.Video = val +} + +// SetDimensions sets the value of Dimensions. +func (s *ContentV2GetCardsListPostOKCardsItem) SetDimensions(val OptContentV2GetCardsListPostOKCardsItemDimensions) { + s.Dimensions = val +} + +// SetCharacteristics sets the value of Characteristics. +func (s *ContentV2GetCardsListPostOKCardsItem) SetCharacteristics(val []ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) { + s.Characteristics = val +} + +// SetSizes sets the value of Sizes. +func (s *ContentV2GetCardsListPostOKCardsItem) SetSizes(val []ContentV2GetCardsListPostOKCardsItemSizesItem) { + s.Sizes = val +} + +// SetTags sets the value of Tags. +func (s *ContentV2GetCardsListPostOKCardsItem) SetTags(val []ContentV2GetCardsListPostOKCardsItemTagsItem) { + s.Tags = val +} + +// SetCreatedAt sets the value of CreatedAt. +func (s *ContentV2GetCardsListPostOKCardsItem) SetCreatedAt(val OptString) { + s.CreatedAt = val +} + +// SetUpdatedAt sets the value of UpdatedAt. +func (s *ContentV2GetCardsListPostOKCardsItem) SetUpdatedAt(val OptString) { + s.UpdatedAt = val +} + +type ContentV2GetCardsListPostOKCardsItemCharacteristicsItem struct { + // ID характСристики. + ID OptInt `json:"id"` + // НазваниС характСристики. + Name OptString `json:"name"` + // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ + // Ρ‚ΠΈΠΏΠ° характСристики. + Value jx.Raw `json:"value"` +} + +// GetID returns the value of ID. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) GetID() OptInt { + return s.ID +} + +// GetName returns the value of Name. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) GetName() OptString { + return s.Name +} + +// GetValue returns the value of Value. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) GetValue() jx.Raw { + return s.Value +} + +// SetID sets the value of ID. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) SetID(val OptInt) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) SetName(val OptString) { + s.Name = val +} + +// SetValue sets the value of Value. +func (s *ContentV2GetCardsListPostOKCardsItemCharacteristicsItem) SetValue(val jx.Raw) { + s.Value = val +} + +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³. +type ContentV2GetCardsListPostOKCardsItemDimensions struct { + // Π”Π»ΠΈΠ½Π°, см. + Length OptInt `json:"length"` + // Π¨ΠΈΡ€ΠΈΠ½Π°, см. + Width OptInt `json:"width"` + // Высота, см. + Height OptInt `json:"height"` + // ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3. + WeightBrutto OptFloat64 `json:"weightBrutto"` + // ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π³Π°Π±Π°Ρ€ΠΈΡ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°: + // - `true` β€” Π½Π΅ выявлСна. `"isValid":true` Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ + // Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях + // (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) + // `"isValid":true` Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… значСниях, + // ΠΊΡ€ΠΎΠΌΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…. + // - `false` β€” ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π³Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ + // срСдних ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ). РСкомСндуСтся + // ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° Π² + // ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ **Π² сантимСтрах**. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ + // Ρ‚ΠΎΠ²Π°Ρ€Π°, Π² Ρ‚ΠΎΠΌ числС начислСниС логистики ΠΈ хранСния, + // ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Логистика ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ + // ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ β€” ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°ΠΌ. Π’Π°ΠΊΠΆΠ΅ + // `"isValid":false` возвращаСтся ΠΏΡ€ΠΈ отсутствии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ + // Π½ΡƒΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ любой стороны. + IsValid OptBool `json:"isValid"` +} + +// GetLength returns the value of Length. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) GetLength() OptInt { + return s.Length +} + +// GetWidth returns the value of Width. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) GetWidth() OptInt { + return s.Width +} + +// GetHeight returns the value of Height. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) GetHeight() OptInt { + return s.Height +} + +// GetWeightBrutto returns the value of WeightBrutto. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) GetWeightBrutto() OptFloat64 { + return s.WeightBrutto +} + +// GetIsValid returns the value of IsValid. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) GetIsValid() OptBool { + return s.IsValid +} + +// SetLength sets the value of Length. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) SetLength(val OptInt) { + s.Length = val +} + +// SetWidth sets the value of Width. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) SetWidth(val OptInt) { + s.Width = val +} + +// SetHeight sets the value of Height. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) SetHeight(val OptInt) { + s.Height = val +} + +// SetWeightBrutto sets the value of WeightBrutto. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) SetWeightBrutto(val OptFloat64) { + s.WeightBrutto = val +} + +// SetIsValid sets the value of IsValid. +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) SetIsValid(val OptBool) { + s.IsValid = val +} + +type ContentV2GetCardsListPostOKCardsItemPhotosItem struct { + // URL Ρ„ΠΎΡ‚ΠΎ `900Ρ…1200`. + Big OptString `json:"big"` + // URL Ρ„ΠΎΡ‚ΠΎ `248Ρ…328`. + C246x328 OptString `json:"c246x328"` + // URL Ρ„ΠΎΡ‚ΠΎ `516Ρ…688`. + C516x688 OptString `json:"c516x688"` + // URL Ρ„ΠΎΡ‚ΠΎ `600Ρ…600`. + Square OptString `json:"square"` + // URL Ρ„ΠΎΡ‚ΠΎ `75Ρ…100`. + Tm OptString `json:"tm"` +} + +// GetBig returns the value of Big. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) GetBig() OptString { + return s.Big +} + +// GetC246x328 returns the value of C246x328. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) GetC246x328() OptString { + return s.C246x328 +} + +// GetC516x688 returns the value of C516x688. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) GetC516x688() OptString { + return s.C516x688 +} + +// GetSquare returns the value of Square. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) GetSquare() OptString { + return s.Square +} + +// GetTm returns the value of Tm. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) GetTm() OptString { + return s.Tm +} + +// SetBig sets the value of Big. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) SetBig(val OptString) { + s.Big = val +} + +// SetC246x328 sets the value of C246x328. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) SetC246x328(val OptString) { + s.C246x328 = val +} + +// SetC516x688 sets the value of C516x688. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) SetC516x688(val OptString) { + s.C516x688 = val +} + +// SetSquare sets the value of Square. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) SetSquare(val OptString) { + s.Square = val +} + +// SetTm sets the value of Tm. +func (s *ContentV2GetCardsListPostOKCardsItemPhotosItem) SetTm(val OptString) { + s.Tm = val +} + +type ContentV2GetCardsListPostOKCardsItemSizesItem struct { + // Числовой ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° WB. + ChrtID OptInt `json:"chrtID"` + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π° (А, XXL, 57 ΠΈ Π΄Ρ€.). + TechSize OptString `json:"techSize"` + // Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WbSize OptString `json:"wbSize"` + // Π‘Π°Ρ€ΠΊΠΎΠ΄ Ρ‚ΠΎΠ²Π°Ρ€Π°. + Skus []string `json:"skus"` +} + +// GetChrtID returns the value of ChrtID. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) GetChrtID() OptInt { + return s.ChrtID +} + +// GetTechSize returns the value of TechSize. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) GetTechSize() OptString { + return s.TechSize +} + +// GetWbSize returns the value of WbSize. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) GetWbSize() OptString { + return s.WbSize +} + +// GetSkus returns the value of Skus. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) GetSkus() []string { + return s.Skus +} + +// SetChrtID sets the value of ChrtID. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) SetChrtID(val OptInt) { + s.ChrtID = val +} + +// SetTechSize sets the value of TechSize. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) SetTechSize(val OptString) { + s.TechSize = val +} + +// SetWbSize sets the value of WbSize. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) SetWbSize(val OptString) { + s.WbSize = val +} + +// SetSkus sets the value of Skus. +func (s *ContentV2GetCardsListPostOKCardsItemSizesItem) SetSkus(val []string) { + s.Skus = val +} + +type ContentV2GetCardsListPostOKCardsItemTagsItem struct { + // ID ярлыка. + ID OptInt `json:"id"` + // НазваниС ярлыка. + Name OptString `json:"name"` + // Π¦Π²Π΅Ρ‚ ярлыка + //
+ //
ДоступныС Ρ†Π²Π΅Ρ‚Π°:
+ //
D1CFD7 - сСрый
+ //
FEE0E0 - красный
+ //
ECDAFF - Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ
+ //
E4EAFF - синий
+ //
DEF1DD - Π·Π΅Π»Π΅Π½Ρ‹ΠΉ
+ //
FFECC7 - ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ
+ //
. + Color OptString `json:"color"` +} + +// GetID returns the value of ID. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) GetID() OptInt { + return s.ID +} + +// GetName returns the value of Name. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) GetName() OptString { + return s.Name +} + +// GetColor returns the value of Color. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) GetColor() OptString { + return s.Color +} + +// SetID sets the value of ID. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) SetID(val OptInt) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) SetName(val OptString) { + s.Name = val +} + +// SetColor sets the value of Color. +func (s *ContentV2GetCardsListPostOKCardsItemTagsItem) SetColor(val OptString) { + s.Color = val +} + +// ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€. +type ContentV2GetCardsListPostOKCursor struct { + // Π”Π°Ρ‚Π° ΠΈ врСмя, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ + // список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + UpdatedAt OptString `json:"updatedAt"` + // Артикул WB, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ + // список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + NmID OptInt `json:"nmID"` + // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + Total OptInt `json:"total"` +} + +// GetUpdatedAt returns the value of UpdatedAt. +func (s *ContentV2GetCardsListPostOKCursor) GetUpdatedAt() OptString { + return s.UpdatedAt +} + +// GetNmID returns the value of NmID. +func (s *ContentV2GetCardsListPostOKCursor) GetNmID() OptInt { + return s.NmID +} + +// GetTotal returns the value of Total. +func (s *ContentV2GetCardsListPostOKCursor) GetTotal() OptInt { + return s.Total +} + +// SetUpdatedAt sets the value of UpdatedAt. +func (s *ContentV2GetCardsListPostOKCursor) SetUpdatedAt(val OptString) { + s.UpdatedAt = val +} + +// SetNmID sets the value of NmID. +func (s *ContentV2GetCardsListPostOKCursor) SetNmID(val OptInt) { + s.NmID = val +} + +// SetTotal sets the value of Total. +func (s *ContentV2GetCardsListPostOKCursor) SetTotal(val OptInt) { + s.Total = val +} + +// ContentV2GetCardsListPostOKHeaders wraps ContentV2GetCardsListPostOK with response headers. +type ContentV2GetCardsListPostOKHeaders struct { + XRatelimitRemaining OptInt + Response ContentV2GetCardsListPostOK +} + +// GetXRatelimitRemaining returns the value of XRatelimitRemaining. +func (s *ContentV2GetCardsListPostOKHeaders) GetXRatelimitRemaining() OptInt { + return s.XRatelimitRemaining +} + +// GetResponse returns the value of Response. +func (s *ContentV2GetCardsListPostOKHeaders) GetResponse() ContentV2GetCardsListPostOK { + return s.Response +} + +// SetXRatelimitRemaining sets the value of XRatelimitRemaining. +func (s *ContentV2GetCardsListPostOKHeaders) SetXRatelimitRemaining(val OptInt) { + s.XRatelimitRemaining = val +} + +// SetResponse sets the value of Response. +func (s *ContentV2GetCardsListPostOKHeaders) SetResponse(val ContentV2GetCardsListPostOK) { + s.Response = val +} + +func (*ContentV2GetCardsListPostOKHeaders) contentV2GetCardsListPostRes() {} + +type ContentV2GetCardsListPostReq struct { + // Настройки. + Settings OptContentV2GetCardsListPostReqSettings `json:"settings"` +} + +// GetSettings returns the value of Settings. +func (s *ContentV2GetCardsListPostReq) GetSettings() OptContentV2GetCardsListPostReqSettings { + return s.Settings +} + +// SetSettings sets the value of Settings. +func (s *ContentV2GetCardsListPostReq) SetSettings(val OptContentV2GetCardsListPostReqSettings) { + s.Settings = val +} + +// Настройки. +type ContentV2GetCardsListPostReqSettings struct { + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки. + Sort OptContentV2GetCardsListPostReqSettingsSort `json:"sort"` + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. + Filter OptContentV2GetCardsListPostReqSettingsFilter `json:"filter"` + // ΠšΡƒΡ€ΡΠΎΡ€. + Cursor OptContentV2GetCardsListPostReqSettingsCursor `json:"cursor"` +} + +// GetSort returns the value of Sort. +func (s *ContentV2GetCardsListPostReqSettings) GetSort() OptContentV2GetCardsListPostReqSettingsSort { + return s.Sort +} + +// GetFilter returns the value of Filter. +func (s *ContentV2GetCardsListPostReqSettings) GetFilter() OptContentV2GetCardsListPostReqSettingsFilter { + return s.Filter +} + +// GetCursor returns the value of Cursor. +func (s *ContentV2GetCardsListPostReqSettings) GetCursor() OptContentV2GetCardsListPostReqSettingsCursor { + return s.Cursor +} + +// SetSort sets the value of Sort. +func (s *ContentV2GetCardsListPostReqSettings) SetSort(val OptContentV2GetCardsListPostReqSettingsSort) { + s.Sort = val +} + +// SetFilter sets the value of Filter. +func (s *ContentV2GetCardsListPostReqSettings) SetFilter(val OptContentV2GetCardsListPostReqSettingsFilter) { + s.Filter = val +} + +// SetCursor sets the value of Cursor. +func (s *ContentV2GetCardsListPostReqSettings) SetCursor(val OptContentV2GetCardsListPostReqSettingsCursor) { + s.Cursor = val +} + +// ΠšΡƒΡ€ΡΠΎΡ€. +type ContentV2GetCardsListPostReqSettingsCursor struct { + // Бколько ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅. + Limit OptInt `json:"limit"` + UpdatedAt OptString `json:"updatedAt"` + // Артикул WB послСднСй ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. + // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ. + NmID OptInt `json:"nmID"` +} + +// GetLimit returns the value of Limit. +func (s *ContentV2GetCardsListPostReqSettingsCursor) GetLimit() OptInt { + return s.Limit +} + +// GetUpdatedAt returns the value of UpdatedAt. +func (s *ContentV2GetCardsListPostReqSettingsCursor) GetUpdatedAt() OptString { + return s.UpdatedAt +} + +// GetNmID returns the value of NmID. +func (s *ContentV2GetCardsListPostReqSettingsCursor) GetNmID() OptInt { + return s.NmID +} + +// SetLimit sets the value of Limit. +func (s *ContentV2GetCardsListPostReqSettingsCursor) SetLimit(val OptInt) { + s.Limit = val +} + +// SetUpdatedAt sets the value of UpdatedAt. +func (s *ContentV2GetCardsListPostReqSettingsCursor) SetUpdatedAt(val OptString) { + s.UpdatedAt = val +} + +// SetNmID sets the value of NmID. +func (s *ContentV2GetCardsListPostReqSettingsCursor) SetNmID(val OptInt) { + s.NmID = val +} + +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. +type ContentV2GetCardsListPostReqSettingsFilter struct { + // Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎΒ Ρ„ΠΎΡ‚ΠΎ: + // * `0`Β β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π· Ρ„ΠΎΡ‚ΠΎ + // * `1`Β β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ с фото + // * `-1`Β β€” всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WithPhoto OptInt `json:"withPhoto"` + // Поиск ΠΏΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ WB, Π±Π°Ρ€ΠΊΠΎΠ΄Ρƒ. + TextSearch OptString `json:"textSearch"` + // Поиск ΠΏΠΎ ID ярлыков. + TagIDs []int `json:"tagIDs"` + // Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. `true` - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅, `false` - + // всС. ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в пСсочницС. + AllowedCategoriesOnly OptBool `json:"allowedCategoriesOnly"` + // Поиск ΠΏΠΎ id ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ². + ObjectIDs []int `json:"objectIDs"` + // Поиск ΠΏΠΎ Π±Ρ€Π΅Π½Π΄Π°ΠΌ. + Brands []string `json:"brands"` + // Поиск ΠΏΠΎ ID ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + ImtID OptInt `json:"imtID"` +} + +// GetWithPhoto returns the value of WithPhoto. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetWithPhoto() OptInt { + return s.WithPhoto +} + +// GetTextSearch returns the value of TextSearch. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetTextSearch() OptString { + return s.TextSearch +} + +// GetTagIDs returns the value of TagIDs. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetTagIDs() []int { + return s.TagIDs +} + +// GetAllowedCategoriesOnly returns the value of AllowedCategoriesOnly. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetAllowedCategoriesOnly() OptBool { + return s.AllowedCategoriesOnly +} + +// GetObjectIDs returns the value of ObjectIDs. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetObjectIDs() []int { + return s.ObjectIDs +} + +// GetBrands returns the value of Brands. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetBrands() []string { + return s.Brands +} + +// GetImtID returns the value of ImtID. +func (s *ContentV2GetCardsListPostReqSettingsFilter) GetImtID() OptInt { + return s.ImtID +} + +// SetWithPhoto sets the value of WithPhoto. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetWithPhoto(val OptInt) { + s.WithPhoto = val +} + +// SetTextSearch sets the value of TextSearch. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetTextSearch(val OptString) { + s.TextSearch = val +} + +// SetTagIDs sets the value of TagIDs. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetTagIDs(val []int) { + s.TagIDs = val +} + +// SetAllowedCategoriesOnly sets the value of AllowedCategoriesOnly. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetAllowedCategoriesOnly(val OptBool) { + s.AllowedCategoriesOnly = val +} + +// SetObjectIDs sets the value of ObjectIDs. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetObjectIDs(val []int) { + s.ObjectIDs = val +} + +// SetBrands sets the value of Brands. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetBrands(val []string) { + s.Brands = val +} + +// SetImtID sets the value of ImtID. +func (s *ContentV2GetCardsListPostReqSettingsFilter) SetImtID(val OptInt) { + s.ImtID = val +} + +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки. +type ContentV2GetCardsListPostReqSettingsSort struct { + // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полю **updatedAt** (`false` - ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, `true` - ΠΏΠΎ + // Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ). + Ascending OptBool `json:"ascending"` +} + +// GetAscending returns the value of Ascending. +func (s *ContentV2GetCardsListPostReqSettingsSort) GetAscending() OptBool { + return s.Ascending +} + +// SetAscending sets the value of Ascending. +func (s *ContentV2GetCardsListPostReqSettingsSort) SetAscending(val OptBool) { + s.Ascending = val +} + +type ContentV2GetCardsTrashPostBadRequestPlainText struct { + Data io.Reader +} + +// Read reads data from the Data reader. +// +// Kept to satisfy the io.Reader interface. +func (s ContentV2GetCardsTrashPostBadRequestPlainText) Read(p []byte) (n int, err error) { + if s.Data == nil { + return 0, io.EOF + } + return s.Data.Read(p) +} + +func (*ContentV2GetCardsTrashPostBadRequestPlainText) contentV2GetCardsTrashPostRes() {} + +type ContentV2GetCardsTrashPostLocale string + +const ( + ContentV2GetCardsTrashPostLocaleRu ContentV2GetCardsTrashPostLocale = "ru" + ContentV2GetCardsTrashPostLocaleEn ContentV2GetCardsTrashPostLocale = "en" + ContentV2GetCardsTrashPostLocaleZh ContentV2GetCardsTrashPostLocale = "zh" +) + +// AllValues returns all ContentV2GetCardsTrashPostLocale values. +func (ContentV2GetCardsTrashPostLocale) AllValues() []ContentV2GetCardsTrashPostLocale { + return []ContentV2GetCardsTrashPostLocale{ + ContentV2GetCardsTrashPostLocaleRu, + ContentV2GetCardsTrashPostLocaleEn, + ContentV2GetCardsTrashPostLocaleZh, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s ContentV2GetCardsTrashPostLocale) MarshalText() ([]byte, error) { + switch s { + case ContentV2GetCardsTrashPostLocaleRu: + return []byte(s), nil + case ContentV2GetCardsTrashPostLocaleEn: + return []byte(s), nil + case ContentV2GetCardsTrashPostLocaleZh: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *ContentV2GetCardsTrashPostLocale) UnmarshalText(data []byte) error { + switch ContentV2GetCardsTrashPostLocale(data) { + case ContentV2GetCardsTrashPostLocaleRu: + *s = ContentV2GetCardsTrashPostLocaleRu + return nil + case ContentV2GetCardsTrashPostLocaleEn: + *s = ContentV2GetCardsTrashPostLocaleEn + return nil + case ContentV2GetCardsTrashPostLocaleZh: + *s = ContentV2GetCardsTrashPostLocaleZh + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type ContentV2GetCardsTrashPostOK struct { + // Массив ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + Cards []ContentV2GetCardsTrashPostOKCardsItem `json:"cards"` + // ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€. + Cursor OptContentV2GetCardsTrashPostOKCursor `json:"cursor"` +} + +// GetCards returns the value of Cards. +func (s *ContentV2GetCardsTrashPostOK) GetCards() []ContentV2GetCardsTrashPostOKCardsItem { + return s.Cards +} + +// GetCursor returns the value of Cursor. +func (s *ContentV2GetCardsTrashPostOK) GetCursor() OptContentV2GetCardsTrashPostOKCursor { + return s.Cursor +} + +// SetCards sets the value of Cards. +func (s *ContentV2GetCardsTrashPostOK) SetCards(val []ContentV2GetCardsTrashPostOKCardsItem) { + s.Cards = val +} + +// SetCursor sets the value of Cursor. +func (s *ContentV2GetCardsTrashPostOK) SetCursor(val OptContentV2GetCardsTrashPostOKCursor) { + s.Cursor = val +} + +func (*ContentV2GetCardsTrashPostOK) contentV2GetCardsTrashPostRes() {} + +type ContentV2GetCardsTrashPostOKCardsItem struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID OptInt `json:"subjectID"` + // НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectName OptString `json:"subjectName"` + // Массив Ρ„ΠΎΡ‚ΠΎ. + Photos []ContentV2GetCardsTrashPostOKCardsItemPhotosItem `json:"photos"` + // URL Π²ΠΈΠ΄Π΅ΠΎ. + Video OptString `json:"video"` + // Массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². + Sizes []ContentV2GetCardsTrashPostOKCardsItemSizesItem `json:"sizes"` + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³. + Dimensions OptContentV2GetCardsTrashPostOKCardsItemDimensions `json:"dimensions"` + // Π₯арактСристики. + Characteristics []ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem `json:"characteristics"` + // Π”Π°Ρ‚Π° ΠΈ врСмя создания. + CreatedAt OptString `json:"createdAt"` + // Π”Π°Ρ‚Π° ΠΈ врСмя помСщСния Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. + TrashedAt OptString `json:"trashedAt"` +} + +// GetNmID returns the value of NmID. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetNmID() OptInt { + return s.NmID +} + +// GetVendorCode returns the value of VendorCode. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetVendorCode() OptString { + return s.VendorCode +} + +// GetSubjectID returns the value of SubjectID. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetSubjectID() OptInt { + return s.SubjectID +} + +// GetSubjectName returns the value of SubjectName. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetSubjectName() OptString { + return s.SubjectName +} + +// GetPhotos returns the value of Photos. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetPhotos() []ContentV2GetCardsTrashPostOKCardsItemPhotosItem { + return s.Photos +} + +// GetVideo returns the value of Video. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetVideo() OptString { + return s.Video +} + +// GetSizes returns the value of Sizes. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetSizes() []ContentV2GetCardsTrashPostOKCardsItemSizesItem { + return s.Sizes +} + +// GetDimensions returns the value of Dimensions. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetDimensions() OptContentV2GetCardsTrashPostOKCardsItemDimensions { + return s.Dimensions +} + +// GetCharacteristics returns the value of Characteristics. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetCharacteristics() []ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem { + return s.Characteristics +} + +// GetCreatedAt returns the value of CreatedAt. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetCreatedAt() OptString { + return s.CreatedAt +} + +// GetTrashedAt returns the value of TrashedAt. +func (s *ContentV2GetCardsTrashPostOKCardsItem) GetTrashedAt() OptString { + return s.TrashedAt +} + +// SetNmID sets the value of NmID. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetNmID(val OptInt) { + s.NmID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetSubjectID sets the value of SubjectID. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetSubjectID(val OptInt) { + s.SubjectID = val +} + +// SetSubjectName sets the value of SubjectName. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetSubjectName(val OptString) { + s.SubjectName = val +} + +// SetPhotos sets the value of Photos. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetPhotos(val []ContentV2GetCardsTrashPostOKCardsItemPhotosItem) { + s.Photos = val +} + +// SetVideo sets the value of Video. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetVideo(val OptString) { + s.Video = val +} + +// SetSizes sets the value of Sizes. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetSizes(val []ContentV2GetCardsTrashPostOKCardsItemSizesItem) { + s.Sizes = val +} + +// SetDimensions sets the value of Dimensions. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetDimensions(val OptContentV2GetCardsTrashPostOKCardsItemDimensions) { + s.Dimensions = val +} + +// SetCharacteristics sets the value of Characteristics. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetCharacteristics(val []ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) { + s.Characteristics = val +} + +// SetCreatedAt sets the value of CreatedAt. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetCreatedAt(val OptString) { + s.CreatedAt = val +} + +// SetTrashedAt sets the value of TrashedAt. +func (s *ContentV2GetCardsTrashPostOKCardsItem) SetTrashedAt(val OptString) { + s.TrashedAt = val +} + +type ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem struct { + // ID характСристики. + ID OptInt `json:"id"` + // НазваниС характСристики. + Name OptString `json:"name"` + // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ характСристики. Π’ΠΈΠΏ значСния зависит ΠΎΡ‚ + // Ρ‚ΠΈΠΏΠ° характСристики. + Value jx.Raw `json:"value"` +} + +// GetID returns the value of ID. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) GetID() OptInt { + return s.ID +} + +// GetName returns the value of Name. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) GetName() OptString { + return s.Name +} + +// GetValue returns the value of Value. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) GetValue() jx.Raw { + return s.Value +} + +// SetID sets the value of ID. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) SetID(val OptInt) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) SetName(val OptString) { + s.Name = val +} + +// SetValue sets the value of Value. +func (s *ContentV2GetCardsTrashPostOKCardsItemCharacteristicsItem) SetValue(val jx.Raw) { + s.Value = val +} + +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ ΠΈ вСс Ρ‚ΠΎΠ²Π°Ρ€Π° c ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, см ΠΈ ΠΊΠ³. +type ContentV2GetCardsTrashPostOKCardsItemDimensions struct { + // Π”Π»ΠΈΠ½Π°, см. + Length OptInt `json:"length"` + // Π¨ΠΈΡ€ΠΈΠ½Π°, см. + Width OptInt `json:"width"` + // Высота, см. + Height OptInt `json:"height"` + // ВСс, ΠΊΠ³
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠ² послС запятой <=3. + WeightBrutto OptFloat64 `json:"weightBrutto"` + // ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π³Π°Π±Π°Ρ€ΠΈΡ‚ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°: + // - `true` β€” Π½Π΅ выявлСна. `"isValid":true` Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ + // Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях + // (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) + // `"isValid":true` Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… значСниях, + // ΠΊΡ€ΠΎΠΌΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…. + // - `false` β€” ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π³Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ + // срСдних ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ). РСкомСндуСтся + // ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π° Π² + // ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ **Π² сантимСтрах**. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ + // Ρ‚ΠΎΠ²Π°Ρ€Π°, Π² Ρ‚ΠΎΠΌ числС начислСниС логистики ΠΈ хранСния, + // ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Логистика ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ + // ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ β€” ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°ΠΌ. Π’Π°ΠΊΠΆΠ΅ + // `"isValid":false` возвращаСтся ΠΏΡ€ΠΈ отсутствии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ + // Π½ΡƒΠ»Π΅Π²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ любой стороны. + IsValid OptBool `json:"isValid"` +} + +// GetLength returns the value of Length. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) GetLength() OptInt { + return s.Length +} + +// GetWidth returns the value of Width. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) GetWidth() OptInt { + return s.Width +} + +// GetHeight returns the value of Height. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) GetHeight() OptInt { + return s.Height +} + +// GetWeightBrutto returns the value of WeightBrutto. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) GetWeightBrutto() OptFloat64 { + return s.WeightBrutto +} + +// GetIsValid returns the value of IsValid. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) GetIsValid() OptBool { + return s.IsValid +} + +// SetLength sets the value of Length. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) SetLength(val OptInt) { + s.Length = val +} + +// SetWidth sets the value of Width. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) SetWidth(val OptInt) { + s.Width = val +} + +// SetHeight sets the value of Height. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) SetHeight(val OptInt) { + s.Height = val +} + +// SetWeightBrutto sets the value of WeightBrutto. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) SetWeightBrutto(val OptFloat64) { + s.WeightBrutto = val +} + +// SetIsValid sets the value of IsValid. +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) SetIsValid(val OptBool) { + s.IsValid = val +} + +type ContentV2GetCardsTrashPostOKCardsItemPhotosItem struct { + // URL Ρ„ΠΎΡ‚ΠΎ `900Ρ…1200`. + Big OptString `json:"big"` + // URL Ρ„ΠΎΡ‚ΠΎ `248Ρ…328`. + C246x328 OptString `json:"c246x328"` + // URL Ρ„ΠΎΡ‚ΠΎ `516Ρ…688`. + C516x688 OptString `json:"c516x688"` + // URL Ρ„ΠΎΡ‚ΠΎ `600Ρ…600`. + Square OptString `json:"square"` + // URL Ρ„ΠΎΡ‚ΠΎ `75Ρ…100`. + Tm OptString `json:"tm"` +} + +// GetBig returns the value of Big. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) GetBig() OptString { + return s.Big +} + +// GetC246x328 returns the value of C246x328. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) GetC246x328() OptString { + return s.C246x328 +} + +// GetC516x688 returns the value of C516x688. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) GetC516x688() OptString { + return s.C516x688 +} + +// GetSquare returns the value of Square. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) GetSquare() OptString { + return s.Square +} + +// GetTm returns the value of Tm. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) GetTm() OptString { + return s.Tm +} + +// SetBig sets the value of Big. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) SetBig(val OptString) { + s.Big = val +} + +// SetC246x328 sets the value of C246x328. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) SetC246x328(val OptString) { + s.C246x328 = val +} + +// SetC516x688 sets the value of C516x688. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) SetC516x688(val OptString) { + s.C516x688 = val +} + +// SetSquare sets the value of Square. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) SetSquare(val OptString) { + s.Square = val +} + +// SetTm sets the value of Tm. +func (s *ContentV2GetCardsTrashPostOKCardsItemPhotosItem) SetTm(val OptString) { + s.Tm = val +} + +type ContentV2GetCardsTrashPostOKCardsItemSizesItem struct { + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. + ChrtID OptInt `json:"chrtID"` + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + TechSize OptString `json:"techSize"` + // Российский Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + WbSize OptString `json:"wbSize"` + // Массив Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + Skus []string `json:"skus"` +} + +// GetChrtID returns the value of ChrtID. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) GetChrtID() OptInt { + return s.ChrtID +} + +// GetTechSize returns the value of TechSize. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) GetTechSize() OptString { + return s.TechSize +} + +// GetWbSize returns the value of WbSize. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) GetWbSize() OptString { + return s.WbSize +} + +// GetSkus returns the value of Skus. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) GetSkus() []string { + return s.Skus +} + +// SetChrtID sets the value of ChrtID. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) SetChrtID(val OptInt) { + s.ChrtID = val +} + +// SetTechSize sets the value of TechSize. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) SetTechSize(val OptString) { + s.TechSize = val +} + +// SetWbSize sets the value of WbSize. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) SetWbSize(val OptString) { + s.WbSize = val +} + +// SetSkus sets the value of Skus. +func (s *ContentV2GetCardsTrashPostOKCardsItemSizesItem) SetSkus(val []string) { + s.Skus = val +} + +// ΠŸΠ°Π³ΠΈΠ½Π°Ρ‚ΠΎΡ€. +type ContentV2GetCardsTrashPostOKCursor struct { + // Π”Π°Ρ‚Π° ΠΈ врСмя, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ + // список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + TrashedAt OptString `json:"trashedAt"` + // Артикул WB, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ + // список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + NmID OptInt `json:"nmID"` + // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + Total OptInt `json:"total"` +} + +// GetTrashedAt returns the value of TrashedAt. +func (s *ContentV2GetCardsTrashPostOKCursor) GetTrashedAt() OptString { + return s.TrashedAt +} + +// GetNmID returns the value of NmID. +func (s *ContentV2GetCardsTrashPostOKCursor) GetNmID() OptInt { + return s.NmID +} + +// GetTotal returns the value of Total. +func (s *ContentV2GetCardsTrashPostOKCursor) GetTotal() OptInt { + return s.Total +} + +// SetTrashedAt sets the value of TrashedAt. +func (s *ContentV2GetCardsTrashPostOKCursor) SetTrashedAt(val OptString) { + s.TrashedAt = val +} + +// SetNmID sets the value of NmID. +func (s *ContentV2GetCardsTrashPostOKCursor) SetNmID(val OptInt) { + s.NmID = val +} + +// SetTotal sets the value of Total. +func (s *ContentV2GetCardsTrashPostOKCursor) SetTotal(val OptInt) { + s.Total = val +} + +type ContentV2GetCardsTrashPostReq struct { + // Настройки. + Settings OptContentV2GetCardsTrashPostReqSettings `json:"settings"` +} + +// GetSettings returns the value of Settings. +func (s *ContentV2GetCardsTrashPostReq) GetSettings() OptContentV2GetCardsTrashPostReqSettings { + return s.Settings +} + +// SetSettings sets the value of Settings. +func (s *ContentV2GetCardsTrashPostReq) SetSettings(val OptContentV2GetCardsTrashPostReqSettings) { + s.Settings = val +} + +// Настройки. +type ContentV2GetCardsTrashPostReqSettings struct { + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки. + Sort OptContentV2GetCardsTrashPostReqSettingsSort `json:"sort"` + // ΠšΡƒΡ€ΡΠΎΡ€. + Cursor OptContentV2GetCardsTrashPostReqSettingsCursor `json:"cursor"` + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. + Filter OptContentV2GetCardsTrashPostReqSettingsFilter `json:"filter"` +} + +// GetSort returns the value of Sort. +func (s *ContentV2GetCardsTrashPostReqSettings) GetSort() OptContentV2GetCardsTrashPostReqSettingsSort { + return s.Sort +} + +// GetCursor returns the value of Cursor. +func (s *ContentV2GetCardsTrashPostReqSettings) GetCursor() OptContentV2GetCardsTrashPostReqSettingsCursor { + return s.Cursor +} + +// GetFilter returns the value of Filter. +func (s *ContentV2GetCardsTrashPostReqSettings) GetFilter() OptContentV2GetCardsTrashPostReqSettingsFilter { + return s.Filter +} + +// SetSort sets the value of Sort. +func (s *ContentV2GetCardsTrashPostReqSettings) SetSort(val OptContentV2GetCardsTrashPostReqSettingsSort) { + s.Sort = val +} + +// SetCursor sets the value of Cursor. +func (s *ContentV2GetCardsTrashPostReqSettings) SetCursor(val OptContentV2GetCardsTrashPostReqSettingsCursor) { + s.Cursor = val +} + +// SetFilter sets the value of Filter. +func (s *ContentV2GetCardsTrashPostReqSettings) SetFilter(val OptContentV2GetCardsTrashPostReqSettingsFilter) { + s.Filter = val +} + +// ΠšΡƒΡ€ΡΠΎΡ€. +type ContentV2GetCardsTrashPostReqSettingsCursor struct { + // Бколько ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅. + Limit OptInt `json:"limit"` +} + +// GetLimit returns the value of Limit. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) GetLimit() OptInt { + return s.Limit +} + +// SetLimit sets the value of Limit. +func (s *ContentV2GetCardsTrashPostReqSettingsCursor) SetLimit(val OptInt) { + s.Limit = val +} + +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. +type ContentV2GetCardsTrashPostReqSettingsFilter struct { + // Поиск ΠΏΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ WB, Π±Π°Ρ€ΠΊΠΎΠ΄Ρƒ. + TextSearch OptString `json:"textSearch"` +} + +// GetTextSearch returns the value of TextSearch. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) GetTextSearch() OptString { + return s.TextSearch +} + +// SetTextSearch sets the value of TextSearch. +func (s *ContentV2GetCardsTrashPostReqSettingsFilter) SetTextSearch(val OptString) { + s.TextSearch = val +} + +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сортировки. +type ContentV2GetCardsTrashPostReqSettingsSort struct { + // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ `trashedAt` (`false` - ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, `true` - ΠΏΠΎ + // Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ). + Ascending OptBool `json:"ascending"` +} + +// GetAscending returns the value of Ascending. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) GetAscending() OptBool { + return s.Ascending +} + +// SetAscending sets the value of Ascending. +func (s *ContentV2GetCardsTrashPostReqSettingsSort) SetAscending(val OptBool) { + s.Ascending = val +} + +type ContentV2ObjectAllGetOK struct { + // ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹. + Data []ContentV2ObjectAllGetOKDataItem `json:"data"` + // Π€Π»Π°Π³ наличия ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2ObjectAllGetOK) GetData() []ContentV2ObjectAllGetOKDataItem { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2ObjectAllGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2ObjectAllGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2ObjectAllGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2ObjectAllGetOK) SetData(val []ContentV2ObjectAllGetOKDataItem) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2ObjectAllGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2ObjectAllGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2ObjectAllGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2ObjectAllGetOK) contentV2ObjectAllGetRes() {} + +type ContentV2ObjectAllGetOKDataItem struct { + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID OptInt `json:"subjectID"` + // ID Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. + ParentID OptInt `json:"parentID"` + // НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectName OptString `json:"subjectName"` + // НазваниС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. + ParentName OptString `json:"parentName"` +} + +// GetSubjectID returns the value of SubjectID. +func (s *ContentV2ObjectAllGetOKDataItem) GetSubjectID() OptInt { + return s.SubjectID +} + +// GetParentID returns the value of ParentID. +func (s *ContentV2ObjectAllGetOKDataItem) GetParentID() OptInt { + return s.ParentID +} + +// GetSubjectName returns the value of SubjectName. +func (s *ContentV2ObjectAllGetOKDataItem) GetSubjectName() OptString { + return s.SubjectName +} + +// GetParentName returns the value of ParentName. +func (s *ContentV2ObjectAllGetOKDataItem) GetParentName() OptString { + return s.ParentName +} + +// SetSubjectID sets the value of SubjectID. +func (s *ContentV2ObjectAllGetOKDataItem) SetSubjectID(val OptInt) { + s.SubjectID = val +} + +// SetParentID sets the value of ParentID. +func (s *ContentV2ObjectAllGetOKDataItem) SetParentID(val OptInt) { + s.ParentID = val +} + +// SetSubjectName sets the value of SubjectName. +func (s *ContentV2ObjectAllGetOKDataItem) SetSubjectName(val OptString) { + s.SubjectName = val +} + +// SetParentName sets the value of ParentName. +func (s *ContentV2ObjectAllGetOKDataItem) SetParentName(val OptString) { + s.ParentName = val +} + +type ContentV2ObjectCharcsSubjectIdGetOK struct { + // Π”Π°Π½Π½Ρ‹Π΅. + Data []ContentV2ObjectCharcsSubjectIdGetOKDataItem `json:"data"` + // Π€Π»Π°Π³ наличия ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) GetData() []ContentV2ObjectCharcsSubjectIdGetOKDataItem { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) SetData(val []ContentV2ObjectCharcsSubjectIdGetOKDataItem) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2ObjectCharcsSubjectIdGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2ObjectCharcsSubjectIdGetOK) contentV2ObjectCharcsSubjectIdGetRes() {} + +type ContentV2ObjectCharcsSubjectIdGetOKDataItem struct { + // ID характСристики. + CharcID OptInt `json:"charcID"` + // НазваниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectName OptString `json:"subjectName"` + // ID ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. + SubjectID OptInt `json:"subjectID"` + // НазваниС характСристики. + Name OptString `json:"name"` + // True - характСристику Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. false - характСристику Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ + // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ. + Required OptBool `json:"required"` + // Π•Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния. + UnitName OptString `json:"unitName"` + // МаксимальноС ΠΊΠΎΠ»-Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ характСристикС. + // Если 0, Ρ‚ΠΎ Π½Π΅Ρ‚ ограничСния. + MaxCount OptInt `json:"maxCount"` + // Π₯арактСристика популярна Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (true - Π΄Π°, false + // - Π½Π΅Ρ‚). + Popular OptBool `json:"popular"` + // Π’ΠΈΠΏ характСристики (1 ΠΈ 0 - строка ΠΈΠ»ΠΈ массив строк; 4 - + // число ΠΈΠ»ΠΈ массив чисСл). + CharcType OptInt `json:"charcType"` +} + +// GetCharcID returns the value of CharcID. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetCharcID() OptInt { + return s.CharcID +} + +// GetSubjectName returns the value of SubjectName. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetSubjectName() OptString { + return s.SubjectName +} + +// GetSubjectID returns the value of SubjectID. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetSubjectID() OptInt { + return s.SubjectID +} + +// GetName returns the value of Name. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetName() OptString { + return s.Name +} + +// GetRequired returns the value of Required. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetRequired() OptBool { + return s.Required +} + +// GetUnitName returns the value of UnitName. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetUnitName() OptString { + return s.UnitName +} + +// GetMaxCount returns the value of MaxCount. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetMaxCount() OptInt { + return s.MaxCount +} + +// GetPopular returns the value of Popular. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetPopular() OptBool { + return s.Popular +} + +// GetCharcType returns the value of CharcType. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) GetCharcType() OptInt { + return s.CharcType +} + +// SetCharcID sets the value of CharcID. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetCharcID(val OptInt) { + s.CharcID = val +} + +// SetSubjectName sets the value of SubjectName. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetSubjectName(val OptString) { + s.SubjectName = val +} + +// SetSubjectID sets the value of SubjectID. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetSubjectID(val OptInt) { + s.SubjectID = val +} + +// SetName sets the value of Name. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetName(val OptString) { + s.Name = val +} + +// SetRequired sets the value of Required. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetRequired(val OptBool) { + s.Required = val +} + +// SetUnitName sets the value of UnitName. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetUnitName(val OptString) { + s.UnitName = val +} + +// SetMaxCount sets the value of MaxCount. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetMaxCount(val OptInt) { + s.MaxCount = val +} + +// SetPopular sets the value of Popular. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetPopular(val OptBool) { + s.Popular = val +} + +// SetCharcType sets the value of CharcType. +func (s *ContentV2ObjectCharcsSubjectIdGetOKDataItem) SetCharcType(val OptInt) { + s.CharcType = val +} + +type ContentV2ObjectParentAllGetOK struct { + Data jx.Raw `json:"data"` + // Π€Π»Π°Π³ наличия ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2ObjectParentAllGetOK) GetData() jx.Raw { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2ObjectParentAllGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2ObjectParentAllGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2ObjectParentAllGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2ObjectParentAllGetOK) SetData(val jx.Raw) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2ObjectParentAllGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2ObjectParentAllGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2ObjectParentAllGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2ObjectParentAllGetOK) contentV2ObjectParentAllGetRes() {} + +type ContentV2TagNomenclatureLinkPostReq struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // Массив числовых ID ярлыков.
+ // Π§Ρ‚ΠΎ Π±Ρ‹ ΡΠ½ΡΡ‚ΡŒ ярлыки с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ + // ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ пустой массив.
+ // Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ярлыки ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ + // Ρ‚ΠΎΠ²Π°Ρ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² запросС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ярлыки ΠΈ + // ярлыки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + TagsIDs []int `json:"tagsIDs"` +} + +// GetNmID returns the value of NmID. +func (s *ContentV2TagNomenclatureLinkPostReq) GetNmID() OptInt { + return s.NmID +} + +// GetTagsIDs returns the value of TagsIDs. +func (s *ContentV2TagNomenclatureLinkPostReq) GetTagsIDs() []int { + return s.TagsIDs +} + +// SetNmID sets the value of NmID. +func (s *ContentV2TagNomenclatureLinkPostReq) SetNmID(val OptInt) { + s.NmID = val +} + +// SetTagsIDs sets the value of TagsIDs. +func (s *ContentV2TagNomenclatureLinkPostReq) SetTagsIDs(val []int) { + s.TagsIDs = val +} + +type ContentV2TagsGetOK struct { + Data jx.Raw `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV2TagsGetOK) GetData() jx.Raw { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV2TagsGetOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV2TagsGetOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV2TagsGetOK) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV2TagsGetOK) SetData(val jx.Raw) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV2TagsGetOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV2TagsGetOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV2TagsGetOK) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ContentV2TagsGetOK) contentV2TagsGetRes() {} + +type ContentV3MediaFilePostApplicationJSONBadRequest MediaErrors + +func (*ContentV3MediaFilePostApplicationJSONBadRequest) contentV3MediaFilePostRes() {} + +type ContentV3MediaFilePostBadRequestPlainText struct { + Data io.Reader +} + +// Read reads data from the Data reader. +// +// Kept to satisfy the io.Reader interface. +func (s ContentV3MediaFilePostBadRequestPlainText) Read(p []byte) (n int, err error) { + if s.Data == nil { + return 0, io.EOF + } + return s.Data.Read(p) +} + +func (*ContentV3MediaFilePostBadRequestPlainText) contentV3MediaFilePostRes() {} + +type ContentV3MediaFilePostForbidden MediaErrors + +func (*ContentV3MediaFilePostForbidden) contentV3MediaFilePostRes() {} + +type ContentV3MediaFilePostOK struct { + Data *ContentV3MediaFilePostOKData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptContentV3MediaFilePostOKAdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV3MediaFilePostOK) GetData() *ContentV3MediaFilePostOKData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV3MediaFilePostOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV3MediaFilePostOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV3MediaFilePostOK) GetAdditionalErrors() OptContentV3MediaFilePostOKAdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV3MediaFilePostOK) SetData(val *ContentV3MediaFilePostOKData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV3MediaFilePostOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV3MediaFilePostOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV3MediaFilePostOK) SetAdditionalErrors(val OptContentV3MediaFilePostOKAdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ContentV3MediaFilePostOK) contentV3MediaFilePostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ContentV3MediaFilePostOKAdditionalErrors struct{} + +type ContentV3MediaFilePostOKData struct{} + +type ContentV3MediaFilePostReq struct { + Uploadfile OptMultipartFile `json:"uploadfile"` +} + +// GetUploadfile returns the value of Uploadfile. +func (s *ContentV3MediaFilePostReq) GetUploadfile() OptMultipartFile { + return s.Uploadfile +} + +// SetUploadfile sets the value of Uploadfile. +func (s *ContentV3MediaFilePostReq) SetUploadfile(val OptMultipartFile) { + s.Uploadfile = val +} + +type ContentV3MediaSavePostBadRequest MediaErrors + +func (*ContentV3MediaSavePostBadRequest) contentV3MediaSavePostRes() {} + +type ContentV3MediaSavePostConflict MediaErrors + +func (*ContentV3MediaSavePostConflict) contentV3MediaSavePostRes() {} + +type ContentV3MediaSavePostForbidden MediaErrors + +func (*ContentV3MediaSavePostForbidden) contentV3MediaSavePostRes() {} + +type ContentV3MediaSavePostOK struct { + Data *ContentV3MediaSavePostOKData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptContentV3MediaSavePostOKAdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ContentV3MediaSavePostOK) GetData() *ContentV3MediaSavePostOKData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ContentV3MediaSavePostOK) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ContentV3MediaSavePostOK) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ContentV3MediaSavePostOK) GetAdditionalErrors() OptContentV3MediaSavePostOKAdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ContentV3MediaSavePostOK) SetData(val *ContentV3MediaSavePostOKData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ContentV3MediaSavePostOK) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ContentV3MediaSavePostOK) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ContentV3MediaSavePostOK) SetAdditionalErrors(val OptContentV3MediaSavePostOKAdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ContentV3MediaSavePostOK) contentV3MediaSavePostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ContentV3MediaSavePostOKAdditionalErrors struct{} + +type ContentV3MediaSavePostOKData struct{} + +type ContentV3MediaSavePostReq struct { + // Артикул WB. + NmId OptInt `json:"nmId"` + // Бсылки Π½Π° изобраТСния Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ + // Π±ΡƒΠ΄ΡƒΡ‚ Π²Β ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, Π½Π° любой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ + // массива. + Data []string `json:"data"` +} + +// GetNmId returns the value of NmId. +func (s *ContentV3MediaSavePostReq) GetNmId() OptInt { + return s.NmId +} + +// GetData returns the value of Data. +func (s *ContentV3MediaSavePostReq) GetData() []string { + return s.Data +} + +// SetNmId sets the value of NmId. +func (s *ContentV3MediaSavePostReq) SetNmId(val OptInt) { + s.NmId = val +} + +// SetData sets the value of Data. +func (s *ContentV3MediaSavePostReq) SetData(val []string) { + s.Data = val +} + +type ContentV3MediaSavePostUnprocessableEntity MediaErrors + +func (*ContentV3MediaSavePostUnprocessableEntity) contentV3MediaSavePostRes() {} + +// Ref: #/components/schemas/Error +type Error struct { + // Код ошибки. + Code OptString `json:"code"` + // ОписаниС ошибки. + Message OptString `json:"message"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. + Data OptErrorData `json:"data"` +} + +// GetCode returns the value of Code. +func (s *Error) GetCode() OptString { + return s.Code +} + +// GetMessage returns the value of Message. +func (s *Error) GetMessage() OptString { + return s.Message +} + +// GetData returns the value of Data. +func (s *Error) GetData() OptErrorData { + return s.Data +} + +// SetCode sets the value of Code. +func (s *Error) SetCode(val OptString) { + s.Code = val +} + +// SetMessage sets the value of Message. +func (s *Error) SetMessage(val OptString) { + s.Message = val +} + +// SetData sets the value of Data. +func (s *Error) SetData(val OptErrorData) { + s.Data = val +} + +func (*Error) aPIV3OfficesGetRes() {} +func (*Error) aPIV3WarehousesGetRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. +type ErrorData struct{} + +// Ref: #/components/schemas/Good +type Good struct { + // Артикул WB. + NmID int `json:"nmID"` + // Π¦Π΅Π½Π°. Π’Π°Π»ΡŽΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° + // [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎΒ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](. + // /work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ + // `currencyIsoCode4217`. + Price OptInt `json:"price"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ°,Β %. + Discount OptInt `json:"discount"` +} + +// GetNmID returns the value of NmID. +func (s *Good) GetNmID() int { + return s.NmID +} + +// GetPrice returns the value of Price. +func (s *Good) GetPrice() OptInt { + return s.Price +} + +// GetDiscount returns the value of Discount. +func (s *Good) GetDiscount() OptInt { + return s.Discount +} + +// SetNmID sets the value of NmID. +func (s *Good) SetNmID(val int) { + s.NmID = val +} + +// SetPrice sets the value of Price. +func (s *Good) SetPrice(val OptInt) { + s.Price = val +} + +// SetDiscount sets the value of Discount. +func (s *Good) SetDiscount(val OptInt) { + s.Discount = val +} + +// Ref: #/components/schemas/GoodBufferHistory +type GoodBufferHistory struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`. + SizeID OptInt `json:"sizeID"` + // Π Π°Π·ΠΌΠ΅Ρ€. + TechSizeName OptString `json:"techSizeName"` + // Π¦Π΅Π½Π°. + Price OptInt `json:"price"` + // Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217. + CurrencyIsoCode4217 OptString `json:"currencyIsoCode4217"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ°,Β %. + Discount OptInt `json:"discount"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,Β %. + ClubDiscount OptInt `json:"clubDiscount"` + Status OptGoodStatusBuffer `json:"status"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetNmID returns the value of NmID. +func (s *GoodBufferHistory) GetNmID() OptInt { + return s.NmID +} + +// GetVendorCode returns the value of VendorCode. +func (s *GoodBufferHistory) GetVendorCode() OptString { + return s.VendorCode +} + +// GetSizeID returns the value of SizeID. +func (s *GoodBufferHistory) GetSizeID() OptInt { + return s.SizeID +} + +// GetTechSizeName returns the value of TechSizeName. +func (s *GoodBufferHistory) GetTechSizeName() OptString { + return s.TechSizeName +} + +// GetPrice returns the value of Price. +func (s *GoodBufferHistory) GetPrice() OptInt { + return s.Price +} + +// GetCurrencyIsoCode4217 returns the value of CurrencyIsoCode4217. +func (s *GoodBufferHistory) GetCurrencyIsoCode4217() OptString { + return s.CurrencyIsoCode4217 +} + +// GetDiscount returns the value of Discount. +func (s *GoodBufferHistory) GetDiscount() OptInt { + return s.Discount +} + +// GetClubDiscount returns the value of ClubDiscount. +func (s *GoodBufferHistory) GetClubDiscount() OptInt { + return s.ClubDiscount +} + +// GetStatus returns the value of Status. +func (s *GoodBufferHistory) GetStatus() OptGoodStatusBuffer { + return s.Status +} + +// GetErrorText returns the value of ErrorText. +func (s *GoodBufferHistory) GetErrorText() OptString { + return s.ErrorText +} + +// SetNmID sets the value of NmID. +func (s *GoodBufferHistory) SetNmID(val OptInt) { + s.NmID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *GoodBufferHistory) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetSizeID sets the value of SizeID. +func (s *GoodBufferHistory) SetSizeID(val OptInt) { + s.SizeID = val +} + +// SetTechSizeName sets the value of TechSizeName. +func (s *GoodBufferHistory) SetTechSizeName(val OptString) { + s.TechSizeName = val +} + +// SetPrice sets the value of Price. +func (s *GoodBufferHistory) SetPrice(val OptInt) { + s.Price = val +} + +// SetCurrencyIsoCode4217 sets the value of CurrencyIsoCode4217. +func (s *GoodBufferHistory) SetCurrencyIsoCode4217(val OptString) { + s.CurrencyIsoCode4217 = val +} + +// SetDiscount sets the value of Discount. +func (s *GoodBufferHistory) SetDiscount(val OptInt) { + s.Discount = val +} + +// SetClubDiscount sets the value of ClubDiscount. +func (s *GoodBufferHistory) SetClubDiscount(val OptInt) { + s.ClubDiscount = val +} + +// SetStatus sets the value of Status. +func (s *GoodBufferHistory) SetStatus(val OptGoodStatusBuffer) { + s.Status = val +} + +// SetErrorText sets the value of ErrorText. +func (s *GoodBufferHistory) SetErrorText(val OptString) { + s.ErrorText = val +} + +// Ref: #/components/schemas/GoodHistory +type GoodHistory struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`. + SizeID OptInt `json:"sizeID"` + // Π Π°Π·ΠΌΠ΅Ρ€. + TechSizeName OptString `json:"techSizeName"` + // Π¦Π΅Π½Π°. + Price OptInt `json:"price"` + // Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217. + CurrencyIsoCode4217 OptString `json:"currencyIsoCode4217"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ°,Β %. + Discount OptInt `json:"discount"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,Β %. + ClubDiscount OptNilInt `json:"clubDiscount"` + Status OptGoodStatus `json:"status"` + // ВСкст ошибки + //
+ // Ошибка The new price is several times lower than the current price. Item has been + // moved to Price Quarantine Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли новая Ρ†Π΅Π½Π° со + // скидкой хотя Π±Ρ‹ Π²Β 3 Ρ€Π°Π·Π° мСньшС старой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ + // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти + // Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ + //
. + ErrorText OptString `json:"errorText"` +} + +// GetNmID returns the value of NmID. +func (s *GoodHistory) GetNmID() OptInt { + return s.NmID +} + +// GetVendorCode returns the value of VendorCode. +func (s *GoodHistory) GetVendorCode() OptString { + return s.VendorCode +} + +// GetSizeID returns the value of SizeID. +func (s *GoodHistory) GetSizeID() OptInt { + return s.SizeID +} + +// GetTechSizeName returns the value of TechSizeName. +func (s *GoodHistory) GetTechSizeName() OptString { + return s.TechSizeName +} + +// GetPrice returns the value of Price. +func (s *GoodHistory) GetPrice() OptInt { + return s.Price +} + +// GetCurrencyIsoCode4217 returns the value of CurrencyIsoCode4217. +func (s *GoodHistory) GetCurrencyIsoCode4217() OptString { + return s.CurrencyIsoCode4217 +} + +// GetDiscount returns the value of Discount. +func (s *GoodHistory) GetDiscount() OptInt { + return s.Discount +} + +// GetClubDiscount returns the value of ClubDiscount. +func (s *GoodHistory) GetClubDiscount() OptNilInt { + return s.ClubDiscount +} + +// GetStatus returns the value of Status. +func (s *GoodHistory) GetStatus() OptGoodStatus { + return s.Status +} + +// GetErrorText returns the value of ErrorText. +func (s *GoodHistory) GetErrorText() OptString { + return s.ErrorText +} + +// SetNmID sets the value of NmID. +func (s *GoodHistory) SetNmID(val OptInt) { + s.NmID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *GoodHistory) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetSizeID sets the value of SizeID. +func (s *GoodHistory) SetSizeID(val OptInt) { + s.SizeID = val +} + +// SetTechSizeName sets the value of TechSizeName. +func (s *GoodHistory) SetTechSizeName(val OptString) { + s.TechSizeName = val +} + +// SetPrice sets the value of Price. +func (s *GoodHistory) SetPrice(val OptInt) { + s.Price = val +} + +// SetCurrencyIsoCode4217 sets the value of CurrencyIsoCode4217. +func (s *GoodHistory) SetCurrencyIsoCode4217(val OptString) { + s.CurrencyIsoCode4217 = val +} + +// SetDiscount sets the value of Discount. +func (s *GoodHistory) SetDiscount(val OptInt) { + s.Discount = val +} + +// SetClubDiscount sets the value of ClubDiscount. +func (s *GoodHistory) SetClubDiscount(val OptNilInt) { + s.ClubDiscount = val +} + +// SetStatus sets the value of Status. +func (s *GoodHistory) SetStatus(val OptGoodStatus) { + s.Status = val +} + +// SetErrorText sets the value of ErrorText. +func (s *GoodHistory) SetErrorText(val OptString) { + s.ErrorText = val +} + +type GoodStatus int + +type GoodStatusBuffer int + +type Goods []Good + +// Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// Ref: #/components/schemas/GoodsList +type GoodsList struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // Π Π°Π·ΠΌΠ΅Ρ€. + Sizes []GoodsListSizesItem `json:"sizes"` + // Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217. + CurrencyIsoCode4217 OptString `json:"currencyIsoCode4217"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ°,Β %. + Discount OptInt `json:"discount"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,Β %. + ClubDiscount OptInt `json:"clubDiscount"` + // МоТно Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… + // Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²: `true`Β β€” ΠΌΠΎΠΆΠ½ΠΎ, `false`Β β€” нСльзя. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ + // зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + EditableSizePrice OptBool `json:"editableSizePrice"` +} + +// GetNmID returns the value of NmID. +func (s *GoodsList) GetNmID() OptInt { + return s.NmID +} + +// GetVendorCode returns the value of VendorCode. +func (s *GoodsList) GetVendorCode() OptString { + return s.VendorCode +} + +// GetSizes returns the value of Sizes. +func (s *GoodsList) GetSizes() []GoodsListSizesItem { + return s.Sizes +} + +// GetCurrencyIsoCode4217 returns the value of CurrencyIsoCode4217. +func (s *GoodsList) GetCurrencyIsoCode4217() OptString { + return s.CurrencyIsoCode4217 +} + +// GetDiscount returns the value of Discount. +func (s *GoodsList) GetDiscount() OptInt { + return s.Discount +} + +// GetClubDiscount returns the value of ClubDiscount. +func (s *GoodsList) GetClubDiscount() OptInt { + return s.ClubDiscount +} + +// GetEditableSizePrice returns the value of EditableSizePrice. +func (s *GoodsList) GetEditableSizePrice() OptBool { + return s.EditableSizePrice +} + +// SetNmID sets the value of NmID. +func (s *GoodsList) SetNmID(val OptInt) { + s.NmID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *GoodsList) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetSizes sets the value of Sizes. +func (s *GoodsList) SetSizes(val []GoodsListSizesItem) { + s.Sizes = val +} + +// SetCurrencyIsoCode4217 sets the value of CurrencyIsoCode4217. +func (s *GoodsList) SetCurrencyIsoCode4217(val OptString) { + s.CurrencyIsoCode4217 = val +} + +// SetDiscount sets the value of Discount. +func (s *GoodsList) SetDiscount(val OptInt) { + s.Discount = val +} + +// SetClubDiscount sets the value of ClubDiscount. +func (s *GoodsList) SetClubDiscount(val OptInt) { + s.ClubDiscount = val +} + +// SetEditableSizePrice sets the value of EditableSizePrice. +func (s *GoodsList) SetEditableSizePrice(val OptBool) { + s.EditableSizePrice = val +} + +type GoodsListSizesItem struct { + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`. + SizeID OptInt64 `json:"sizeID"` + // Π¦Π΅Π½Π°. + Price OptInt `json:"price"` + // Π¦Π΅Π½Π° со скидкой. + DiscountedPrice OptFloat64 `json:"discountedPrice"` + // Π¦Π΅Π½Π° со скидкой, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ скидку WB ΠšΠ»ΡƒΠ±Π°. + ClubDiscountedPrice OptFloat64 `json:"clubDiscountedPrice"` + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + TechSizeName OptString `json:"techSizeName"` +} + +// GetSizeID returns the value of SizeID. +func (s *GoodsListSizesItem) GetSizeID() OptInt64 { + return s.SizeID +} + +// GetPrice returns the value of Price. +func (s *GoodsListSizesItem) GetPrice() OptInt { + return s.Price +} + +// GetDiscountedPrice returns the value of DiscountedPrice. +func (s *GoodsListSizesItem) GetDiscountedPrice() OptFloat64 { + return s.DiscountedPrice +} + +// GetClubDiscountedPrice returns the value of ClubDiscountedPrice. +func (s *GoodsListSizesItem) GetClubDiscountedPrice() OptFloat64 { + return s.ClubDiscountedPrice +} + +// GetTechSizeName returns the value of TechSizeName. +func (s *GoodsListSizesItem) GetTechSizeName() OptString { + return s.TechSizeName +} + +// SetSizeID sets the value of SizeID. +func (s *GoodsListSizesItem) SetSizeID(val OptInt64) { + s.SizeID = val +} + +// SetPrice sets the value of Price. +func (s *GoodsListSizesItem) SetPrice(val OptInt) { + s.Price = val +} + +// SetDiscountedPrice sets the value of DiscountedPrice. +func (s *GoodsListSizesItem) SetDiscountedPrice(val OptFloat64) { + s.DiscountedPrice = val +} + +// SetClubDiscountedPrice sets the value of ClubDiscountedPrice. +func (s *GoodsListSizesItem) SetClubDiscountedPrice(val OptFloat64) { + s.ClubDiscountedPrice = val +} + +// SetTechSizeName sets the value of TechSizeName. +func (s *GoodsListSizesItem) SetTechSizeName(val OptString) { + s.TechSizeName = val +} + +type HeaderApiKey struct { + APIKey string + Roles []string +} + +// GetAPIKey returns the value of APIKey. +func (s *HeaderApiKey) GetAPIKey() string { + return s.APIKey +} + +// GetRoles returns the value of Roles. +func (s *HeaderApiKey) GetRoles() []string { + return s.Roles +} + +// SetAPIKey sets the value of APIKey. +func (s *HeaderApiKey) SetAPIKey(val string) { + s.APIKey = val +} + +// SetRoles sets the value of Roles. +func (s *HeaderApiKey) SetRoles(val []string) { + s.Roles = val +} + +// Ref: #/components/schemas/mediaErrors +type MediaErrors struct { + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptMediaErrorsAdditionalErrors `json:"additionalErrors"` + Data *MediaErrorsData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *MediaErrors) GetAdditionalErrors() OptMediaErrorsAdditionalErrors { + return s.AdditionalErrors +} + +// GetData returns the value of Data. +func (s *MediaErrors) GetData() *MediaErrorsData { + return s.Data +} + +// GetError returns the value of Error. +func (s *MediaErrors) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *MediaErrors) GetErrorText() OptString { + return s.ErrorText +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *MediaErrors) SetAdditionalErrors(val OptMediaErrorsAdditionalErrors) { + s.AdditionalErrors = val +} + +// SetData sets the value of Data. +func (s *MediaErrors) SetData(val *MediaErrorsData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *MediaErrors) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *MediaErrors) SetErrorText(val OptString) { + s.ErrorText = val +} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type MediaErrorsAdditionalErrors struct{} + +type MediaErrorsData struct{} + +// Π”Π°Π½Π½Ρ‹Π΅ ΠΎ складС WB. +// Ref: #/components/schemas/Office +type Office struct { + // АдрСс. + Address OptString `json:"address"` + // НазваниС. + Name OptString `json:"name"` + // Π“ΠΎΡ€ΠΎΠ΄. + City OptString `json:"city"` + // ID. + ID OptInt64 `json:"id"` + // Π”ΠΎΠ»Π³ΠΎΡ‚Π°. + Longitude OptFloat64 `json:"longitude"` + // Π¨ΠΈΡ€ΠΎΡ‚Π°. + Latitude OptFloat64 `json:"latitude"` + //
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад:
1 - ΠœΠ“Π’ + // (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ + // (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ + // Ρ‚ΠΎΠ²Π°Ρ€)
. + CargoType OptOfficeCargoType `json:"cargoType"` + // Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: + // - `1` β€” доставка Π½Π° склад WB (FBS) + // - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) + // - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) + // - `5` β€” самовывоз (C&C) + // - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS). + DeliveryType OptOfficeDeliveryType `json:"deliveryType"` + // ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ склад ΡƒΠΆΠ΅ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠΌ. + Selected OptBool `json:"selected"` +} + +// GetAddress returns the value of Address. +func (s *Office) GetAddress() OptString { + return s.Address +} + +// GetName returns the value of Name. +func (s *Office) GetName() OptString { + return s.Name +} + +// GetCity returns the value of City. +func (s *Office) GetCity() OptString { + return s.City +} + +// GetID returns the value of ID. +func (s *Office) GetID() OptInt64 { + return s.ID +} + +// GetLongitude returns the value of Longitude. +func (s *Office) GetLongitude() OptFloat64 { + return s.Longitude +} + +// GetLatitude returns the value of Latitude. +func (s *Office) GetLatitude() OptFloat64 { + return s.Latitude +} + +// GetCargoType returns the value of CargoType. +func (s *Office) GetCargoType() OptOfficeCargoType { + return s.CargoType +} + +// GetDeliveryType returns the value of DeliveryType. +func (s *Office) GetDeliveryType() OptOfficeDeliveryType { + return s.DeliveryType +} + +// GetSelected returns the value of Selected. +func (s *Office) GetSelected() OptBool { + return s.Selected +} + +// SetAddress sets the value of Address. +func (s *Office) SetAddress(val OptString) { + s.Address = val +} + +// SetName sets the value of Name. +func (s *Office) SetName(val OptString) { + s.Name = val +} + +// SetCity sets the value of City. +func (s *Office) SetCity(val OptString) { + s.City = val +} + +// SetID sets the value of ID. +func (s *Office) SetID(val OptInt64) { + s.ID = val +} + +// SetLongitude sets the value of Longitude. +func (s *Office) SetLongitude(val OptFloat64) { + s.Longitude = val +} + +// SetLatitude sets the value of Latitude. +func (s *Office) SetLatitude(val OptFloat64) { + s.Latitude = val +} + +// SetCargoType sets the value of CargoType. +func (s *Office) SetCargoType(val OptOfficeCargoType) { + s.CargoType = val +} + +// SetDeliveryType sets the value of DeliveryType. +func (s *Office) SetDeliveryType(val OptOfficeDeliveryType) { + s.DeliveryType = val +} + +// SetSelected sets the value of Selected. +func (s *Office) SetSelected(val OptBool) { + s.Selected = val +} + +//
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад:
1 - ΠœΠ“Π’ +// (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ +// (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ +// Ρ‚ΠΎΠ²Π°Ρ€)
. +type OfficeCargoType int + +const ( + OfficeCargoType1 OfficeCargoType = 1 + OfficeCargoType2 OfficeCargoType = 2 + OfficeCargoType3 OfficeCargoType = 3 +) + +// AllValues returns all OfficeCargoType values. +func (OfficeCargoType) AllValues() []OfficeCargoType { + return []OfficeCargoType{ + OfficeCargoType1, + OfficeCargoType2, + OfficeCargoType3, + } +} + +// Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: +// - `1` β€” доставка Π½Π° склад WB (FBS) +// - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) +// - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) +// - `5` β€” самовывоз (C&C) +// - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS). +type OfficeDeliveryType int + +const ( + OfficeDeliveryType1 OfficeDeliveryType = 1 + OfficeDeliveryType2 OfficeDeliveryType = 2 + OfficeDeliveryType3 OfficeDeliveryType = 3 + OfficeDeliveryType5 OfficeDeliveryType = 5 + OfficeDeliveryType6 OfficeDeliveryType = 6 +) + +// AllValues returns all OfficeDeliveryType values. +func (OfficeDeliveryType) AllValues() []OfficeDeliveryType { + return []OfficeDeliveryType{ + OfficeDeliveryType1, + OfficeDeliveryType2, + OfficeDeliveryType3, + OfficeDeliveryType5, + OfficeDeliveryType6, + } +} + +// NewOptAPIV2BufferGoodsTaskGetBadRequestData returns new OptAPIV2BufferGoodsTaskGetBadRequestData with value set to v. +func NewOptAPIV2BufferGoodsTaskGetBadRequestData(v *APIV2BufferGoodsTaskGetBadRequestData) OptAPIV2BufferGoodsTaskGetBadRequestData { + return OptAPIV2BufferGoodsTaskGetBadRequestData{ + Value: v, + Set: true, + } +} + +// OptAPIV2BufferGoodsTaskGetBadRequestData is optional *APIV2BufferGoodsTaskGetBadRequestData. +type OptAPIV2BufferGoodsTaskGetBadRequestData struct { + Value *APIV2BufferGoodsTaskGetBadRequestData + Set bool +} + +// IsSet returns true if OptAPIV2BufferGoodsTaskGetBadRequestData was set. +func (o OptAPIV2BufferGoodsTaskGetBadRequestData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAPIV2BufferGoodsTaskGetBadRequestData) Reset() { + var v *APIV2BufferGoodsTaskGetBadRequestData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAPIV2BufferGoodsTaskGetBadRequestData) SetTo(v *APIV2BufferGoodsTaskGetBadRequestData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAPIV2BufferGoodsTaskGetBadRequestData) Get() (v *APIV2BufferGoodsTaskGetBadRequestData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAPIV2BufferGoodsTaskGetBadRequestData) Or(d *APIV2BufferGoodsTaskGetBadRequestData) *APIV2BufferGoodsTaskGetBadRequestData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptAPIV2BufferTasksGetBadRequestData returns new OptAPIV2BufferTasksGetBadRequestData with value set to v. +func NewOptAPIV2BufferTasksGetBadRequestData(v *APIV2BufferTasksGetBadRequestData) OptAPIV2BufferTasksGetBadRequestData { + return OptAPIV2BufferTasksGetBadRequestData{ + Value: v, + Set: true, + } +} + +// OptAPIV2BufferTasksGetBadRequestData is optional *APIV2BufferTasksGetBadRequestData. +type OptAPIV2BufferTasksGetBadRequestData struct { + Value *APIV2BufferTasksGetBadRequestData + Set bool +} + +// IsSet returns true if OptAPIV2BufferTasksGetBadRequestData was set. +func (o OptAPIV2BufferTasksGetBadRequestData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAPIV2BufferTasksGetBadRequestData) Reset() { + var v *APIV2BufferTasksGetBadRequestData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAPIV2BufferTasksGetBadRequestData) SetTo(v *APIV2BufferTasksGetBadRequestData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAPIV2BufferTasksGetBadRequestData) Get() (v *APIV2BufferTasksGetBadRequestData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAPIV2BufferTasksGetBadRequestData) Or(d *APIV2BufferTasksGetBadRequestData) *APIV2BufferTasksGetBadRequestData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptAPIV2HistoryGoodsTaskGetBadRequestData returns new OptAPIV2HistoryGoodsTaskGetBadRequestData with value set to v. +func NewOptAPIV2HistoryGoodsTaskGetBadRequestData(v *APIV2HistoryGoodsTaskGetBadRequestData) OptAPIV2HistoryGoodsTaskGetBadRequestData { + return OptAPIV2HistoryGoodsTaskGetBadRequestData{ + Value: v, + Set: true, + } +} + +// OptAPIV2HistoryGoodsTaskGetBadRequestData is optional *APIV2HistoryGoodsTaskGetBadRequestData. +type OptAPIV2HistoryGoodsTaskGetBadRequestData struct { + Value *APIV2HistoryGoodsTaskGetBadRequestData + Set bool +} + +// IsSet returns true if OptAPIV2HistoryGoodsTaskGetBadRequestData was set. +func (o OptAPIV2HistoryGoodsTaskGetBadRequestData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAPIV2HistoryGoodsTaskGetBadRequestData) Reset() { + var v *APIV2HistoryGoodsTaskGetBadRequestData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAPIV2HistoryGoodsTaskGetBadRequestData) SetTo(v *APIV2HistoryGoodsTaskGetBadRequestData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAPIV2HistoryGoodsTaskGetBadRequestData) Get() (v *APIV2HistoryGoodsTaskGetBadRequestData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAPIV2HistoryGoodsTaskGetBadRequestData) Or(d *APIV2HistoryGoodsTaskGetBadRequestData) *APIV2HistoryGoodsTaskGetBadRequestData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptAPIV2HistoryTasksGetBadRequestData returns new OptAPIV2HistoryTasksGetBadRequestData with value set to v. +func NewOptAPIV2HistoryTasksGetBadRequestData(v *APIV2HistoryTasksGetBadRequestData) OptAPIV2HistoryTasksGetBadRequestData { + return OptAPIV2HistoryTasksGetBadRequestData{ + Value: v, + Set: true, + } +} + +// OptAPIV2HistoryTasksGetBadRequestData is optional *APIV2HistoryTasksGetBadRequestData. +type OptAPIV2HistoryTasksGetBadRequestData struct { + Value *APIV2HistoryTasksGetBadRequestData + Set bool +} + +// IsSet returns true if OptAPIV2HistoryTasksGetBadRequestData was set. +func (o OptAPIV2HistoryTasksGetBadRequestData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAPIV2HistoryTasksGetBadRequestData) Reset() { + var v *APIV2HistoryTasksGetBadRequestData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAPIV2HistoryTasksGetBadRequestData) SetTo(v *APIV2HistoryTasksGetBadRequestData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAPIV2HistoryTasksGetBadRequestData) Get() (v *APIV2HistoryTasksGetBadRequestData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAPIV2HistoryTasksGetBadRequestData) Or(d *APIV2HistoryTasksGetBadRequestData) *APIV2HistoryTasksGetBadRequestData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptAPIV3StocksWarehouseIdPutReq returns new OptAPIV3StocksWarehouseIdPutReq with value set to v. +func NewOptAPIV3StocksWarehouseIdPutReq(v APIV3StocksWarehouseIdPutReq) OptAPIV3StocksWarehouseIdPutReq { + return OptAPIV3StocksWarehouseIdPutReq{ + Value: v, + Set: true, + } +} + +// OptAPIV3StocksWarehouseIdPutReq is optional APIV3StocksWarehouseIdPutReq. +type OptAPIV3StocksWarehouseIdPutReq struct { + Value APIV3StocksWarehouseIdPutReq + Set bool +} + +// IsSet returns true if OptAPIV3StocksWarehouseIdPutReq was set. +func (o OptAPIV3StocksWarehouseIdPutReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAPIV3StocksWarehouseIdPutReq) Reset() { + var v APIV3StocksWarehouseIdPutReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAPIV3StocksWarehouseIdPutReq) SetTo(v APIV3StocksWarehouseIdPutReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAPIV3StocksWarehouseIdPutReq) Get() (v APIV3StocksWarehouseIdPutReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAPIV3StocksWarehouseIdPutReq) Or(d APIV3StocksWarehouseIdPutReq) APIV3StocksWarehouseIdPutReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptBool returns new OptBool with value set to v. +func NewOptBool(v bool) OptBool { + return OptBool{ + Value: v, + Set: true, + } +} + +// OptBool is optional bool. +type OptBool struct { + Value bool + Set bool +} + +// IsSet returns true if OptBool was set. +func (o OptBool) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptBool) Reset() { + var v bool + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptBool) SetTo(v bool) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptBool) Get() (v bool, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptBool) Or(d bool) bool { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsDeleteTrashPostOKAdditionalErrors returns new OptContentV2CardsDeleteTrashPostOKAdditionalErrors with value set to v. +func NewOptContentV2CardsDeleteTrashPostOKAdditionalErrors(v *ContentV2CardsDeleteTrashPostOKAdditionalErrors) OptContentV2CardsDeleteTrashPostOKAdditionalErrors { + return OptContentV2CardsDeleteTrashPostOKAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsDeleteTrashPostOKAdditionalErrors is optional *ContentV2CardsDeleteTrashPostOKAdditionalErrors. +type OptContentV2CardsDeleteTrashPostOKAdditionalErrors struct { + Value *ContentV2CardsDeleteTrashPostOKAdditionalErrors + Set bool +} + +// IsSet returns true if OptContentV2CardsDeleteTrashPostOKAdditionalErrors was set. +func (o OptContentV2CardsDeleteTrashPostOKAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsDeleteTrashPostOKAdditionalErrors) Reset() { + var v *ContentV2CardsDeleteTrashPostOKAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsDeleteTrashPostOKAdditionalErrors) SetTo(v *ContentV2CardsDeleteTrashPostOKAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsDeleteTrashPostOKAdditionalErrors) Get() (v *ContentV2CardsDeleteTrashPostOKAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsDeleteTrashPostOKAdditionalErrors) Or(d *ContentV2CardsDeleteTrashPostOKAdditionalErrors) *ContentV2CardsDeleteTrashPostOKAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsDeleteTrashPostOKData returns new OptContentV2CardsDeleteTrashPostOKData with value set to v. +func NewOptContentV2CardsDeleteTrashPostOKData(v *ContentV2CardsDeleteTrashPostOKData) OptContentV2CardsDeleteTrashPostOKData { + return OptContentV2CardsDeleteTrashPostOKData{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsDeleteTrashPostOKData is optional *ContentV2CardsDeleteTrashPostOKData. +type OptContentV2CardsDeleteTrashPostOKData struct { + Value *ContentV2CardsDeleteTrashPostOKData + Set bool +} + +// IsSet returns true if OptContentV2CardsDeleteTrashPostOKData was set. +func (o OptContentV2CardsDeleteTrashPostOKData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsDeleteTrashPostOKData) Reset() { + var v *ContentV2CardsDeleteTrashPostOKData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsDeleteTrashPostOKData) SetTo(v *ContentV2CardsDeleteTrashPostOKData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsDeleteTrashPostOKData) Get() (v *ContentV2CardsDeleteTrashPostOKData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsDeleteTrashPostOKData) Or(d *ContentV2CardsDeleteTrashPostOKData) *ContentV2CardsDeleteTrashPostOKData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsLimitsGetOKData returns new OptContentV2CardsLimitsGetOKData with value set to v. +func NewOptContentV2CardsLimitsGetOKData(v ContentV2CardsLimitsGetOKData) OptContentV2CardsLimitsGetOKData { + return OptContentV2CardsLimitsGetOKData{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsLimitsGetOKData is optional ContentV2CardsLimitsGetOKData. +type OptContentV2CardsLimitsGetOKData struct { + Value ContentV2CardsLimitsGetOKData + Set bool +} + +// IsSet returns true if OptContentV2CardsLimitsGetOKData was set. +func (o OptContentV2CardsLimitsGetOKData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsLimitsGetOKData) Reset() { + var v ContentV2CardsLimitsGetOKData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsLimitsGetOKData) SetTo(v ContentV2CardsLimitsGetOKData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsLimitsGetOKData) Get() (v ContentV2CardsLimitsGetOKData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsLimitsGetOKData) Or(d ContentV2CardsLimitsGetOKData) ContentV2CardsLimitsGetOKData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsRecoverPostOKAdditionalErrors returns new OptContentV2CardsRecoverPostOKAdditionalErrors with value set to v. +func NewOptContentV2CardsRecoverPostOKAdditionalErrors(v *ContentV2CardsRecoverPostOKAdditionalErrors) OptContentV2CardsRecoverPostOKAdditionalErrors { + return OptContentV2CardsRecoverPostOKAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsRecoverPostOKAdditionalErrors is optional *ContentV2CardsRecoverPostOKAdditionalErrors. +type OptContentV2CardsRecoverPostOKAdditionalErrors struct { + Value *ContentV2CardsRecoverPostOKAdditionalErrors + Set bool +} + +// IsSet returns true if OptContentV2CardsRecoverPostOKAdditionalErrors was set. +func (o OptContentV2CardsRecoverPostOKAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsRecoverPostOKAdditionalErrors) Reset() { + var v *ContentV2CardsRecoverPostOKAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsRecoverPostOKAdditionalErrors) SetTo(v *ContentV2CardsRecoverPostOKAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsRecoverPostOKAdditionalErrors) Get() (v *ContentV2CardsRecoverPostOKAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsRecoverPostOKAdditionalErrors) Or(d *ContentV2CardsRecoverPostOKAdditionalErrors) *ContentV2CardsRecoverPostOKAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsRecoverPostOKData returns new OptContentV2CardsRecoverPostOKData with value set to v. +func NewOptContentV2CardsRecoverPostOKData(v *ContentV2CardsRecoverPostOKData) OptContentV2CardsRecoverPostOKData { + return OptContentV2CardsRecoverPostOKData{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsRecoverPostOKData is optional *ContentV2CardsRecoverPostOKData. +type OptContentV2CardsRecoverPostOKData struct { + Value *ContentV2CardsRecoverPostOKData + Set bool +} + +// IsSet returns true if OptContentV2CardsRecoverPostOKData was set. +func (o OptContentV2CardsRecoverPostOKData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsRecoverPostOKData) Reset() { + var v *ContentV2CardsRecoverPostOKData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsRecoverPostOKData) SetTo(v *ContentV2CardsRecoverPostOKData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsRecoverPostOKData) Get() (v *ContentV2CardsRecoverPostOKData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsRecoverPostOKData) Or(d *ContentV2CardsRecoverPostOKData) *ContentV2CardsRecoverPostOKData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsUpdatePostReqItemDimensions returns new OptContentV2CardsUpdatePostReqItemDimensions with value set to v. +func NewOptContentV2CardsUpdatePostReqItemDimensions(v ContentV2CardsUpdatePostReqItemDimensions) OptContentV2CardsUpdatePostReqItemDimensions { + return OptContentV2CardsUpdatePostReqItemDimensions{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsUpdatePostReqItemDimensions is optional ContentV2CardsUpdatePostReqItemDimensions. +type OptContentV2CardsUpdatePostReqItemDimensions struct { + Value ContentV2CardsUpdatePostReqItemDimensions + Set bool +} + +// IsSet returns true if OptContentV2CardsUpdatePostReqItemDimensions was set. +func (o OptContentV2CardsUpdatePostReqItemDimensions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsUpdatePostReqItemDimensions) Reset() { + var v ContentV2CardsUpdatePostReqItemDimensions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsUpdatePostReqItemDimensions) SetTo(v ContentV2CardsUpdatePostReqItemDimensions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsUpdatePostReqItemDimensions) Get() (v ContentV2CardsUpdatePostReqItemDimensions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsUpdatePostReqItemDimensions) Or(d ContentV2CardsUpdatePostReqItemDimensions) ContentV2CardsUpdatePostReqItemDimensions { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsUploadAddPostReq returns new OptContentV2CardsUploadAddPostReq with value set to v. +func NewOptContentV2CardsUploadAddPostReq(v ContentV2CardsUploadAddPostReq) OptContentV2CardsUploadAddPostReq { + return OptContentV2CardsUploadAddPostReq{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsUploadAddPostReq is optional ContentV2CardsUploadAddPostReq. +type OptContentV2CardsUploadAddPostReq struct { + Value ContentV2CardsUploadAddPostReq + Set bool +} + +// IsSet returns true if OptContentV2CardsUploadAddPostReq was set. +func (o OptContentV2CardsUploadAddPostReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsUploadAddPostReq) Reset() { + var v ContentV2CardsUploadAddPostReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsUploadAddPostReq) SetTo(v ContentV2CardsUploadAddPostReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsUploadAddPostReq) Get() (v ContentV2CardsUploadAddPostReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsUploadAddPostReq) Or(d ContentV2CardsUploadAddPostReq) ContentV2CardsUploadAddPostReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsUploadAddPostReqCardsToAddItemDimensions returns new OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions with value set to v. +func NewOptContentV2CardsUploadAddPostReqCardsToAddItemDimensions(v ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions { + return OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions is optional ContentV2CardsUploadAddPostReqCardsToAddItemDimensions. +type OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions struct { + Value ContentV2CardsUploadAddPostReqCardsToAddItemDimensions + Set bool +} + +// IsSet returns true if OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions was set. +func (o OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Reset() { + var v ContentV2CardsUploadAddPostReqCardsToAddItemDimensions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) SetTo(v ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Get() (v ContentV2CardsUploadAddPostReqCardsToAddItemDimensions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Or(d ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) ContentV2CardsUploadAddPostReqCardsToAddItemDimensions { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2CardsUploadPostReqItemVariantsItemDimensions returns new OptContentV2CardsUploadPostReqItemVariantsItemDimensions with value set to v. +func NewOptContentV2CardsUploadPostReqItemVariantsItemDimensions(v ContentV2CardsUploadPostReqItemVariantsItemDimensions) OptContentV2CardsUploadPostReqItemVariantsItemDimensions { + return OptContentV2CardsUploadPostReqItemVariantsItemDimensions{ + Value: v, + Set: true, + } +} + +// OptContentV2CardsUploadPostReqItemVariantsItemDimensions is optional ContentV2CardsUploadPostReqItemVariantsItemDimensions. +type OptContentV2CardsUploadPostReqItemVariantsItemDimensions struct { + Value ContentV2CardsUploadPostReqItemVariantsItemDimensions + Set bool +} + +// IsSet returns true if OptContentV2CardsUploadPostReqItemVariantsItemDimensions was set. +func (o OptContentV2CardsUploadPostReqItemVariantsItemDimensions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2CardsUploadPostReqItemVariantsItemDimensions) Reset() { + var v ContentV2CardsUploadPostReqItemVariantsItemDimensions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2CardsUploadPostReqItemVariantsItemDimensions) SetTo(v ContentV2CardsUploadPostReqItemVariantsItemDimensions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2CardsUploadPostReqItemVariantsItemDimensions) Get() (v ContentV2CardsUploadPostReqItemVariantsItemDimensions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2CardsUploadPostReqItemVariantsItemDimensions) Or(d ContentV2CardsUploadPostReqItemVariantsItemDimensions) ContentV2CardsUploadPostReqItemVariantsItemDimensions { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostOKCardsItemDimensions returns new OptContentV2GetCardsListPostOKCardsItemDimensions with value set to v. +func NewOptContentV2GetCardsListPostOKCardsItemDimensions(v ContentV2GetCardsListPostOKCardsItemDimensions) OptContentV2GetCardsListPostOKCardsItemDimensions { + return OptContentV2GetCardsListPostOKCardsItemDimensions{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostOKCardsItemDimensions is optional ContentV2GetCardsListPostOKCardsItemDimensions. +type OptContentV2GetCardsListPostOKCardsItemDimensions struct { + Value ContentV2GetCardsListPostOKCardsItemDimensions + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostOKCardsItemDimensions was set. +func (o OptContentV2GetCardsListPostOKCardsItemDimensions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostOKCardsItemDimensions) Reset() { + var v ContentV2GetCardsListPostOKCardsItemDimensions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostOKCardsItemDimensions) SetTo(v ContentV2GetCardsListPostOKCardsItemDimensions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostOKCardsItemDimensions) Get() (v ContentV2GetCardsListPostOKCardsItemDimensions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostOKCardsItemDimensions) Or(d ContentV2GetCardsListPostOKCardsItemDimensions) ContentV2GetCardsListPostOKCardsItemDimensions { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostOKCursor returns new OptContentV2GetCardsListPostOKCursor with value set to v. +func NewOptContentV2GetCardsListPostOKCursor(v ContentV2GetCardsListPostOKCursor) OptContentV2GetCardsListPostOKCursor { + return OptContentV2GetCardsListPostOKCursor{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostOKCursor is optional ContentV2GetCardsListPostOKCursor. +type OptContentV2GetCardsListPostOKCursor struct { + Value ContentV2GetCardsListPostOKCursor + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostOKCursor was set. +func (o OptContentV2GetCardsListPostOKCursor) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostOKCursor) Reset() { + var v ContentV2GetCardsListPostOKCursor + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostOKCursor) SetTo(v ContentV2GetCardsListPostOKCursor) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostOKCursor) Get() (v ContentV2GetCardsListPostOKCursor, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostOKCursor) Or(d ContentV2GetCardsListPostOKCursor) ContentV2GetCardsListPostOKCursor { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostReqSettings returns new OptContentV2GetCardsListPostReqSettings with value set to v. +func NewOptContentV2GetCardsListPostReqSettings(v ContentV2GetCardsListPostReqSettings) OptContentV2GetCardsListPostReqSettings { + return OptContentV2GetCardsListPostReqSettings{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostReqSettings is optional ContentV2GetCardsListPostReqSettings. +type OptContentV2GetCardsListPostReqSettings struct { + Value ContentV2GetCardsListPostReqSettings + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostReqSettings was set. +func (o OptContentV2GetCardsListPostReqSettings) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostReqSettings) Reset() { + var v ContentV2GetCardsListPostReqSettings + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostReqSettings) SetTo(v ContentV2GetCardsListPostReqSettings) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostReqSettings) Get() (v ContentV2GetCardsListPostReqSettings, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostReqSettings) Or(d ContentV2GetCardsListPostReqSettings) ContentV2GetCardsListPostReqSettings { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostReqSettingsCursor returns new OptContentV2GetCardsListPostReqSettingsCursor with value set to v. +func NewOptContentV2GetCardsListPostReqSettingsCursor(v ContentV2GetCardsListPostReqSettingsCursor) OptContentV2GetCardsListPostReqSettingsCursor { + return OptContentV2GetCardsListPostReqSettingsCursor{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostReqSettingsCursor is optional ContentV2GetCardsListPostReqSettingsCursor. +type OptContentV2GetCardsListPostReqSettingsCursor struct { + Value ContentV2GetCardsListPostReqSettingsCursor + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostReqSettingsCursor was set. +func (o OptContentV2GetCardsListPostReqSettingsCursor) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostReqSettingsCursor) Reset() { + var v ContentV2GetCardsListPostReqSettingsCursor + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostReqSettingsCursor) SetTo(v ContentV2GetCardsListPostReqSettingsCursor) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostReqSettingsCursor) Get() (v ContentV2GetCardsListPostReqSettingsCursor, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostReqSettingsCursor) Or(d ContentV2GetCardsListPostReqSettingsCursor) ContentV2GetCardsListPostReqSettingsCursor { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostReqSettingsFilter returns new OptContentV2GetCardsListPostReqSettingsFilter with value set to v. +func NewOptContentV2GetCardsListPostReqSettingsFilter(v ContentV2GetCardsListPostReqSettingsFilter) OptContentV2GetCardsListPostReqSettingsFilter { + return OptContentV2GetCardsListPostReqSettingsFilter{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostReqSettingsFilter is optional ContentV2GetCardsListPostReqSettingsFilter. +type OptContentV2GetCardsListPostReqSettingsFilter struct { + Value ContentV2GetCardsListPostReqSettingsFilter + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostReqSettingsFilter was set. +func (o OptContentV2GetCardsListPostReqSettingsFilter) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostReqSettingsFilter) Reset() { + var v ContentV2GetCardsListPostReqSettingsFilter + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostReqSettingsFilter) SetTo(v ContentV2GetCardsListPostReqSettingsFilter) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostReqSettingsFilter) Get() (v ContentV2GetCardsListPostReqSettingsFilter, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostReqSettingsFilter) Or(d ContentV2GetCardsListPostReqSettingsFilter) ContentV2GetCardsListPostReqSettingsFilter { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsListPostReqSettingsSort returns new OptContentV2GetCardsListPostReqSettingsSort with value set to v. +func NewOptContentV2GetCardsListPostReqSettingsSort(v ContentV2GetCardsListPostReqSettingsSort) OptContentV2GetCardsListPostReqSettingsSort { + return OptContentV2GetCardsListPostReqSettingsSort{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsListPostReqSettingsSort is optional ContentV2GetCardsListPostReqSettingsSort. +type OptContentV2GetCardsListPostReqSettingsSort struct { + Value ContentV2GetCardsListPostReqSettingsSort + Set bool +} + +// IsSet returns true if OptContentV2GetCardsListPostReqSettingsSort was set. +func (o OptContentV2GetCardsListPostReqSettingsSort) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsListPostReqSettingsSort) Reset() { + var v ContentV2GetCardsListPostReqSettingsSort + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsListPostReqSettingsSort) SetTo(v ContentV2GetCardsListPostReqSettingsSort) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsListPostReqSettingsSort) Get() (v ContentV2GetCardsListPostReqSettingsSort, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsListPostReqSettingsSort) Or(d ContentV2GetCardsListPostReqSettingsSort) ContentV2GetCardsListPostReqSettingsSort { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostLocale returns new OptContentV2GetCardsTrashPostLocale with value set to v. +func NewOptContentV2GetCardsTrashPostLocale(v ContentV2GetCardsTrashPostLocale) OptContentV2GetCardsTrashPostLocale { + return OptContentV2GetCardsTrashPostLocale{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostLocale is optional ContentV2GetCardsTrashPostLocale. +type OptContentV2GetCardsTrashPostLocale struct { + Value ContentV2GetCardsTrashPostLocale + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostLocale was set. +func (o OptContentV2GetCardsTrashPostLocale) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostLocale) Reset() { + var v ContentV2GetCardsTrashPostLocale + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostLocale) SetTo(v ContentV2GetCardsTrashPostLocale) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostLocale) Get() (v ContentV2GetCardsTrashPostLocale, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostLocale) Or(d ContentV2GetCardsTrashPostLocale) ContentV2GetCardsTrashPostLocale { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostOKCardsItemDimensions returns new OptContentV2GetCardsTrashPostOKCardsItemDimensions with value set to v. +func NewOptContentV2GetCardsTrashPostOKCardsItemDimensions(v ContentV2GetCardsTrashPostOKCardsItemDimensions) OptContentV2GetCardsTrashPostOKCardsItemDimensions { + return OptContentV2GetCardsTrashPostOKCardsItemDimensions{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostOKCardsItemDimensions is optional ContentV2GetCardsTrashPostOKCardsItemDimensions. +type OptContentV2GetCardsTrashPostOKCardsItemDimensions struct { + Value ContentV2GetCardsTrashPostOKCardsItemDimensions + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostOKCardsItemDimensions was set. +func (o OptContentV2GetCardsTrashPostOKCardsItemDimensions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostOKCardsItemDimensions) Reset() { + var v ContentV2GetCardsTrashPostOKCardsItemDimensions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostOKCardsItemDimensions) SetTo(v ContentV2GetCardsTrashPostOKCardsItemDimensions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostOKCardsItemDimensions) Get() (v ContentV2GetCardsTrashPostOKCardsItemDimensions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostOKCardsItemDimensions) Or(d ContentV2GetCardsTrashPostOKCardsItemDimensions) ContentV2GetCardsTrashPostOKCardsItemDimensions { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostOKCursor returns new OptContentV2GetCardsTrashPostOKCursor with value set to v. +func NewOptContentV2GetCardsTrashPostOKCursor(v ContentV2GetCardsTrashPostOKCursor) OptContentV2GetCardsTrashPostOKCursor { + return OptContentV2GetCardsTrashPostOKCursor{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostOKCursor is optional ContentV2GetCardsTrashPostOKCursor. +type OptContentV2GetCardsTrashPostOKCursor struct { + Value ContentV2GetCardsTrashPostOKCursor + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostOKCursor was set. +func (o OptContentV2GetCardsTrashPostOKCursor) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostOKCursor) Reset() { + var v ContentV2GetCardsTrashPostOKCursor + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostOKCursor) SetTo(v ContentV2GetCardsTrashPostOKCursor) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostOKCursor) Get() (v ContentV2GetCardsTrashPostOKCursor, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostOKCursor) Or(d ContentV2GetCardsTrashPostOKCursor) ContentV2GetCardsTrashPostOKCursor { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostReqSettings returns new OptContentV2GetCardsTrashPostReqSettings with value set to v. +func NewOptContentV2GetCardsTrashPostReqSettings(v ContentV2GetCardsTrashPostReqSettings) OptContentV2GetCardsTrashPostReqSettings { + return OptContentV2GetCardsTrashPostReqSettings{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostReqSettings is optional ContentV2GetCardsTrashPostReqSettings. +type OptContentV2GetCardsTrashPostReqSettings struct { + Value ContentV2GetCardsTrashPostReqSettings + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostReqSettings was set. +func (o OptContentV2GetCardsTrashPostReqSettings) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostReqSettings) Reset() { + var v ContentV2GetCardsTrashPostReqSettings + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostReqSettings) SetTo(v ContentV2GetCardsTrashPostReqSettings) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostReqSettings) Get() (v ContentV2GetCardsTrashPostReqSettings, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostReqSettings) Or(d ContentV2GetCardsTrashPostReqSettings) ContentV2GetCardsTrashPostReqSettings { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostReqSettingsCursor returns new OptContentV2GetCardsTrashPostReqSettingsCursor with value set to v. +func NewOptContentV2GetCardsTrashPostReqSettingsCursor(v ContentV2GetCardsTrashPostReqSettingsCursor) OptContentV2GetCardsTrashPostReqSettingsCursor { + return OptContentV2GetCardsTrashPostReqSettingsCursor{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostReqSettingsCursor is optional ContentV2GetCardsTrashPostReqSettingsCursor. +type OptContentV2GetCardsTrashPostReqSettingsCursor struct { + Value ContentV2GetCardsTrashPostReqSettingsCursor + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostReqSettingsCursor was set. +func (o OptContentV2GetCardsTrashPostReqSettingsCursor) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostReqSettingsCursor) Reset() { + var v ContentV2GetCardsTrashPostReqSettingsCursor + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostReqSettingsCursor) SetTo(v ContentV2GetCardsTrashPostReqSettingsCursor) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostReqSettingsCursor) Get() (v ContentV2GetCardsTrashPostReqSettingsCursor, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostReqSettingsCursor) Or(d ContentV2GetCardsTrashPostReqSettingsCursor) ContentV2GetCardsTrashPostReqSettingsCursor { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostReqSettingsFilter returns new OptContentV2GetCardsTrashPostReqSettingsFilter with value set to v. +func NewOptContentV2GetCardsTrashPostReqSettingsFilter(v ContentV2GetCardsTrashPostReqSettingsFilter) OptContentV2GetCardsTrashPostReqSettingsFilter { + return OptContentV2GetCardsTrashPostReqSettingsFilter{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostReqSettingsFilter is optional ContentV2GetCardsTrashPostReqSettingsFilter. +type OptContentV2GetCardsTrashPostReqSettingsFilter struct { + Value ContentV2GetCardsTrashPostReqSettingsFilter + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostReqSettingsFilter was set. +func (o OptContentV2GetCardsTrashPostReqSettingsFilter) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostReqSettingsFilter) Reset() { + var v ContentV2GetCardsTrashPostReqSettingsFilter + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostReqSettingsFilter) SetTo(v ContentV2GetCardsTrashPostReqSettingsFilter) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostReqSettingsFilter) Get() (v ContentV2GetCardsTrashPostReqSettingsFilter, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostReqSettingsFilter) Or(d ContentV2GetCardsTrashPostReqSettingsFilter) ContentV2GetCardsTrashPostReqSettingsFilter { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV2GetCardsTrashPostReqSettingsSort returns new OptContentV2GetCardsTrashPostReqSettingsSort with value set to v. +func NewOptContentV2GetCardsTrashPostReqSettingsSort(v ContentV2GetCardsTrashPostReqSettingsSort) OptContentV2GetCardsTrashPostReqSettingsSort { + return OptContentV2GetCardsTrashPostReqSettingsSort{ + Value: v, + Set: true, + } +} + +// OptContentV2GetCardsTrashPostReqSettingsSort is optional ContentV2GetCardsTrashPostReqSettingsSort. +type OptContentV2GetCardsTrashPostReqSettingsSort struct { + Value ContentV2GetCardsTrashPostReqSettingsSort + Set bool +} + +// IsSet returns true if OptContentV2GetCardsTrashPostReqSettingsSort was set. +func (o OptContentV2GetCardsTrashPostReqSettingsSort) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV2GetCardsTrashPostReqSettingsSort) Reset() { + var v ContentV2GetCardsTrashPostReqSettingsSort + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV2GetCardsTrashPostReqSettingsSort) SetTo(v ContentV2GetCardsTrashPostReqSettingsSort) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV2GetCardsTrashPostReqSettingsSort) Get() (v ContentV2GetCardsTrashPostReqSettingsSort, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV2GetCardsTrashPostReqSettingsSort) Or(d ContentV2GetCardsTrashPostReqSettingsSort) ContentV2GetCardsTrashPostReqSettingsSort { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV3MediaFilePostOKAdditionalErrors returns new OptContentV3MediaFilePostOKAdditionalErrors with value set to v. +func NewOptContentV3MediaFilePostOKAdditionalErrors(v *ContentV3MediaFilePostOKAdditionalErrors) OptContentV3MediaFilePostOKAdditionalErrors { + return OptContentV3MediaFilePostOKAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptContentV3MediaFilePostOKAdditionalErrors is optional *ContentV3MediaFilePostOKAdditionalErrors. +type OptContentV3MediaFilePostOKAdditionalErrors struct { + Value *ContentV3MediaFilePostOKAdditionalErrors + Set bool +} + +// IsSet returns true if OptContentV3MediaFilePostOKAdditionalErrors was set. +func (o OptContentV3MediaFilePostOKAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV3MediaFilePostOKAdditionalErrors) Reset() { + var v *ContentV3MediaFilePostOKAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV3MediaFilePostOKAdditionalErrors) SetTo(v *ContentV3MediaFilePostOKAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV3MediaFilePostOKAdditionalErrors) Get() (v *ContentV3MediaFilePostOKAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV3MediaFilePostOKAdditionalErrors) Or(d *ContentV3MediaFilePostOKAdditionalErrors) *ContentV3MediaFilePostOKAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptContentV3MediaSavePostOKAdditionalErrors returns new OptContentV3MediaSavePostOKAdditionalErrors with value set to v. +func NewOptContentV3MediaSavePostOKAdditionalErrors(v *ContentV3MediaSavePostOKAdditionalErrors) OptContentV3MediaSavePostOKAdditionalErrors { + return OptContentV3MediaSavePostOKAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptContentV3MediaSavePostOKAdditionalErrors is optional *ContentV3MediaSavePostOKAdditionalErrors. +type OptContentV3MediaSavePostOKAdditionalErrors struct { + Value *ContentV3MediaSavePostOKAdditionalErrors + Set bool +} + +// IsSet returns true if OptContentV3MediaSavePostOKAdditionalErrors was set. +func (o OptContentV3MediaSavePostOKAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptContentV3MediaSavePostOKAdditionalErrors) Reset() { + var v *ContentV3MediaSavePostOKAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptContentV3MediaSavePostOKAdditionalErrors) SetTo(v *ContentV3MediaSavePostOKAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptContentV3MediaSavePostOKAdditionalErrors) Get() (v *ContentV3MediaSavePostOKAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptContentV3MediaSavePostOKAdditionalErrors) Or(d *ContentV3MediaSavePostOKAdditionalErrors) *ContentV3MediaSavePostOKAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptDateTime returns new OptDateTime with value set to v. +func NewOptDateTime(v time.Time) OptDateTime { + return OptDateTime{ + Value: v, + Set: true, + } +} + +// OptDateTime is optional time.Time. +type OptDateTime struct { + Value time.Time + Set bool +} + +// IsSet returns true if OptDateTime was set. +func (o OptDateTime) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptDateTime) Reset() { + var v time.Time + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptDateTime) SetTo(v time.Time) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptDateTime) Get() (v time.Time, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptDateTime) Or(d time.Time) time.Time { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptErrorData returns new OptErrorData with value set to v. +func NewOptErrorData(v *ErrorData) OptErrorData { + return OptErrorData{ + Value: v, + Set: true, + } +} + +// OptErrorData is optional *ErrorData. +type OptErrorData struct { + Value *ErrorData + Set bool +} + +// IsSet returns true if OptErrorData was set. +func (o OptErrorData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptErrorData) Reset() { + var v *ErrorData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptErrorData) SetTo(v *ErrorData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptErrorData) Get() (v *ErrorData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptErrorData) Or(d *ErrorData) *ErrorData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptFloat32 returns new OptFloat32 with value set to v. +func NewOptFloat32(v float32) OptFloat32 { + return OptFloat32{ + Value: v, + Set: true, + } +} + +// OptFloat32 is optional float32. +type OptFloat32 struct { + Value float32 + Set bool +} + +// IsSet returns true if OptFloat32 was set. +func (o OptFloat32) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptFloat32) Reset() { + var v float32 + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptFloat32) SetTo(v float32) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptFloat32) Get() (v float32, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptFloat32) Or(d float32) float32 { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptFloat64 returns new OptFloat64 with value set to v. +func NewOptFloat64(v float64) OptFloat64 { + return OptFloat64{ + Value: v, + Set: true, + } +} + +// OptFloat64 is optional float64. +type OptFloat64 struct { + Value float64 + Set bool +} + +// IsSet returns true if OptFloat64 was set. +func (o OptFloat64) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptFloat64) Reset() { + var v float64 + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptFloat64) SetTo(v float64) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptFloat64) Get() (v float64, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptFloat64) Or(d float64) float64 { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptGoodStatus returns new OptGoodStatus with value set to v. +func NewOptGoodStatus(v GoodStatus) OptGoodStatus { + return OptGoodStatus{ + Value: v, + Set: true, + } +} + +// OptGoodStatus is optional GoodStatus. +type OptGoodStatus struct { + Value GoodStatus + Set bool +} + +// IsSet returns true if OptGoodStatus was set. +func (o OptGoodStatus) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptGoodStatus) Reset() { + var v GoodStatus + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptGoodStatus) SetTo(v GoodStatus) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptGoodStatus) Get() (v GoodStatus, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptGoodStatus) Or(d GoodStatus) GoodStatus { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptGoodStatusBuffer returns new OptGoodStatusBuffer with value set to v. +func NewOptGoodStatusBuffer(v GoodStatusBuffer) OptGoodStatusBuffer { + return OptGoodStatusBuffer{ + Value: v, + Set: true, + } +} + +// OptGoodStatusBuffer is optional GoodStatusBuffer. +type OptGoodStatusBuffer struct { + Value GoodStatusBuffer + Set bool +} + +// IsSet returns true if OptGoodStatusBuffer was set. +func (o OptGoodStatusBuffer) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptGoodStatusBuffer) Reset() { + var v GoodStatusBuffer + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptGoodStatusBuffer) SetTo(v GoodStatusBuffer) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptGoodStatusBuffer) Get() (v GoodStatusBuffer, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptGoodStatusBuffer) Or(d GoodStatusBuffer) GoodStatusBuffer { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptInt returns new OptInt with value set to v. +func NewOptInt(v int) OptInt { + return OptInt{ + Value: v, + Set: true, + } +} + +// OptInt is optional int. +type OptInt struct { + Value int + Set bool +} + +// IsSet returns true if OptInt was set. +func (o OptInt) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptInt) Reset() { + var v int + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptInt) SetTo(v int) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptInt) Get() (v int, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptInt) Or(d int) int { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptInt64 returns new OptInt64 with value set to v. +func NewOptInt64(v int64) OptInt64 { + return OptInt64{ + Value: v, + Set: true, + } +} + +// OptInt64 is optional int64. +type OptInt64 struct { + Value int64 + Set bool +} + +// IsSet returns true if OptInt64 was set. +func (o OptInt64) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptInt64) Reset() { + var v int64 + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptInt64) SetTo(v int64) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptInt64) Get() (v int64, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptInt64) Or(d int64) int64 { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptMediaErrorsAdditionalErrors returns new OptMediaErrorsAdditionalErrors with value set to v. +func NewOptMediaErrorsAdditionalErrors(v *MediaErrorsAdditionalErrors) OptMediaErrorsAdditionalErrors { + return OptMediaErrorsAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptMediaErrorsAdditionalErrors is optional *MediaErrorsAdditionalErrors. +type OptMediaErrorsAdditionalErrors struct { + Value *MediaErrorsAdditionalErrors + Set bool +} + +// IsSet returns true if OptMediaErrorsAdditionalErrors was set. +func (o OptMediaErrorsAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMediaErrorsAdditionalErrors) Reset() { + var v *MediaErrorsAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMediaErrorsAdditionalErrors) SetTo(v *MediaErrorsAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMediaErrorsAdditionalErrors) Get() (v *MediaErrorsAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptMediaErrorsAdditionalErrors) Or(d *MediaErrorsAdditionalErrors) *MediaErrorsAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptMultipartFile returns new OptMultipartFile with value set to v. +func NewOptMultipartFile(v ht.MultipartFile) OptMultipartFile { + return OptMultipartFile{ + Value: v, + Set: true, + } +} + +// OptMultipartFile is optional ht.MultipartFile. +type OptMultipartFile struct { + Value ht.MultipartFile + Set bool +} + +// IsSet returns true if OptMultipartFile was set. +func (o OptMultipartFile) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMultipartFile) Reset() { + var v ht.MultipartFile + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMultipartFile) SetTo(v ht.MultipartFile) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMultipartFile) Get() (v ht.MultipartFile, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptMultipartFile) Or(d ht.MultipartFile) ht.MultipartFile { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilInt returns new OptNilInt with value set to v. +func NewOptNilInt(v int) OptNilInt { + return OptNilInt{ + Value: v, + Set: true, + } +} + +// OptNilInt is optional nullable int. +type OptNilInt struct { + Value int + Set bool + Null bool +} + +// IsSet returns true if OptNilInt was set. +func (o OptNilInt) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilInt) Reset() { + var v int + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilInt) SetTo(v int) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsNull returns true if value is Null. +func (o OptNilInt) IsNull() bool { return o.Null } + +// SetToNull sets value to null. +func (o *OptNilInt) SetToNull() { + o.Set = true + o.Null = true + var v int + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilInt) Get() (v int, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilInt) Or(d int) int { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilResponseBodyContentError400AdditionalErrors returns new OptNilResponseBodyContentError400AdditionalErrors with value set to v. +func NewOptNilResponseBodyContentError400AdditionalErrors(v ResponseBodyContentError400AdditionalErrors) OptNilResponseBodyContentError400AdditionalErrors { + return OptNilResponseBodyContentError400AdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptNilResponseBodyContentError400AdditionalErrors is optional nullable ResponseBodyContentError400AdditionalErrors. +type OptNilResponseBodyContentError400AdditionalErrors struct { + Value ResponseBodyContentError400AdditionalErrors + Set bool + Null bool +} + +// IsSet returns true if OptNilResponseBodyContentError400AdditionalErrors was set. +func (o OptNilResponseBodyContentError400AdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilResponseBodyContentError400AdditionalErrors) Reset() { + var v ResponseBodyContentError400AdditionalErrors + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilResponseBodyContentError400AdditionalErrors) SetTo(v ResponseBodyContentError400AdditionalErrors) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsNull returns true if value is Null. +func (o OptNilResponseBodyContentError400AdditionalErrors) IsNull() bool { return o.Null } + +// SetToNull sets value to null. +func (o *OptNilResponseBodyContentError400AdditionalErrors) SetToNull() { + o.Set = true + o.Null = true + var v ResponseBodyContentError400AdditionalErrors + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilResponseBodyContentError400AdditionalErrors) Get() (v ResponseBodyContentError400AdditionalErrors, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilResponseBodyContentError400AdditionalErrors) Or(d ResponseBodyContentError400AdditionalErrors) ResponseBodyContentError400AdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilResponseContentError4AdditionalErrors returns new OptNilResponseContentError4AdditionalErrors with value set to v. +func NewOptNilResponseContentError4AdditionalErrors(v ResponseContentError4AdditionalErrors) OptNilResponseContentError4AdditionalErrors { + return OptNilResponseContentError4AdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptNilResponseContentError4AdditionalErrors is optional nullable ResponseContentError4AdditionalErrors. +type OptNilResponseContentError4AdditionalErrors struct { + Value ResponseContentError4AdditionalErrors + Set bool + Null bool +} + +// IsSet returns true if OptNilResponseContentError4AdditionalErrors was set. +func (o OptNilResponseContentError4AdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilResponseContentError4AdditionalErrors) Reset() { + var v ResponseContentError4AdditionalErrors + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilResponseContentError4AdditionalErrors) SetTo(v ResponseContentError4AdditionalErrors) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsNull returns true if value is Null. +func (o OptNilResponseContentError4AdditionalErrors) IsNull() bool { return o.Null } + +// SetToNull sets value to null. +func (o *OptNilResponseContentError4AdditionalErrors) SetToNull() { + o.Set = true + o.Null = true + var v ResponseContentError4AdditionalErrors + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilResponseContentError4AdditionalErrors) Get() (v ResponseContentError4AdditionalErrors, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilResponseContentError4AdditionalErrors) Or(d ResponseContentError4AdditionalErrors) ResponseContentError4AdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilResponseQuarantineGoodsData returns new OptNilResponseQuarantineGoodsData with value set to v. +func NewOptNilResponseQuarantineGoodsData(v ResponseQuarantineGoodsData) OptNilResponseQuarantineGoodsData { + return OptNilResponseQuarantineGoodsData{ + Value: v, + Set: true, + } +} + +// OptNilResponseQuarantineGoodsData is optional nullable ResponseQuarantineGoodsData. +type OptNilResponseQuarantineGoodsData struct { + Value ResponseQuarantineGoodsData + Set bool + Null bool +} + +// IsSet returns true if OptNilResponseQuarantineGoodsData was set. +func (o OptNilResponseQuarantineGoodsData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilResponseQuarantineGoodsData) Reset() { + var v ResponseQuarantineGoodsData + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilResponseQuarantineGoodsData) SetTo(v ResponseQuarantineGoodsData) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsNull returns true if value is Null. +func (o OptNilResponseQuarantineGoodsData) IsNull() bool { return o.Null } + +// SetToNull sets value to null. +func (o *OptNilResponseQuarantineGoodsData) SetToNull() { + o.Set = true + o.Null = true + var v ResponseQuarantineGoodsData + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilResponseQuarantineGoodsData) Get() (v ResponseQuarantineGoodsData, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilResponseQuarantineGoodsData) Or(d ResponseQuarantineGoodsData) ResponseQuarantineGoodsData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilString returns new OptNilString with value set to v. +func NewOptNilString(v string) OptNilString { + return OptNilString{ + Value: v, + Set: true, + } +} + +// OptNilString is optional nullable string. +type OptNilString struct { + Value string + Set bool + Null bool +} + +// IsSet returns true if OptNilString was set. +func (o OptNilString) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilString) Reset() { + var v string + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilString) SetTo(v string) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsNull returns true if value is Null. +func (o OptNilString) IsNull() bool { return o.Null } + +// SetToNull sets value to null. +func (o *OptNilString) SetToNull() { + o.Set = true + o.Null = true + var v string + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilString) Get() (v string, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilString) Or(d string) string { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptOfficeCargoType returns new OptOfficeCargoType with value set to v. +func NewOptOfficeCargoType(v OfficeCargoType) OptOfficeCargoType { + return OptOfficeCargoType{ + Value: v, + Set: true, + } +} + +// OptOfficeCargoType is optional OfficeCargoType. +type OptOfficeCargoType struct { + Value OfficeCargoType + Set bool +} + +// IsSet returns true if OptOfficeCargoType was set. +func (o OptOfficeCargoType) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOfficeCargoType) Reset() { + var v OfficeCargoType + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOfficeCargoType) SetTo(v OfficeCargoType) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOfficeCargoType) Get() (v OfficeCargoType, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOfficeCargoType) Or(d OfficeCargoType) OfficeCargoType { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptOfficeDeliveryType returns new OptOfficeDeliveryType with value set to v. +func NewOptOfficeDeliveryType(v OfficeDeliveryType) OptOfficeDeliveryType { + return OptOfficeDeliveryType{ + Value: v, + Set: true, + } +} + +// OptOfficeDeliveryType is optional OfficeDeliveryType. +type OptOfficeDeliveryType struct { + Value OfficeDeliveryType + Set bool +} + +// IsSet returns true if OptOfficeDeliveryType was set. +func (o OptOfficeDeliveryType) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOfficeDeliveryType) Reset() { + var v OfficeDeliveryType + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOfficeDeliveryType) SetTo(v OfficeDeliveryType) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOfficeDeliveryType) Get() (v OfficeDeliveryType, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOfficeDeliveryType) Or(d OfficeDeliveryType) OfficeDeliveryType { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptRequestAlreadyExistsErrorData returns new OptRequestAlreadyExistsErrorData with value set to v. +func NewOptRequestAlreadyExistsErrorData(v RequestAlreadyExistsErrorData) OptRequestAlreadyExistsErrorData { + return OptRequestAlreadyExistsErrorData{ + Value: v, + Set: true, + } +} + +// OptRequestAlreadyExistsErrorData is optional RequestAlreadyExistsErrorData. +type OptRequestAlreadyExistsErrorData struct { + Value RequestAlreadyExistsErrorData + Set bool +} + +// IsSet returns true if OptRequestAlreadyExistsErrorData was set. +func (o OptRequestAlreadyExistsErrorData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptRequestAlreadyExistsErrorData) Reset() { + var v RequestAlreadyExistsErrorData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptRequestAlreadyExistsErrorData) SetTo(v RequestAlreadyExistsErrorData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptRequestAlreadyExistsErrorData) Get() (v RequestAlreadyExistsErrorData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptRequestAlreadyExistsErrorData) Or(d RequestAlreadyExistsErrorData) RequestAlreadyExistsErrorData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseBodyContentError400Data returns new OptResponseBodyContentError400Data with value set to v. +func NewOptResponseBodyContentError400Data(v *ResponseBodyContentError400Data) OptResponseBodyContentError400Data { + return OptResponseBodyContentError400Data{ + Value: v, + Set: true, + } +} + +// OptResponseBodyContentError400Data is optional *ResponseBodyContentError400Data. +type OptResponseBodyContentError400Data struct { + Value *ResponseBodyContentError400Data + Set bool +} + +// IsSet returns true if OptResponseBodyContentError400Data was set. +func (o OptResponseBodyContentError400Data) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseBodyContentError400Data) Reset() { + var v *ResponseBodyContentError400Data + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseBodyContentError400Data) SetTo(v *ResponseBodyContentError400Data) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseBodyContentError400Data) Get() (v *ResponseBodyContentError400Data, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseBodyContentError400Data) Or(d *ResponseBodyContentError400Data) *ResponseBodyContentError400Data { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseBodyContentError403Data returns new OptResponseBodyContentError403Data with value set to v. +func NewOptResponseBodyContentError403Data(v *ResponseBodyContentError403Data) OptResponseBodyContentError403Data { + return OptResponseBodyContentError403Data{ + Value: v, + Set: true, + } +} + +// OptResponseBodyContentError403Data is optional *ResponseBodyContentError403Data. +type OptResponseBodyContentError403Data struct { + Value *ResponseBodyContentError403Data + Set bool +} + +// IsSet returns true if OptResponseBodyContentError403Data was set. +func (o OptResponseBodyContentError403Data) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseBodyContentError403Data) Reset() { + var v *ResponseBodyContentError403Data + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseBodyContentError403Data) SetTo(v *ResponseBodyContentError403Data) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseBodyContentError403Data) Get() (v *ResponseBodyContentError403Data, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseBodyContentError403Data) Or(d *ResponseBodyContentError403Data) *ResponseBodyContentError403Data { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseCardCreateAdditionalErrors returns new OptResponseCardCreateAdditionalErrors with value set to v. +func NewOptResponseCardCreateAdditionalErrors(v ResponseCardCreateAdditionalErrors) OptResponseCardCreateAdditionalErrors { + return OptResponseCardCreateAdditionalErrors{ + Value: v, + Set: true, + } +} + +// OptResponseCardCreateAdditionalErrors is optional ResponseCardCreateAdditionalErrors. +type OptResponseCardCreateAdditionalErrors struct { + Value ResponseCardCreateAdditionalErrors + Set bool +} + +// IsSet returns true if OptResponseCardCreateAdditionalErrors was set. +func (o OptResponseCardCreateAdditionalErrors) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseCardCreateAdditionalErrors) Reset() { + var v ResponseCardCreateAdditionalErrors + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseCardCreateAdditionalErrors) SetTo(v ResponseCardCreateAdditionalErrors) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseCardCreateAdditionalErrors) Get() (v ResponseCardCreateAdditionalErrors, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseCardCreateAdditionalErrors) Or(d ResponseCardCreateAdditionalErrors) ResponseCardCreateAdditionalErrors { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseCardCreateData returns new OptResponseCardCreateData with value set to v. +func NewOptResponseCardCreateData(v *ResponseCardCreateData) OptResponseCardCreateData { + return OptResponseCardCreateData{ + Value: v, + Set: true, + } +} + +// OptResponseCardCreateData is optional *ResponseCardCreateData. +type OptResponseCardCreateData struct { + Value *ResponseCardCreateData + Set bool +} + +// IsSet returns true if OptResponseCardCreateData was set. +func (o OptResponseCardCreateData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseCardCreateData) Reset() { + var v *ResponseCardCreateData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseCardCreateData) SetTo(v *ResponseCardCreateData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseCardCreateData) Get() (v *ResponseCardCreateData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseCardCreateData) Or(d *ResponseCardCreateData) *ResponseCardCreateData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseContentError4Data returns new OptResponseContentError4Data with value set to v. +func NewOptResponseContentError4Data(v *ResponseContentError4Data) OptResponseContentError4Data { + return OptResponseContentError4Data{ + Value: v, + Set: true, + } +} + +// OptResponseContentError4Data is optional *ResponseContentError4Data. +type OptResponseContentError4Data struct { + Value *ResponseContentError4Data + Set bool +} + +// IsSet returns true if OptResponseContentError4Data was set. +func (o OptResponseContentError4Data) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseContentError4Data) Reset() { + var v *ResponseContentError4Data + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseContentError4Data) SetTo(v *ResponseContentError4Data) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseContentError4Data) Get() (v *ResponseContentError4Data, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseContentError4Data) Or(d *ResponseContentError4Data) *ResponseContentError4Data { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseContentError6Data returns new OptResponseContentError6Data with value set to v. +func NewOptResponseContentError6Data(v *ResponseContentError6Data) OptResponseContentError6Data { + return OptResponseContentError6Data{ + Value: v, + Set: true, + } +} + +// OptResponseContentError6Data is optional *ResponseContentError6Data. +type OptResponseContentError6Data struct { + Value *ResponseContentError6Data + Set bool +} + +// IsSet returns true if OptResponseContentError6Data was set. +func (o OptResponseContentError6Data) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseContentError6Data) Reset() { + var v *ResponseContentError6Data + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseContentError6Data) SetTo(v *ResponseContentError6Data) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseContentError6Data) Get() (v *ResponseContentError6Data, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseContentError6Data) Or(d *ResponseContentError6Data) *ResponseContentError6Data { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseErrorData returns new OptResponseErrorData with value set to v. +func NewOptResponseErrorData(v *ResponseErrorData) OptResponseErrorData { + return OptResponseErrorData{ + Value: v, + Set: true, + } +} + +// OptResponseErrorData is optional *ResponseErrorData. +type OptResponseErrorData struct { + Value *ResponseErrorData + Set bool +} + +// IsSet returns true if OptResponseErrorData was set. +func (o OptResponseErrorData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseErrorData) Reset() { + var v *ResponseErrorData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseErrorData) SetTo(v *ResponseErrorData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseErrorData) Get() (v *ResponseErrorData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseErrorData) Or(d *ResponseErrorData) *ResponseErrorData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseGoodBufferHistoriesData returns new OptResponseGoodBufferHistoriesData with value set to v. +func NewOptResponseGoodBufferHistoriesData(v ResponseGoodBufferHistoriesData) OptResponseGoodBufferHistoriesData { + return OptResponseGoodBufferHistoriesData{ + Value: v, + Set: true, + } +} + +// OptResponseGoodBufferHistoriesData is optional ResponseGoodBufferHistoriesData. +type OptResponseGoodBufferHistoriesData struct { + Value ResponseGoodBufferHistoriesData + Set bool +} + +// IsSet returns true if OptResponseGoodBufferHistoriesData was set. +func (o OptResponseGoodBufferHistoriesData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseGoodBufferHistoriesData) Reset() { + var v ResponseGoodBufferHistoriesData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseGoodBufferHistoriesData) SetTo(v ResponseGoodBufferHistoriesData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseGoodBufferHistoriesData) Get() (v ResponseGoodBufferHistoriesData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseGoodBufferHistoriesData) Or(d ResponseGoodBufferHistoriesData) ResponseGoodBufferHistoriesData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseGoodHistoriesData returns new OptResponseGoodHistoriesData with value set to v. +func NewOptResponseGoodHistoriesData(v ResponseGoodHistoriesData) OptResponseGoodHistoriesData { + return OptResponseGoodHistoriesData{ + Value: v, + Set: true, + } +} + +// OptResponseGoodHistoriesData is optional ResponseGoodHistoriesData. +type OptResponseGoodHistoriesData struct { + Value ResponseGoodHistoriesData + Set bool +} + +// IsSet returns true if OptResponseGoodHistoriesData was set. +func (o OptResponseGoodHistoriesData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseGoodHistoriesData) Reset() { + var v ResponseGoodHistoriesData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseGoodHistoriesData) SetTo(v ResponseGoodHistoriesData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseGoodHistoriesData) Get() (v ResponseGoodHistoriesData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseGoodHistoriesData) Or(d ResponseGoodHistoriesData) ResponseGoodHistoriesData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseGoodsListsData returns new OptResponseGoodsListsData with value set to v. +func NewOptResponseGoodsListsData(v ResponseGoodsListsData) OptResponseGoodsListsData { + return OptResponseGoodsListsData{ + Value: v, + Set: true, + } +} + +// OptResponseGoodsListsData is optional ResponseGoodsListsData. +type OptResponseGoodsListsData struct { + Value ResponseGoodsListsData + Set bool +} + +// IsSet returns true if OptResponseGoodsListsData was set. +func (o OptResponseGoodsListsData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseGoodsListsData) Reset() { + var v ResponseGoodsListsData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseGoodsListsData) SetTo(v ResponseGoodsListsData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseGoodsListsData) Get() (v ResponseGoodsListsData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseGoodsListsData) Or(d ResponseGoodsListsData) ResponseGoodsListsData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptResponseSizeListsData returns new OptResponseSizeListsData with value set to v. +func NewOptResponseSizeListsData(v ResponseSizeListsData) OptResponseSizeListsData { + return OptResponseSizeListsData{ + Value: v, + Set: true, + } +} + +// OptResponseSizeListsData is optional ResponseSizeListsData. +type OptResponseSizeListsData struct { + Value ResponseSizeListsData + Set bool +} + +// IsSet returns true if OptResponseSizeListsData was set. +func (o OptResponseSizeListsData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptResponseSizeListsData) Reset() { + var v ResponseSizeListsData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptResponseSizeListsData) SetTo(v ResponseSizeListsData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptResponseSizeListsData) Get() (v ResponseSizeListsData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptResponseSizeListsData) Or(d ResponseSizeListsData) ResponseSizeListsData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptStocksWarehouseErrorItemData returns new OptStocksWarehouseErrorItemData with value set to v. +func NewOptStocksWarehouseErrorItemData(v *StocksWarehouseErrorItemData) OptStocksWarehouseErrorItemData { + return OptStocksWarehouseErrorItemData{ + Value: v, + Set: true, + } +} + +// OptStocksWarehouseErrorItemData is optional *StocksWarehouseErrorItemData. +type OptStocksWarehouseErrorItemData struct { + Value *StocksWarehouseErrorItemData + Set bool +} + +// IsSet returns true if OptStocksWarehouseErrorItemData was set. +func (o OptStocksWarehouseErrorItemData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptStocksWarehouseErrorItemData) Reset() { + var v *StocksWarehouseErrorItemData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptStocksWarehouseErrorItemData) SetTo(v *StocksWarehouseErrorItemData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptStocksWarehouseErrorItemData) Get() (v *StocksWarehouseErrorItemData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptStocksWarehouseErrorItemData) Or(d *StocksWarehouseErrorItemData) *StocksWarehouseErrorItemData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptString returns new OptString with value set to v. +func NewOptString(v string) OptString { + return OptString{ + Value: v, + Set: true, + } +} + +// OptString is optional string. +type OptString struct { + Value string + Set bool +} + +// IsSet returns true if OptString was set. +func (o OptString) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptString) Reset() { + var v string + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptString) SetTo(v string) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptString) Get() (v string, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptString) Or(d string) string { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptTaskCreatedData returns new OptTaskCreatedData with value set to v. +func NewOptTaskCreatedData(v TaskCreatedData) OptTaskCreatedData { + return OptTaskCreatedData{ + Value: v, + Set: true, + } +} + +// OptTaskCreatedData is optional TaskCreatedData. +type OptTaskCreatedData struct { + Value TaskCreatedData + Set bool +} + +// IsSet returns true if OptTaskCreatedData was set. +func (o OptTaskCreatedData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptTaskCreatedData) Reset() { + var v TaskCreatedData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptTaskCreatedData) SetTo(v TaskCreatedData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptTaskCreatedData) Get() (v TaskCreatedData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptTaskCreatedData) Or(d TaskCreatedData) TaskCreatedData { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUUID returns new OptUUID with value set to v. +func NewOptUUID(v uuid.UUID) OptUUID { + return OptUUID{ + Value: v, + Set: true, + } +} + +// OptUUID is optional uuid.UUID. +type OptUUID struct { + Value uuid.UUID + Set bool +} + +// IsSet returns true if OptUUID was set. +func (o OptUUID) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUUID) Reset() { + var v uuid.UUID + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUUID) SetTo(v uuid.UUID) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUUID) Get() (v uuid.UUID, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUUID) Or(d uuid.UUID) uuid.UUID { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUint returns new OptUint with value set to v. +func NewOptUint(v uint) OptUint { + return OptUint{ + Value: v, + Set: true, + } +} + +// OptUint is optional uint. +type OptUint struct { + Value uint + Set bool +} + +// IsSet returns true if OptUint was set. +func (o OptUint) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUint) Reset() { + var v uint + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUint) SetTo(v uint) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUint) Get() (v uint, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUint) Or(d uint) uint { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptWarehouseCargoType returns new OptWarehouseCargoType with value set to v. +func NewOptWarehouseCargoType(v WarehouseCargoType) OptWarehouseCargoType { + return OptWarehouseCargoType{ + Value: v, + Set: true, + } +} + +// OptWarehouseCargoType is optional WarehouseCargoType. +type OptWarehouseCargoType struct { + Value WarehouseCargoType + Set bool +} + +// IsSet returns true if OptWarehouseCargoType was set. +func (o OptWarehouseCargoType) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptWarehouseCargoType) Reset() { + var v WarehouseCargoType + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptWarehouseCargoType) SetTo(v WarehouseCargoType) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptWarehouseCargoType) Get() (v WarehouseCargoType, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptWarehouseCargoType) Or(d WarehouseCargoType) WarehouseCargoType { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptWarehouseDeliveryType returns new OptWarehouseDeliveryType with value set to v. +func NewOptWarehouseDeliveryType(v WarehouseDeliveryType) OptWarehouseDeliveryType { + return OptWarehouseDeliveryType{ + Value: v, + Set: true, + } +} + +// OptWarehouseDeliveryType is optional WarehouseDeliveryType. +type OptWarehouseDeliveryType struct { + Value WarehouseDeliveryType + Set bool +} + +// IsSet returns true if OptWarehouseDeliveryType was set. +func (o OptWarehouseDeliveryType) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptWarehouseDeliveryType) Reset() { + var v WarehouseDeliveryType + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptWarehouseDeliveryType) SetTo(v WarehouseDeliveryType) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptWarehouseDeliveryType) Get() (v WarehouseDeliveryType, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptWarehouseDeliveryType) Or(d WarehouseDeliveryType) WarehouseDeliveryType { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// Ref: #/components/schemas/QuarantineGoods +type QuarantineGoods struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. + SizeID OptInt `json:"sizeID"` + // НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. + TechSizeName OptString `json:"techSizeName"` + // Π’Π°Π»ΡŽΡ‚Π° ΠΏΠΎ стандарту ISO 4217. + CurrencyIsoCode4217 OptString `json:"currencyIsoCode4217"` + // Новая Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π΄ΠΎ скидки. + NewPrice OptFloat32 `json:"newPrice"` + // ВСкущая Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π΄ΠΎ скидки. + OldPrice OptFloat32 `json:"oldPrice"` + // Новая скидка ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, %. + NewDiscount OptInt `json:"newDiscount"` + // ВСкущая скидка ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, %. + OldDiscount OptInt `json:"oldDiscount"` + // Π Π°Π·Π½ΠΈΡ†Π°: `newPrice` * (1 - `newDiscount` / 100) - `oldPrice` * (1 - `oldDiscount` / 100). + PriceDiff OptFloat32 `json:"priceDiff"` +} + +// GetNmID returns the value of NmID. +func (s *QuarantineGoods) GetNmID() OptInt { + return s.NmID +} + +// GetSizeID returns the value of SizeID. +func (s *QuarantineGoods) GetSizeID() OptInt { + return s.SizeID +} + +// GetTechSizeName returns the value of TechSizeName. +func (s *QuarantineGoods) GetTechSizeName() OptString { + return s.TechSizeName +} + +// GetCurrencyIsoCode4217 returns the value of CurrencyIsoCode4217. +func (s *QuarantineGoods) GetCurrencyIsoCode4217() OptString { + return s.CurrencyIsoCode4217 +} + +// GetNewPrice returns the value of NewPrice. +func (s *QuarantineGoods) GetNewPrice() OptFloat32 { + return s.NewPrice +} + +// GetOldPrice returns the value of OldPrice. +func (s *QuarantineGoods) GetOldPrice() OptFloat32 { + return s.OldPrice +} + +// GetNewDiscount returns the value of NewDiscount. +func (s *QuarantineGoods) GetNewDiscount() OptInt { + return s.NewDiscount +} + +// GetOldDiscount returns the value of OldDiscount. +func (s *QuarantineGoods) GetOldDiscount() OptInt { + return s.OldDiscount +} + +// GetPriceDiff returns the value of PriceDiff. +func (s *QuarantineGoods) GetPriceDiff() OptFloat32 { + return s.PriceDiff +} + +// SetNmID sets the value of NmID. +func (s *QuarantineGoods) SetNmID(val OptInt) { + s.NmID = val +} + +// SetSizeID sets the value of SizeID. +func (s *QuarantineGoods) SetSizeID(val OptInt) { + s.SizeID = val +} + +// SetTechSizeName sets the value of TechSizeName. +func (s *QuarantineGoods) SetTechSizeName(val OptString) { + s.TechSizeName = val +} + +// SetCurrencyIsoCode4217 sets the value of CurrencyIsoCode4217. +func (s *QuarantineGoods) SetCurrencyIsoCode4217(val OptString) { + s.CurrencyIsoCode4217 = val +} + +// SetNewPrice sets the value of NewPrice. +func (s *QuarantineGoods) SetNewPrice(val OptFloat32) { + s.NewPrice = val +} + +// SetOldPrice sets the value of OldPrice. +func (s *QuarantineGoods) SetOldPrice(val OptFloat32) { + s.OldPrice = val +} + +// SetNewDiscount sets the value of NewDiscount. +func (s *QuarantineGoods) SetNewDiscount(val OptInt) { + s.NewDiscount = val +} + +// SetOldDiscount sets the value of OldDiscount. +func (s *QuarantineGoods) SetOldDiscount(val OptInt) { + s.OldDiscount = val +} + +// SetPriceDiff sets the value of PriceDiff. +func (s *QuarantineGoods) SetPriceDiff(val OptFloat32) { + s.PriceDiff = val +} + +type R401 struct { + // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки. + Title OptString `json:"title"` + // Π”Π΅Ρ‚Π°Π»ΠΈ ошибки. + Detail OptString `json:"detail"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки. + Code OptString `json:"code"` + // Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса. + RequestId OptString `json:"requestId"` + // ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB. + Origin OptString `json:"origin"` + // HTTP статус-ΠΊΠΎΠ΄. + Status OptFloat64 `json:"status"` + // Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π°. + StatusText OptString `json:"statusText"` + // Π”Π°Ρ‚Π° ΠΈ врСмя запроса. + Timestamp OptDateTime `json:"timestamp"` +} + +// GetTitle returns the value of Title. +func (s *R401) GetTitle() OptString { + return s.Title +} + +// GetDetail returns the value of Detail. +func (s *R401) GetDetail() OptString { + return s.Detail +} + +// GetCode returns the value of Code. +func (s *R401) GetCode() OptString { + return s.Code +} + +// GetRequestId returns the value of RequestId. +func (s *R401) GetRequestId() OptString { + return s.RequestId +} + +// GetOrigin returns the value of Origin. +func (s *R401) GetOrigin() OptString { + return s.Origin +} + +// GetStatus returns the value of Status. +func (s *R401) GetStatus() OptFloat64 { + return s.Status +} + +// GetStatusText returns the value of StatusText. +func (s *R401) GetStatusText() OptString { + return s.StatusText +} + +// GetTimestamp returns the value of Timestamp. +func (s *R401) GetTimestamp() OptDateTime { + return s.Timestamp +} + +// SetTitle sets the value of Title. +func (s *R401) SetTitle(val OptString) { + s.Title = val +} + +// SetDetail sets the value of Detail. +func (s *R401) SetDetail(val OptString) { + s.Detail = val +} + +// SetCode sets the value of Code. +func (s *R401) SetCode(val OptString) { + s.Code = val +} + +// SetRequestId sets the value of RequestId. +func (s *R401) SetRequestId(val OptString) { + s.RequestId = val +} + +// SetOrigin sets the value of Origin. +func (s *R401) SetOrigin(val OptString) { + s.Origin = val +} + +// SetStatus sets the value of Status. +func (s *R401) SetStatus(val OptFloat64) { + s.Status = val +} + +// SetStatusText sets the value of StatusText. +func (s *R401) SetStatusText(val OptString) { + s.StatusText = val +} + +// SetTimestamp sets the value of Timestamp. +func (s *R401) SetTimestamp(val OptDateTime) { + s.Timestamp = val +} + +func (*R401) aPIV2BufferGoodsTaskGetRes() {} +func (*R401) aPIV2BufferTasksGetRes() {} +func (*R401) aPIV2HistoryGoodsTaskGetRes() {} +func (*R401) aPIV2HistoryTasksGetRes() {} +func (*R401) aPIV2ListGoodsFilterGetRes() {} +func (*R401) aPIV2ListGoodsSizeNmGetRes() {} +func (*R401) aPIV2QuarantineGoodsGetRes() {} +func (*R401) aPIV2UploadTaskClubDiscountPostRes() {} +func (*R401) aPIV2UploadTaskPostRes() {} +func (*R401) aPIV2UploadTaskSizePostRes() {} +func (*R401) aPIV3OfficesGetRes() {} +func (*R401) aPIV3StocksWarehouseIdDeleteRes() {} +func (*R401) aPIV3StocksWarehouseIdPostRes() {} +func (*R401) aPIV3StocksWarehouseIdPutRes() {} +func (*R401) aPIV3WarehousesGetRes() {} +func (*R401) aPIV3WarehousesPostRes() {} +func (*R401) aPIV3WarehousesWarehouseIdDeleteRes() {} +func (*R401) aPIV3WarehousesWarehouseIdPutRes() {} +func (*R401) contentV2BarcodesPostRes() {} +func (*R401) contentV2CardsDeleteTrashPostRes() {} +func (*R401) contentV2CardsErrorListGetRes() {} +func (*R401) contentV2CardsLimitsGetRes() {} +func (*R401) contentV2CardsRecoverPostRes() {} +func (*R401) contentV2CardsUpdatePostRes() {} +func (*R401) contentV2CardsUploadAddPostRes() {} +func (*R401) contentV2CardsUploadPostRes() {} +func (*R401) contentV2DirectoryColorsGetRes() {} +func (*R401) contentV2DirectoryCountriesGetRes() {} +func (*R401) contentV2DirectoryKindsGetRes() {} +func (*R401) contentV2DirectorySeasonsGetRes() {} +func (*R401) contentV2DirectoryTnvedGetRes() {} +func (*R401) contentV2DirectoryVatGetRes() {} +func (*R401) contentV2GetCardsListPostRes() {} +func (*R401) contentV2GetCardsTrashPostRes() {} +func (*R401) contentV2ObjectAllGetRes() {} +func (*R401) contentV2ObjectCharcsSubjectIdGetRes() {} +func (*R401) contentV2ObjectParentAllGetRes() {} +func (*R401) contentV2TagNomenclatureLinkPostRes() {} +func (*R401) contentV2TagsGetRes() {} +func (*R401) contentV3MediaFilePostRes() {} +func (*R401) contentV3MediaSavePostRes() {} + +type R429 struct { + // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ошибки. + Title OptString `json:"title"` + // Π”Π΅Ρ‚Π°Π»ΠΈ ошибки. + Detail OptString `json:"detail"` + // Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ошибки. + Code OptString `json:"code"` + // Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID запроса. + RequestId OptString `json:"requestId"` + // ID Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ сСрвиса WB. + Origin OptString `json:"origin"` + // HTTP статус-ΠΊΠΎΠ΄. + Status OptFloat64 `json:"status"` + // Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° HTTP статус-ΠΊΠΎΠ΄Π°. + StatusText OptString `json:"statusText"` + // Π”Π°Ρ‚Π° ΠΈ врСмя запроса. + Timestamp OptDateTime `json:"timestamp"` +} + +// GetTitle returns the value of Title. +func (s *R429) GetTitle() OptString { + return s.Title +} + +// GetDetail returns the value of Detail. +func (s *R429) GetDetail() OptString { + return s.Detail +} + +// GetCode returns the value of Code. +func (s *R429) GetCode() OptString { + return s.Code +} + +// GetRequestId returns the value of RequestId. +func (s *R429) GetRequestId() OptString { + return s.RequestId +} + +// GetOrigin returns the value of Origin. +func (s *R429) GetOrigin() OptString { + return s.Origin +} + +// GetStatus returns the value of Status. +func (s *R429) GetStatus() OptFloat64 { + return s.Status +} + +// GetStatusText returns the value of StatusText. +func (s *R429) GetStatusText() OptString { + return s.StatusText +} + +// GetTimestamp returns the value of Timestamp. +func (s *R429) GetTimestamp() OptDateTime { + return s.Timestamp +} + +// SetTitle sets the value of Title. +func (s *R429) SetTitle(val OptString) { + s.Title = val +} + +// SetDetail sets the value of Detail. +func (s *R429) SetDetail(val OptString) { + s.Detail = val +} + +// SetCode sets the value of Code. +func (s *R429) SetCode(val OptString) { + s.Code = val +} + +// SetRequestId sets the value of RequestId. +func (s *R429) SetRequestId(val OptString) { + s.RequestId = val +} + +// SetOrigin sets the value of Origin. +func (s *R429) SetOrigin(val OptString) { + s.Origin = val +} + +// SetStatus sets the value of Status. +func (s *R429) SetStatus(val OptFloat64) { + s.Status = val +} + +// SetStatusText sets the value of StatusText. +func (s *R429) SetStatusText(val OptString) { + s.StatusText = val +} + +// SetTimestamp sets the value of Timestamp. +func (s *R429) SetTimestamp(val OptDateTime) { + s.Timestamp = val +} + +// R429Headers wraps R429 with response headers. +type R429Headers struct { + XRatelimitLimit OptInt + XRatelimitReset OptInt + XRatelimitRetry OptInt + Response R429 +} + +// GetXRatelimitLimit returns the value of XRatelimitLimit. +func (s *R429Headers) GetXRatelimitLimit() OptInt { + return s.XRatelimitLimit +} + +// GetXRatelimitReset returns the value of XRatelimitReset. +func (s *R429Headers) GetXRatelimitReset() OptInt { + return s.XRatelimitReset +} + +// GetXRatelimitRetry returns the value of XRatelimitRetry. +func (s *R429Headers) GetXRatelimitRetry() OptInt { + return s.XRatelimitRetry +} + +// GetResponse returns the value of Response. +func (s *R429Headers) GetResponse() R429 { + return s.Response +} + +// SetXRatelimitLimit sets the value of XRatelimitLimit. +func (s *R429Headers) SetXRatelimitLimit(val OptInt) { + s.XRatelimitLimit = val +} + +// SetXRatelimitReset sets the value of XRatelimitReset. +func (s *R429Headers) SetXRatelimitReset(val OptInt) { + s.XRatelimitReset = val +} + +// SetXRatelimitRetry sets the value of XRatelimitRetry. +func (s *R429Headers) SetXRatelimitRetry(val OptInt) { + s.XRatelimitRetry = val +} + +// SetResponse sets the value of Response. +func (s *R429Headers) SetResponse(val R429) { + s.Response = val +} + +func (*R429Headers) aPIV2BufferGoodsTaskGetRes() {} +func (*R429Headers) aPIV2BufferTasksGetRes() {} +func (*R429Headers) aPIV2HistoryGoodsTaskGetRes() {} +func (*R429Headers) aPIV2HistoryTasksGetRes() {} +func (*R429Headers) aPIV2ListGoodsFilterGetRes() {} +func (*R429Headers) aPIV2ListGoodsSizeNmGetRes() {} +func (*R429Headers) aPIV2QuarantineGoodsGetRes() {} +func (*R429Headers) aPIV2UploadTaskClubDiscountPostRes() {} +func (*R429Headers) aPIV2UploadTaskPostRes() {} +func (*R429Headers) aPIV2UploadTaskSizePostRes() {} +func (*R429Headers) aPIV3OfficesGetRes() {} +func (*R429Headers) aPIV3StocksWarehouseIdDeleteRes() {} +func (*R429Headers) aPIV3StocksWarehouseIdPostRes() {} +func (*R429Headers) aPIV3StocksWarehouseIdPutRes() {} +func (*R429Headers) aPIV3WarehousesGetRes() {} +func (*R429Headers) aPIV3WarehousesPostRes() {} +func (*R429Headers) aPIV3WarehousesWarehouseIdDeleteRes() {} +func (*R429Headers) aPIV3WarehousesWarehouseIdPutRes() {} +func (*R429Headers) contentV2BarcodesPostRes() {} +func (*R429Headers) contentV2CardsDeleteTrashPostRes() {} +func (*R429Headers) contentV2CardsErrorListGetRes() {} +func (*R429Headers) contentV2CardsLimitsGetRes() {} +func (*R429Headers) contentV2CardsRecoverPostRes() {} +func (*R429Headers) contentV2CardsUpdatePostRes() {} +func (*R429Headers) contentV2CardsUploadAddPostRes() {} +func (*R429Headers) contentV2CardsUploadPostRes() {} +func (*R429Headers) contentV2DirectoryColorsGetRes() {} +func (*R429Headers) contentV2DirectoryCountriesGetRes() {} +func (*R429Headers) contentV2DirectoryKindsGetRes() {} +func (*R429Headers) contentV2DirectorySeasonsGetRes() {} +func (*R429Headers) contentV2DirectoryTnvedGetRes() {} +func (*R429Headers) contentV2DirectoryVatGetRes() {} +func (*R429Headers) contentV2GetCardsListPostRes() {} +func (*R429Headers) contentV2GetCardsTrashPostRes() {} +func (*R429Headers) contentV2ObjectAllGetRes() {} +func (*R429Headers) contentV2ObjectCharcsSubjectIdGetRes() {} +func (*R429Headers) contentV2ObjectParentAllGetRes() {} +func (*R429Headers) contentV2TagNomenclatureLinkPostRes() {} +func (*R429Headers) contentV2TagsGetRes() {} +func (*R429Headers) contentV3MediaFilePostRes() {} +func (*R429Headers) contentV3MediaSavePostRes() {} + +// Ref: #/components/schemas/RequestAlreadyExistsError +type RequestAlreadyExistsError struct { + Data OptRequestAlreadyExistsErrorData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *RequestAlreadyExistsError) GetData() OptRequestAlreadyExistsErrorData { + return s.Data +} + +// GetError returns the value of Error. +func (s *RequestAlreadyExistsError) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *RequestAlreadyExistsError) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *RequestAlreadyExistsError) SetData(val OptRequestAlreadyExistsErrorData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *RequestAlreadyExistsError) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *RequestAlreadyExistsError) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*RequestAlreadyExistsError) aPIV2UploadTaskClubDiscountPostRes() {} +func (*RequestAlreadyExistsError) aPIV2UploadTaskPostRes() {} +func (*RequestAlreadyExistsError) aPIV2UploadTaskSizePostRes() {} + +type RequestAlreadyExistsErrorData struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + ID OptInt `json:"id"` + // Π€Π»Π°Π³ дублирования Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: `true`Β β€” такая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ + // Π΅ΡΡ‚ΡŒ. + AlreadyExists OptBool `json:"alreadyExists"` +} + +// GetID returns the value of ID. +func (s *RequestAlreadyExistsErrorData) GetID() OptInt { + return s.ID +} + +// GetAlreadyExists returns the value of AlreadyExists. +func (s *RequestAlreadyExistsErrorData) GetAlreadyExists() OptBool { + return s.AlreadyExists +} + +// SetID sets the value of ID. +func (s *RequestAlreadyExistsErrorData) SetID(val OptInt) { + s.ID = val +} + +// SetAlreadyExists sets the value of AlreadyExists. +func (s *RequestAlreadyExistsErrorData) SetAlreadyExists(val OptBool) { + s.AlreadyExists = val +} + +// Ref: #/components/schemas/responseBodyContentError400 +type ResponseBodyContentError400 struct { + Data OptResponseBodyContentError400Data `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilResponseBodyContentError400AdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ResponseBodyContentError400) GetData() OptResponseBodyContentError400Data { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseBodyContentError400) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseBodyContentError400) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ResponseBodyContentError400) GetAdditionalErrors() OptNilResponseBodyContentError400AdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ResponseBodyContentError400) SetData(val OptResponseBodyContentError400Data) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseBodyContentError400) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseBodyContentError400) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ResponseBodyContentError400) SetAdditionalErrors(val OptNilResponseBodyContentError400AdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ResponseBodyContentError400) contentV2CardsDeleteTrashPostRes() {} +func (*ResponseBodyContentError400) contentV2CardsErrorListGetRes() {} +func (*ResponseBodyContentError400) contentV2CardsRecoverPostRes() {} +func (*ResponseBodyContentError400) contentV2CardsUpdatePostRes() {} +func (*ResponseBodyContentError400) contentV2CardsUploadAddPostRes() {} +func (*ResponseBodyContentError400) contentV2CardsUploadPostRes() {} +func (*ResponseBodyContentError400) contentV2DirectoryColorsGetRes() {} +func (*ResponseBodyContentError400) contentV2DirectoryCountriesGetRes() {} +func (*ResponseBodyContentError400) contentV2DirectoryKindsGetRes() {} +func (*ResponseBodyContentError400) contentV2DirectorySeasonsGetRes() {} +func (*ResponseBodyContentError400) contentV2DirectoryTnvedGetRes() {} +func (*ResponseBodyContentError400) contentV2DirectoryVatGetRes() {} +func (*ResponseBodyContentError400) contentV2GetCardsListPostRes() {} +func (*ResponseBodyContentError400) contentV2GetCardsTrashPostRes() {} +func (*ResponseBodyContentError400) contentV2ObjectCharcsSubjectIdGetRes() {} +func (*ResponseBodyContentError400) contentV2ObjectParentAllGetRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ResponseBodyContentError400AdditionalErrors struct { + MoveNmsToTrash OptString `json:"MoveNmsToTrash"` +} + +// GetMoveNmsToTrash returns the value of MoveNmsToTrash. +func (s *ResponseBodyContentError400AdditionalErrors) GetMoveNmsToTrash() OptString { + return s.MoveNmsToTrash +} + +// SetMoveNmsToTrash sets the value of MoveNmsToTrash. +func (s *ResponseBodyContentError400AdditionalErrors) SetMoveNmsToTrash(val OptString) { + s.MoveNmsToTrash = val +} + +type ResponseBodyContentError400Data struct{} + +// Ref: #/components/schemas/responseBodyContentError403 +type ResponseBodyContentError403 struct { + Data OptResponseBodyContentError403Data `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ResponseBodyContentError403) GetData() OptResponseBodyContentError403Data { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseBodyContentError403) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseBodyContentError403) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ResponseBodyContentError403) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ResponseBodyContentError403) SetData(val OptResponseBodyContentError403Data) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseBodyContentError403) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseBodyContentError403) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ResponseBodyContentError403) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ResponseBodyContentError403) contentV2BarcodesPostRes() {} +func (*ResponseBodyContentError403) contentV2CardsDeleteTrashPostRes() {} +func (*ResponseBodyContentError403) contentV2CardsErrorListGetRes() {} +func (*ResponseBodyContentError403) contentV2CardsLimitsGetRes() {} +func (*ResponseBodyContentError403) contentV2CardsRecoverPostRes() {} +func (*ResponseBodyContentError403) contentV2CardsUpdatePostRes() {} +func (*ResponseBodyContentError403) contentV2DirectoryColorsGetRes() {} +func (*ResponseBodyContentError403) contentV2DirectoryCountriesGetRes() {} +func (*ResponseBodyContentError403) contentV2DirectoryKindsGetRes() {} +func (*ResponseBodyContentError403) contentV2DirectorySeasonsGetRes() {} +func (*ResponseBodyContentError403) contentV2DirectoryTnvedGetRes() {} +func (*ResponseBodyContentError403) contentV2DirectoryVatGetRes() {} +func (*ResponseBodyContentError403) contentV2GetCardsListPostRes() {} +func (*ResponseBodyContentError403) contentV2GetCardsTrashPostRes() {} +func (*ResponseBodyContentError403) contentV2ObjectCharcsSubjectIdGetRes() {} +func (*ResponseBodyContentError403) contentV2ObjectParentAllGetRes() {} +func (*ResponseBodyContentError403) contentV2TagNomenclatureLinkPostRes() {} +func (*ResponseBodyContentError403) contentV2TagsGetRes() {} + +type ResponseBodyContentError403Data struct{} + +// Ref: #/components/schemas/responseCardCreate +type ResponseCardCreate struct { + Data OptResponseCardCreateData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptResponseCardCreateAdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ResponseCardCreate) GetData() OptResponseCardCreateData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseCardCreate) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseCardCreate) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ResponseCardCreate) GetAdditionalErrors() OptResponseCardCreateAdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ResponseCardCreate) SetData(val OptResponseCardCreateData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseCardCreate) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseCardCreate) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ResponseCardCreate) SetAdditionalErrors(val OptResponseCardCreateAdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ResponseCardCreate) contentV2CardsUpdatePostRes() {} +func (*ResponseCardCreate) contentV2CardsUploadAddPostRes() {} +func (*ResponseCardCreate) contentV2CardsUploadPostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +// ResponseCardCreateAdditionalErrors represents sum type. +type ResponseCardCreateAdditionalErrors struct { + Type ResponseCardCreateAdditionalErrorsType // switch on this field + Null struct{} + ResponseCardCreateAdditionalErrors0 ResponseCardCreateAdditionalErrors0 + String string +} + +// ResponseCardCreateAdditionalErrorsType is oneOf type of ResponseCardCreateAdditionalErrors. +type ResponseCardCreateAdditionalErrorsType string + +// Possible values for ResponseCardCreateAdditionalErrorsType. +const ( + NullResponseCardCreateAdditionalErrors ResponseCardCreateAdditionalErrorsType = "struct{}" + ResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors ResponseCardCreateAdditionalErrorsType = "ResponseCardCreateAdditionalErrors0" + StringResponseCardCreateAdditionalErrors ResponseCardCreateAdditionalErrorsType = "string" +) + +// IsNull reports whether ResponseCardCreateAdditionalErrors is struct{}. +func (s ResponseCardCreateAdditionalErrors) IsNull() bool { + return s.Type == NullResponseCardCreateAdditionalErrors +} + +// IsResponseCardCreateAdditionalErrors0 reports whether ResponseCardCreateAdditionalErrors is ResponseCardCreateAdditionalErrors0. +func (s ResponseCardCreateAdditionalErrors) IsResponseCardCreateAdditionalErrors0() bool { + return s.Type == ResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors +} + +// IsString reports whether ResponseCardCreateAdditionalErrors is string. +func (s ResponseCardCreateAdditionalErrors) IsString() bool { + return s.Type == StringResponseCardCreateAdditionalErrors +} + +// SetNull sets ResponseCardCreateAdditionalErrors to struct{}. +func (s *ResponseCardCreateAdditionalErrors) SetNull(v struct{}) { + s.Type = NullResponseCardCreateAdditionalErrors + s.Null = v +} + +// GetNull returns struct{} and true boolean if ResponseCardCreateAdditionalErrors is struct{}. +func (s ResponseCardCreateAdditionalErrors) GetNull() (v struct{}, ok bool) { + if !s.IsNull() { + return v, false + } + return s.Null, true +} + +// NewNullResponseCardCreateAdditionalErrors returns new ResponseCardCreateAdditionalErrors from struct{}. +func NewNullResponseCardCreateAdditionalErrors(v struct{}) ResponseCardCreateAdditionalErrors { + var s ResponseCardCreateAdditionalErrors + s.SetNull(v) + return s +} + +// SetResponseCardCreateAdditionalErrors0 sets ResponseCardCreateAdditionalErrors to ResponseCardCreateAdditionalErrors0. +func (s *ResponseCardCreateAdditionalErrors) SetResponseCardCreateAdditionalErrors0(v ResponseCardCreateAdditionalErrors0) { + s.Type = ResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors + s.ResponseCardCreateAdditionalErrors0 = v +} + +// GetResponseCardCreateAdditionalErrors0 returns ResponseCardCreateAdditionalErrors0 and true boolean if ResponseCardCreateAdditionalErrors is ResponseCardCreateAdditionalErrors0. +func (s ResponseCardCreateAdditionalErrors) GetResponseCardCreateAdditionalErrors0() (v ResponseCardCreateAdditionalErrors0, ok bool) { + if !s.IsResponseCardCreateAdditionalErrors0() { + return v, false + } + return s.ResponseCardCreateAdditionalErrors0, true +} + +// NewResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors returns new ResponseCardCreateAdditionalErrors from ResponseCardCreateAdditionalErrors0. +func NewResponseCardCreateAdditionalErrors0ResponseCardCreateAdditionalErrors(v ResponseCardCreateAdditionalErrors0) ResponseCardCreateAdditionalErrors { + var s ResponseCardCreateAdditionalErrors + s.SetResponseCardCreateAdditionalErrors0(v) + return s +} + +// SetString sets ResponseCardCreateAdditionalErrors to string. +func (s *ResponseCardCreateAdditionalErrors) SetString(v string) { + s.Type = StringResponseCardCreateAdditionalErrors + s.String = v +} + +// GetString returns string and true boolean if ResponseCardCreateAdditionalErrors is string. +func (s ResponseCardCreateAdditionalErrors) GetString() (v string, ok bool) { + if !s.IsString() { + return v, false + } + return s.String, true +} + +// NewStringResponseCardCreateAdditionalErrors returns new ResponseCardCreateAdditionalErrors from string. +func NewStringResponseCardCreateAdditionalErrors(v string) ResponseCardCreateAdditionalErrors { + var s ResponseCardCreateAdditionalErrors + s.SetString(v) + return s +} + +type ResponseCardCreateAdditionalErrors0 struct { + String OptString `json:"string"` +} + +// GetString returns the value of String. +func (s *ResponseCardCreateAdditionalErrors0) GetString() OptString { + return s.String +} + +// SetString sets the value of String. +func (s *ResponseCardCreateAdditionalErrors0) SetString(val OptString) { + s.String = val +} + +type ResponseCardCreateData struct{} + +// Ref: #/components/schemas/responseContentError4 +type ResponseContentError4 struct { + Data OptResponseContentError4Data `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilResponseContentError4AdditionalErrors `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ResponseContentError4) GetData() OptResponseContentError4Data { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseContentError4) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseContentError4) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ResponseContentError4) GetAdditionalErrors() OptNilResponseContentError4AdditionalErrors { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ResponseContentError4) SetData(val OptResponseContentError4Data) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseContentError4) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseContentError4) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ResponseContentError4) SetAdditionalErrors(val OptNilResponseContentError4AdditionalErrors) { + s.AdditionalErrors = val +} + +func (*ResponseContentError4) contentV2TagNomenclatureLinkPostRes() {} + +// Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. +type ResponseContentError4AdditionalErrors struct { + Description OptString `json:"description"` +} + +// GetDescription returns the value of Description. +func (s *ResponseContentError4AdditionalErrors) GetDescription() OptString { + return s.Description +} + +// SetDescription sets the value of Description. +func (s *ResponseContentError4AdditionalErrors) SetDescription(val OptString) { + s.Description = val +} + +type ResponseContentError4Data struct{} + +// Ref: #/components/schemas/responseContentError6 +type ResponseContentError6 struct { + Data OptResponseContentError6Data `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ОписаниС ошибки. + ErrorText OptString `json:"errorText"` + // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки. + AdditionalErrors OptNilString `json:"additionalErrors"` +} + +// GetData returns the value of Data. +func (s *ResponseContentError6) GetData() OptResponseContentError6Data { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseContentError6) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseContentError6) GetErrorText() OptString { + return s.ErrorText +} + +// GetAdditionalErrors returns the value of AdditionalErrors. +func (s *ResponseContentError6) GetAdditionalErrors() OptNilString { + return s.AdditionalErrors +} + +// SetData sets the value of Data. +func (s *ResponseContentError6) SetData(val OptResponseContentError6Data) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseContentError6) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseContentError6) SetErrorText(val OptString) { + s.ErrorText = val +} + +// SetAdditionalErrors sets the value of AdditionalErrors. +func (s *ResponseContentError6) SetAdditionalErrors(val OptNilString) { + s.AdditionalErrors = val +} + +func (*ResponseContentError6) contentV2TagNomenclatureLinkPostRes() {} + +type ResponseContentError6Data struct{} + +// Ref: #/components/schemas/ResponseError +type ResponseError struct { + Data OptResponseErrorData `json:"data"` + Error OptBool `json:"error"` + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseError) GetData() OptResponseErrorData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseError) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseError) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseError) SetData(val OptResponseErrorData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseError) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseError) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseError) aPIV2ListGoodsFilterGetRes() {} +func (*ResponseError) aPIV2ListGoodsSizeNmGetRes() {} + +type ResponseErrorData struct{} + +type ResponseGoodBufferHistories struct { + Data OptResponseGoodBufferHistoriesData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseGoodBufferHistories) GetData() OptResponseGoodBufferHistoriesData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseGoodBufferHistories) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseGoodBufferHistories) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseGoodBufferHistories) SetData(val OptResponseGoodBufferHistoriesData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseGoodBufferHistories) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseGoodBufferHistories) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseGoodBufferHistories) aPIV2BufferGoodsTaskGetRes() {} + +type ResponseGoodBufferHistoriesData struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID OptInt `json:"uploadID"` + // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. + BufferGoods []GoodBufferHistory `json:"bufferGoods"` +} + +// GetUploadID returns the value of UploadID. +func (s *ResponseGoodBufferHistoriesData) GetUploadID() OptInt { + return s.UploadID +} + +// GetBufferGoods returns the value of BufferGoods. +func (s *ResponseGoodBufferHistoriesData) GetBufferGoods() []GoodBufferHistory { + return s.BufferGoods +} + +// SetUploadID sets the value of UploadID. +func (s *ResponseGoodBufferHistoriesData) SetUploadID(val OptInt) { + s.UploadID = val +} + +// SetBufferGoods sets the value of BufferGoods. +func (s *ResponseGoodBufferHistoriesData) SetBufferGoods(val []GoodBufferHistory) { + s.BufferGoods = val +} + +type ResponseGoodHistories struct { + Data OptResponseGoodHistoriesData `json:"data"` +} + +// GetData returns the value of Data. +func (s *ResponseGoodHistories) GetData() OptResponseGoodHistoriesData { + return s.Data +} + +// SetData sets the value of Data. +func (s *ResponseGoodHistories) SetData(val OptResponseGoodHistoriesData) { + s.Data = val +} + +func (*ResponseGoodHistories) aPIV2HistoryGoodsTaskGetRes() {} + +type ResponseGoodHistoriesData struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + UploadID OptNilInt `json:"uploadID"` + // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. + HistoryGoods []GoodHistory `json:"historyGoods"` +} + +// GetUploadID returns the value of UploadID. +func (s *ResponseGoodHistoriesData) GetUploadID() OptNilInt { + return s.UploadID +} + +// GetHistoryGoods returns the value of HistoryGoods. +func (s *ResponseGoodHistoriesData) GetHistoryGoods() []GoodHistory { + return s.HistoryGoods +} + +// SetUploadID sets the value of UploadID. +func (s *ResponseGoodHistoriesData) SetUploadID(val OptNilInt) { + s.UploadID = val +} + +// SetHistoryGoods sets the value of HistoryGoods. +func (s *ResponseGoodHistoriesData) SetHistoryGoods(val []GoodHistory) { + s.HistoryGoods = val +} + +type ResponseGoodsLists struct { + Data OptResponseGoodsListsData `json:"data"` +} + +// GetData returns the value of Data. +func (s *ResponseGoodsLists) GetData() OptResponseGoodsListsData { + return s.Data +} + +// SetData sets the value of Data. +func (s *ResponseGoodsLists) SetData(val OptResponseGoodsListsData) { + s.Data = val +} + +func (*ResponseGoodsLists) aPIV2ListGoodsFilterGetRes() {} + +type ResponseGoodsListsData struct { + // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ…. + ListGoods []GoodsList `json:"listGoods"` +} + +// GetListGoods returns the value of ListGoods. +func (s *ResponseGoodsListsData) GetListGoods() []GoodsList { + return s.ListGoods +} + +// SetListGoods sets the value of ListGoods. +func (s *ResponseGoodsListsData) SetListGoods(val []GoodsList) { + s.ListGoods = val +} + +type ResponseQuarantineGoods struct { + Data OptNilResponseQuarantineGoodsData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseQuarantineGoods) GetData() OptNilResponseQuarantineGoodsData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseQuarantineGoods) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseQuarantineGoods) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseQuarantineGoods) SetData(val OptNilResponseQuarantineGoodsData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseQuarantineGoods) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseQuarantineGoods) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseQuarantineGoods) aPIV2QuarantineGoodsGetRes() {} + +type ResponseQuarantineGoodsData struct { + // Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. + QuarantineGoods []QuarantineGoods `json:"quarantineGoods"` +} + +// GetQuarantineGoods returns the value of QuarantineGoods. +func (s *ResponseQuarantineGoodsData) GetQuarantineGoods() []QuarantineGoods { + return s.QuarantineGoods +} + +// SetQuarantineGoods sets the value of QuarantineGoods. +func (s *ResponseQuarantineGoodsData) SetQuarantineGoods(val []QuarantineGoods) { + s.QuarantineGoods = val +} + +type ResponseSizeLists struct { + Data OptResponseSizeListsData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseSizeLists) GetData() OptResponseSizeListsData { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseSizeLists) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseSizeLists) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseSizeLists) SetData(val OptResponseSizeListsData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseSizeLists) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseSizeLists) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseSizeLists) aPIV2ListGoodsSizeNmGetRes() {} + +type ResponseSizeListsData struct { + // Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€Π°. + ListGoods []SizeGood `json:"listGoods"` +} + +// GetListGoods returns the value of ListGoods. +func (s *ResponseSizeListsData) GetListGoods() []SizeGood { + return s.ListGoods +} + +// SetListGoods sets the value of ListGoods. +func (s *ResponseSizeListsData) SetListGoods(val []SizeGood) { + s.ListGoods = val +} + +type ResponseTaskBuffer struct { + Data SupplierTaskMetadataBuffer `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseTaskBuffer) GetData() SupplierTaskMetadataBuffer { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseTaskBuffer) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseTaskBuffer) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseTaskBuffer) SetData(val SupplierTaskMetadataBuffer) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseTaskBuffer) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseTaskBuffer) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseTaskBuffer) aPIV2BufferTasksGetRes() {} + +type ResponseTaskHistory struct { + Data SupplierTaskMetadata `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки + //
+ // Ошибка The new price is several times lower than the current price. Item has been + // moved to Price Quarantine Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли новая Ρ†Π΅Π½Π° со + // скидкой хотя Π±Ρ‹ Π²Β 3 Ρ€Π°Π·Π° мСньшС старой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ + // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ вывСсти + // Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ + //
. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *ResponseTaskHistory) GetData() SupplierTaskMetadata { + return s.Data +} + +// GetError returns the value of Error. +func (s *ResponseTaskHistory) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *ResponseTaskHistory) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *ResponseTaskHistory) SetData(val SupplierTaskMetadata) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *ResponseTaskHistory) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *ResponseTaskHistory) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*ResponseTaskHistory) aPIV2HistoryTasksGetRes() {} + +// Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅. +// Ref: #/components/schemas/SizeGood +type SizeGood struct { + // Артикул WB. + NmID OptInt `json:"nmID"` + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ + // списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎΒ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](. + // /work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `sizeID`. + // Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`. + SizeID OptInt `json:"sizeID"` + // Артикул ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + VendorCode OptString `json:"vendorCode"` + // Π¦Π΅Π½Π°. + Price OptInt `json:"price"` + // Π’Π°Π»ΡŽΡ‚Π°, ΠΏΠΎ стандарту ISO 4217. + CurrencyIsoCode4217 OptString `json:"currencyIsoCode4217"` + // Π¦Π΅Π½Π° со скидкой. + DiscountedPrice OptFloat64 `json:"discountedPrice"` + // Π¦Π΅Π½Π° со скидкой, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ скидку WB ΠšΠ»ΡƒΠ±Π°. + ClubDiscountedPrice OptFloat64 `json:"clubDiscountedPrice"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ°,Β %. + Discount OptInt `json:"discount"` + // Π‘ΠΊΠΈΠ΄ΠΊΠ° WB ΠšΠ»ΡƒΠ±Π°,Β %. + ClubDiscount OptInt `json:"clubDiscount"` + // Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°. + TechSizeName OptString `json:"techSizeName"` + // МоТно Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… + // Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²: `true`Β β€” ΠΌΠΎΠΆΠ½ΠΎ, `false`Β β€” нСльзя. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ + // зависит ΠΎΡ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + EditableSizePrice OptBool `json:"editableSizePrice"` +} + +// GetNmID returns the value of NmID. +func (s *SizeGood) GetNmID() OptInt { + return s.NmID +} + +// GetSizeID returns the value of SizeID. +func (s *SizeGood) GetSizeID() OptInt { + return s.SizeID +} + +// GetVendorCode returns the value of VendorCode. +func (s *SizeGood) GetVendorCode() OptString { + return s.VendorCode +} + +// GetPrice returns the value of Price. +func (s *SizeGood) GetPrice() OptInt { + return s.Price +} + +// GetCurrencyIsoCode4217 returns the value of CurrencyIsoCode4217. +func (s *SizeGood) GetCurrencyIsoCode4217() OptString { + return s.CurrencyIsoCode4217 +} + +// GetDiscountedPrice returns the value of DiscountedPrice. +func (s *SizeGood) GetDiscountedPrice() OptFloat64 { + return s.DiscountedPrice +} + +// GetClubDiscountedPrice returns the value of ClubDiscountedPrice. +func (s *SizeGood) GetClubDiscountedPrice() OptFloat64 { + return s.ClubDiscountedPrice +} + +// GetDiscount returns the value of Discount. +func (s *SizeGood) GetDiscount() OptInt { + return s.Discount +} + +// GetClubDiscount returns the value of ClubDiscount. +func (s *SizeGood) GetClubDiscount() OptInt { + return s.ClubDiscount +} + +// GetTechSizeName returns the value of TechSizeName. +func (s *SizeGood) GetTechSizeName() OptString { + return s.TechSizeName +} + +// GetEditableSizePrice returns the value of EditableSizePrice. +func (s *SizeGood) GetEditableSizePrice() OptBool { + return s.EditableSizePrice +} + +// SetNmID sets the value of NmID. +func (s *SizeGood) SetNmID(val OptInt) { + s.NmID = val +} + +// SetSizeID sets the value of SizeID. +func (s *SizeGood) SetSizeID(val OptInt) { + s.SizeID = val +} + +// SetVendorCode sets the value of VendorCode. +func (s *SizeGood) SetVendorCode(val OptString) { + s.VendorCode = val +} + +// SetPrice sets the value of Price. +func (s *SizeGood) SetPrice(val OptInt) { + s.Price = val +} + +// SetCurrencyIsoCode4217 sets the value of CurrencyIsoCode4217. +func (s *SizeGood) SetCurrencyIsoCode4217(val OptString) { + s.CurrencyIsoCode4217 = val +} + +// SetDiscountedPrice sets the value of DiscountedPrice. +func (s *SizeGood) SetDiscountedPrice(val OptFloat64) { + s.DiscountedPrice = val +} + +// SetClubDiscountedPrice sets the value of ClubDiscountedPrice. +func (s *SizeGood) SetClubDiscountedPrice(val OptFloat64) { + s.ClubDiscountedPrice = val +} + +// SetDiscount sets the value of Discount. +func (s *SizeGood) SetDiscount(val OptInt) { + s.Discount = val +} + +// SetClubDiscount sets the value of ClubDiscount. +func (s *SizeGood) SetClubDiscount(val OptInt) { + s.ClubDiscount = val +} + +// SetTechSizeName sets the value of TechSizeName. +func (s *SizeGood) SetTechSizeName(val OptString) { + s.TechSizeName = val +} + +// SetEditableSizePrice sets the value of EditableSizePrice. +func (s *SizeGood) SetEditableSizePrice(val OptBool) { + s.EditableSizePrice = val +} + +// Ref: #/components/schemas/SizeGoodReq +type SizeGoodReq struct { + // Артикул WB. + NmID int `json:"nmID"` + // ID Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ + // списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎΒ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](. + // /work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ `sizeID`. + // Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° это ΠΏΠΎΠ»Π΅ `chrtID`. + SizeID int `json:"sizeID"` + // Π¦Π΅Π½Π°. Π’Π°Π»ΡŽΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° + // [ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎΒ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ](. + // /work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get), ΠΏΠΎΠ»Π΅ + // `currencyIsoCode4217`. + Price int `json:"price"` +} + +// GetNmID returns the value of NmID. +func (s *SizeGoodReq) GetNmID() int { + return s.NmID +} + +// GetSizeID returns the value of SizeID. +func (s *SizeGoodReq) GetSizeID() int { + return s.SizeID +} + +// GetPrice returns the value of Price. +func (s *SizeGoodReq) GetPrice() int { + return s.Price +} + +// SetNmID sets the value of NmID. +func (s *SizeGoodReq) SetNmID(val int) { + s.NmID = val +} + +// SetSizeID sets the value of SizeID. +func (s *SizeGoodReq) SetSizeID(val int) { + s.SizeID = val +} + +// SetPrice sets the value of Price. +func (s *SizeGoodReq) SetPrice(val int) { + s.Price = val +} + +type SizeGoodsBody []SizeGoodReq + +type StocksWarehouseError []StocksWarehouseErrorItem + +func (*StocksWarehouseError) aPIV3StocksWarehouseIdPutRes() {} + +type StocksWarehouseErrorItem struct { + // Error code. + Code OptString `json:"code"` + // Additional data enriching the error. + Data OptStocksWarehouseErrorItemData `json:"data"` + // Error description. + Message OptString `json:"message"` +} + +// GetCode returns the value of Code. +func (s *StocksWarehouseErrorItem) GetCode() OptString { + return s.Code +} + +// GetData returns the value of Data. +func (s *StocksWarehouseErrorItem) GetData() OptStocksWarehouseErrorItemData { + return s.Data +} + +// GetMessage returns the value of Message. +func (s *StocksWarehouseErrorItem) GetMessage() OptString { + return s.Message +} + +// SetCode sets the value of Code. +func (s *StocksWarehouseErrorItem) SetCode(val OptString) { + s.Code = val +} + +// SetData sets the value of Data. +func (s *StocksWarehouseErrorItem) SetData(val OptStocksWarehouseErrorItemData) { + s.Data = val +} + +// SetMessage sets the value of Message. +func (s *StocksWarehouseErrorItem) SetMessage(val OptString) { + s.Message = val +} + +// Additional data enriching the error. +type StocksWarehouseErrorItemData struct{} + +type SupplierTaskMetadata jx.Raw + +type SupplierTaskMetadataBuffer jx.Raw + +// Ref: #/components/schemas/TaskCreated +type TaskCreated struct { + Data OptTaskCreatedData `json:"data"` + // Π€Π»Π°Π³ ошибки. + Error OptBool `json:"error"` + // ВСкст ошибки. + ErrorText OptString `json:"errorText"` +} + +// GetData returns the value of Data. +func (s *TaskCreated) GetData() OptTaskCreatedData { + return s.Data +} + +// GetError returns the value of Error. +func (s *TaskCreated) GetError() OptBool { + return s.Error +} + +// GetErrorText returns the value of ErrorText. +func (s *TaskCreated) GetErrorText() OptString { + return s.ErrorText +} + +// SetData sets the value of Data. +func (s *TaskCreated) SetData(val OptTaskCreatedData) { + s.Data = val +} + +// SetError sets the value of Error. +func (s *TaskCreated) SetError(val OptBool) { + s.Error = val +} + +// SetErrorText sets the value of ErrorText. +func (s *TaskCreated) SetErrorText(val OptString) { + s.ErrorText = val +} + +func (*TaskCreated) aPIV2UploadTaskClubDiscountPostRes() {} +func (*TaskCreated) aPIV2UploadTaskPostRes() {} +func (*TaskCreated) aPIV2UploadTaskSizePostRes() {} + +type TaskCreatedData struct { + // ID Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + ID OptInt `json:"id"` + // Π€Π»Π°Π³ дублирования Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: `true`Β β€” такая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠΆΠ΅ + // Π΅ΡΡ‚ΡŒ. + AlreadyExists OptBool `json:"alreadyExists"` +} + +// GetID returns the value of ID. +func (s *TaskCreatedData) GetID() OptInt { + return s.ID +} + +// GetAlreadyExists returns the value of AlreadyExists. +func (s *TaskCreatedData) GetAlreadyExists() OptBool { + return s.AlreadyExists +} + +// SetID sets the value of ID. +func (s *TaskCreatedData) SetID(val OptInt) { + s.ID = val +} + +// SetAlreadyExists sets the value of AlreadyExists. +func (s *TaskCreatedData) SetAlreadyExists(val OptBool) { + s.AlreadyExists = val +} + +// Π”Π°Π½Π½Ρ‹Π΅ ΠΎ складС ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +// Ref: #/components/schemas/Warehouse +type Warehouse struct { + // НазваниС склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + Name OptString `json:"name"` + // ID склада WB. + OfficeId OptInt64 `json:"officeId"` + // ID склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + ID OptInt64 `json:"id"` + //
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°:
1 - ΠœΠ“Π’ (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ + // ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
+ //
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
. + CargoType OptWarehouseCargoType `json:"cargoType"` + // Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: + // - `1` β€” доставка Π½Π° склад WB (FBS) + // - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) + // - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) + // - `5` β€” самовывоз (C&C) + // - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS). + DeliveryType OptWarehouseDeliveryType `json:"deliveryType"` +} + +// GetName returns the value of Name. +func (s *Warehouse) GetName() OptString { + return s.Name +} + +// GetOfficeId returns the value of OfficeId. +func (s *Warehouse) GetOfficeId() OptInt64 { + return s.OfficeId +} + +// GetID returns the value of ID. +func (s *Warehouse) GetID() OptInt64 { + return s.ID +} + +// GetCargoType returns the value of CargoType. +func (s *Warehouse) GetCargoType() OptWarehouseCargoType { + return s.CargoType +} + +// GetDeliveryType returns the value of DeliveryType. +func (s *Warehouse) GetDeliveryType() OptWarehouseDeliveryType { + return s.DeliveryType +} + +// SetName sets the value of Name. +func (s *Warehouse) SetName(val OptString) { + s.Name = val +} + +// SetOfficeId sets the value of OfficeId. +func (s *Warehouse) SetOfficeId(val OptInt64) { + s.OfficeId = val +} + +// SetID sets the value of ID. +func (s *Warehouse) SetID(val OptInt64) { + s.ID = val +} + +// SetCargoType sets the value of CargoType. +func (s *Warehouse) SetCargoType(val OptWarehouseCargoType) { + s.CargoType = val +} + +// SetDeliveryType sets the value of DeliveryType. +func (s *Warehouse) SetDeliveryType(val OptWarehouseDeliveryType) { + s.DeliveryType = val +} + +//
Π’ΠΈΠΏ Ρ‚ΠΎΠ²Π°Ρ€Π°:
1 - ΠœΠ“Π’ (ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ +// ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
2 - Π‘Π“Π’ (Π‘Π²Π΅Ρ€Ρ…Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
+//
3 - ΠšΠ“Π’+ (ΠšΡ€ΡƒΠΏΠ½ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€)
. +type WarehouseCargoType int + +const ( + WarehouseCargoType1 WarehouseCargoType = 1 + WarehouseCargoType2 WarehouseCargoType = 2 + WarehouseCargoType3 WarehouseCargoType = 3 +) + +// AllValues returns all WarehouseCargoType values. +func (WarehouseCargoType) AllValues() []WarehouseCargoType { + return []WarehouseCargoType{ + WarehouseCargoType1, + WarehouseCargoType2, + WarehouseCargoType3, + } +} + +// Π’ΠΈΠΏ доставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ склад: +// - `1` β€” доставка Π½Π° склад WB (FBS) +// - `2` β€” доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (DBS) +// - `3` β€” доставка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ WB (DBW) +// - `5` β€” самовывоз (C&C) +// - `6` β€” экспрСсс-доставка силами ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (Π•DBS). +type WarehouseDeliveryType int + +const ( + WarehouseDeliveryType1 WarehouseDeliveryType = 1 + WarehouseDeliveryType2 WarehouseDeliveryType = 2 + WarehouseDeliveryType3 WarehouseDeliveryType = 3 + WarehouseDeliveryType5 WarehouseDeliveryType = 5 + WarehouseDeliveryType6 WarehouseDeliveryType = 6 +) + +// AllValues returns all WarehouseDeliveryType values. +func (WarehouseDeliveryType) AllValues() []WarehouseDeliveryType { + return []WarehouseDeliveryType{ + WarehouseDeliveryType1, + WarehouseDeliveryType2, + WarehouseDeliveryType3, + WarehouseDeliveryType5, + WarehouseDeliveryType6, + } +} diff --git a/pkg/api/wb/client/oas_security_gen.go b/pkg/api/wb/client/oas_security_gen.go new file mode 100644 index 0000000..c6bd4d7 --- /dev/null +++ b/pkg/api/wb/client/oas_security_gen.go @@ -0,0 +1,111 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/http" + "strings" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/ogenerrors" +) + +// SecurityHandler is handler for security parameters. +type SecurityHandler interface { + // HandleHeaderApiKey handles HeaderApiKey security. + HandleHeaderApiKey(ctx context.Context, operationName OperationName, t HeaderApiKey) (context.Context, error) +} + +func findAuthorization(h http.Header, prefix string) (string, bool) { + v, ok := h["Authorization"] + if !ok { + return "", false + } + for _, vv := range v { + scheme, value, ok := strings.Cut(vv, " ") + if !ok || !strings.EqualFold(scheme, prefix) { + continue + } + return value, true + } + return "", false +} + +var operationRolesHeaderApiKey = map[string][]string{ + APIV2BufferGoodsTaskGetOperation: []string{}, + APIV2BufferTasksGetOperation: []string{}, + APIV2HistoryGoodsTaskGetOperation: []string{}, + APIV2HistoryTasksGetOperation: []string{}, + APIV2ListGoodsFilterGetOperation: []string{}, + APIV2ListGoodsSizeNmGetOperation: []string{}, + APIV2QuarantineGoodsGetOperation: []string{}, + APIV2UploadTaskClubDiscountPostOperation: []string{}, + APIV2UploadTaskPostOperation: []string{}, + APIV2UploadTaskSizePostOperation: []string{}, + APIV3OfficesGetOperation: []string{}, + APIV3StocksWarehouseIdDeleteOperation: []string{}, + APIV3StocksWarehouseIdPostOperation: []string{}, + APIV3StocksWarehouseIdPutOperation: []string{}, + APIV3WarehousesGetOperation: []string{}, + APIV3WarehousesPostOperation: []string{}, + APIV3WarehousesWarehouseIdDeleteOperation: []string{}, + APIV3WarehousesWarehouseIdPutOperation: []string{}, + ContentV2BarcodesPostOperation: []string{}, + ContentV2CardsDeleteTrashPostOperation: []string{}, + ContentV2CardsErrorListGetOperation: []string{}, + ContentV2CardsLimitsGetOperation: []string{}, + ContentV2CardsRecoverPostOperation: []string{}, + ContentV2CardsUpdatePostOperation: []string{}, + ContentV2CardsUploadAddPostOperation: []string{}, + ContentV2CardsUploadPostOperation: []string{}, + ContentV2DirectoryColorsGetOperation: []string{}, + ContentV2DirectoryCountriesGetOperation: []string{}, + ContentV2DirectoryKindsGetOperation: []string{}, + ContentV2DirectorySeasonsGetOperation: []string{}, + ContentV2DirectoryTnvedGetOperation: []string{}, + ContentV2DirectoryVatGetOperation: []string{}, + ContentV2GetCardsListPostOperation: []string{}, + ContentV2GetCardsTrashPostOperation: []string{}, + ContentV2ObjectAllGetOperation: []string{}, + ContentV2ObjectCharcsSubjectIdGetOperation: []string{}, + ContentV2ObjectParentAllGetOperation: []string{}, + ContentV2TagNomenclatureLinkPostOperation: []string{}, + ContentV2TagsGetOperation: []string{}, + ContentV3MediaFilePostOperation: []string{}, + ContentV3MediaSavePostOperation: []string{}, +} + +func (s *Server) securityHeaderApiKey(ctx context.Context, operationName OperationName, req *http.Request) (context.Context, bool, error) { + var t HeaderApiKey + const parameterName = "Authorization" + value := req.Header.Get(parameterName) + if value == "" { + return ctx, false, nil + } + t.APIKey = value + t.Roles = operationRolesHeaderApiKey[operationName] + rctx, err := s.sec.HandleHeaderApiKey(ctx, operationName, t) + if errors.Is(err, ogenerrors.ErrSkipServerSecurity) { + return nil, false, nil + } else if err != nil { + return nil, false, err + } + return rctx, true, err +} + +// SecuritySource is provider of security values (tokens, passwords, etc.). +type SecuritySource interface { + // HeaderApiKey provides HeaderApiKey security value. + HeaderApiKey(ctx context.Context, operationName OperationName, client *Client) (HeaderApiKey, error) +} + +func (s *Client) securityHeaderApiKey(ctx context.Context, operationName OperationName, req *http.Request) error { + t, err := s.sec.HeaderApiKey(ctx, operationName, s) + if err != nil { + return errors.Wrap(err, "security source \"HeaderApiKey\"") + } + req.Header.Set("Authorization", t.APIKey) + return nil +} diff --git a/pkg/api/wb/client/oas_server_gen.go b/pkg/api/wb/client/oas_server_gen.go new file mode 100644 index 0000000..e62cfa5 --- /dev/null +++ b/pkg/api/wb/client/oas_server_gen.go @@ -0,0 +1,951 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" +) + +// Handler handles operations described by OpenAPI v3 specification. +type Handler interface { + // APIV2BufferGoodsTaskGet implements GET /api/v2/buffer/goods/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² + // Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. + //
+ // НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ + // скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° + // Π°ΠΊΡ†ΠΈΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/buffer/goods/task + APIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (APIV2BufferGoodsTaskGetRes, error) + // APIV2BufferTasksGet implements GET /api/v2/buffer/tasks operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. + //
+ // НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ + // скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° + // Π°ΠΊΡ†ΠΈΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/buffer/tasks + APIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (APIV2BufferTasksGetRes, error) + // APIV2HistoryGoodsTaskGet implements GET /api/v2/history/goods/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± + // ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. + //
+ // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок + // для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/history/goods/task + APIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (APIV2HistoryGoodsTaskGetRes, error) + // APIV2HistoryTasksGet implements GET /api/v2/history/tasks operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ + // Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок. + //
+ // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок + // для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/history/tasks + APIV2HistoryTasksGet(ctx context.Context, params APIV2HistoryTasksGetParams) (APIV2HistoryTasksGetRes, error) + // APIV2ListGoodsFilterGet implements GET /api/v2/list/goods/filter operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… + // Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB + // ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, + // ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² + // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству + // записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` + // плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, + // ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ + // [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/list/goods/filter + APIV2ListGoodsFilterGet(ctx context.Context, params APIV2ListGoodsFilterGetParams) (APIV2ListGoodsFilterGetRes, error) + // APIV2ListGoodsSizeNmGet implements GET /api/v2/list/goods/size/nm operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… + // ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки + // для [WB + // ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). + //

+ // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для + // Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/list/goods/size/nm + APIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (APIV2ListGoodsSizeNmGetRes, error) + // APIV2QuarantineGoodsGet implements GET /api/v2/quarantine/goods operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. + //

+ // Если новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Β 3 + // Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π² + // ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ + // ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ по старой Ρ†Π΅Π½Π΅. Ошибка об этом Π±ΡƒΠ΄Π΅Ρ‚ Π² + // ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний + // Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get). + //

+ // Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ + // вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ + // ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine). + //

+ // Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой + // Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) + // ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // GET /api/v2/quarantine/goods + APIV2QuarantineGoodsGet(ctx context.Context, params APIV2QuarantineGoodsGetParams) (APIV2QuarantineGoodsGetRes, error) + // APIV2UploadTaskClubDiscountPost implements POST /api/v2/upload/task/club-discount operation. + // + // УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB + // ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task/club-discount + APIV2UploadTaskClubDiscountPost(ctx context.Context, req *APIV2UploadTaskClubDiscountPostReq) (APIV2UploadTaskClubDiscountPostRes, error) + // APIV2UploadTaskPost implements POST /api/v2/upload/task operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task + APIV2UploadTaskPost(ctx context.Context, req *APIV2UploadTaskPostReq) (APIV2UploadTaskPostRes, error) + // APIV2UploadTaskSizePost implements POST /api/v2/upload/task/size operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для + // [Ρ‚Π°ΠΊΠΈΡ… + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`. + // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post). + //
+ // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ + // скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки + // Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /api/v2/upload/task/size + APIV2UploadTaskSizePost(ctx context.Context, req *APIV2UploadTaskSizePostReq) (APIV2UploadTaskSizePostRes, error) + // APIV3OfficesGet implements GET /api/v3/offices operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для + // привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для + // опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ + // ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // GET /api/v3/offices + APIV3OfficesGet(ctx context.Context) (APIV3OfficesGetRes, error) + // APIV3StocksWarehouseIdDelete implements DELETE /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· + // [списка + // остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток + // Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для + // возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // DELETE /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdDelete(ctx context.Context, req *APIV3StocksWarehouseIdDeleteReq, params APIV3StocksWarehouseIdDeleteParams) (APIV3StocksWarehouseIdDeleteRes, error) + // APIV3StocksWarehouseIdPost implements POST /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° + // [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // POST /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdPost(ctx context.Context, req *APIV3StocksWarehouseIdPostReq, params APIV3StocksWarehouseIdPostParams) (APIV3StocksWarehouseIdPostRes, error) + // APIV3StocksWarehouseIdPut implements PUT /api/v3/stocks/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + // ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² + // спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ + // ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ + // ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // PUT /api/v3/stocks/{warehouseId} + APIV3StocksWarehouseIdPut(ctx context.Context, req OptAPIV3StocksWarehouseIdPutReq, params APIV3StocksWarehouseIdPutParams) (APIV3StocksWarehouseIdPutRes, error) + // APIV3WarehousesGet implements GET /api/v3/warehouses operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + // ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // GET /api/v3/warehouses + APIV3WarehousesGet(ctx context.Context) (APIV3WarehousesGetRes, error) + // APIV3WarehousesPost implements POST /api/v3/warehouses operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). + //
+ // НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // POST /api/v3/warehouses + APIV3WarehousesPost(ctx context.Context, req *APIV3WarehousesPostReq) (APIV3WarehousesPostRes, error) + // APIV3WarehousesWarehouseIdDelete implements DELETE /api/v3/warehouses/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка + // складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // DELETE /api/v3/warehouses/{warehouseId} + APIV3WarehousesWarehouseIdDelete(ctx context.Context, params APIV3WarehousesWarehouseIdDeleteParams) (APIV3WarehousesWarehouseIdDeleteRes, error) + // APIV3WarehousesWarehouseIdPut implements PUT /api/v3/warehouses/{warehouseId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС + // складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). + // Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС + // WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ + // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. + //
+ // НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° + // ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //

+ // Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 + // запросов + //
. + // + // PUT /api/v3/warehouses/{warehouseId} + APIV3WarehousesWarehouseIdPut(ctx context.Context, req *APIV3WarehousesWarehouseIdPutReq, params APIV3WarehousesWarehouseIdPutParams) (APIV3WarehousesWarehouseIdPutRes, error) + // ContentV2BarcodesPost implements POST /content/v2/barcodes operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для + // создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ + // Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/barcodes + ContentV2BarcodesPost(ctx context.Context, req *ContentV2BarcodesPostReq) (ContentV2BarcodesPostRes, error) + // ContentV2CardsDeleteTrashPost implements POST /content/v2/cards/delete/trash operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). + //
+ // ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° + // присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ + // Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит + // ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² + // [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/cards/delete/trash + ContentV2CardsDeleteTrashPost(ctx context.Context, req *ContentV2CardsDeleteTrashPostReq) (ContentV2CardsDeleteTrashPostRes, error) + // ContentV2CardsErrorListGet implements GET /content/v2/cards/error/list operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ + // создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ + // ошибки, с описаниСм этих ошибок. + //
+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ + // ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/cards/error/list + ContentV2CardsErrorListGet(ctx context.Context, params ContentV2CardsErrorListGetParams) (ContentV2CardsErrorListGetRes, error) + // ContentV2CardsLimitsGet implements GET /content/v2/cards/limits operation. + // + // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° + // [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+ // Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ + // ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: + // > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/cards/limits + ContentV2CardsLimitsGet(ctx context.Context) (ContentV2CardsLimitsGetRes, error) + // ContentV2CardsRecoverPost implements POST /content/v2/cards/recover operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· + // ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» + // присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/cards/recover + ContentV2CardsRecoverPost(ctx context.Context, req *ContentV2CardsRecoverPostReq) (ContentV2CardsRecoverPostRes, error) + // ContentV2CardsUpdatePost implements POST /content/v2/cards/update operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для + // обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). + //
+ // ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. + // ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС + // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ + // ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. + //
+ // НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ + // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ + // Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+ // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 + // Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/update + ContentV2CardsUpdatePost(ctx context.Context, req []ContentV2CardsUpdatePostReqItem) (ContentV2CardsUpdatePostRes, error) + // ContentV2CardsUploadAddPost implements POST /content/v2/cards/upload/add operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… + // ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. + // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. + // ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/upload/add + ContentV2CardsUploadAddPost(ctx context.Context, req OptContentV2CardsUploadAddPostReq) (ContentV2CardsUploadAddPostRes, error) + // ContentV2CardsUploadPost implements POST /content/v2/cards/upload operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ + // характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+ //
+ // Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ + // ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, + // вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. + //

+ // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. + // ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° + // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
+ // Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 + // ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊΒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎΒ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Β ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+ // Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ + // обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ + // Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° + //
. + // + // POST /content/v2/cards/upload + ContentV2CardsUploadPost(ctx context.Context, req []ContentV2CardsUploadPostReqItem) (ContentV2CardsUploadPostRes, error) + // ContentV2DirectoryColorsGet implements GET /content/v2/directory/colors operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/colors + ContentV2DirectoryColorsGet(ctx context.Context, params ContentV2DirectoryColorsGetParams) (ContentV2DirectoryColorsGetRes, error) + // ContentV2DirectoryCountriesGet implements GET /content/v2/directory/countries operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/countries + ContentV2DirectoryCountriesGet(ctx context.Context, params ContentV2DirectoryCountriesGetParams) (ContentV2DirectoryCountriesGetRes, error) + // ContentV2DirectoryKindsGet implements GET /content/v2/directory/kinds operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/kinds + ContentV2DirectoryKindsGet(ctx context.Context, params ContentV2DirectoryKindsGetParams) (ContentV2DirectoryKindsGetRes, error) + // ContentV2DirectorySeasonsGet implements GET /content/v2/directory/seasons operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/seasons + ContentV2DirectorySeasonsGet(ctx context.Context, params ContentV2DirectorySeasonsGetParams) (ContentV2DirectorySeasonsGetRes, error) + // ContentV2DirectoryTnvedGet implements GET /content/v2/directory/tnved operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID + // [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/tnved + ContentV2DirectoryTnvedGet(ctx context.Context, params ContentV2DirectoryTnvedGetParams) (ContentV2DirectoryTnvedGetRes, error) + // ContentV2DirectoryVatGet implements GET /content/v2/directory/vat operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния + // [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/directory/vat + ContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (ContentV2DirectoryVatGetRes, error) + // ContentV2GetCardsListPost implements POST /content/v2/get/cards/list operation. + // + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. + //
+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + //
    + //
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    + //
    +	// {
    +	// "settings": {
    +	// "cursor": {
    +	// "limit": 100
    +	// },
    +	// "filter": {
    +	// "withPhoto": -1
    +	// }
    +	// }
    +	// }
    + //
  2. + //
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. + //
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: + //
  6. + //
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса + // cursor.
  8. + //
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. + //
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ + // total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ + // limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/get/cards/list + ContentV2GetCardsListPost(ctx context.Context, req *ContentV2GetCardsListPostReq, params ContentV2GetCardsListPostParams) (ContentV2GetCardsListPostRes, error) + // ContentV2GetCardsTrashPost implements POST /content/v2/get/cards/trash operation. + // + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ + //
+ // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² + // ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+ // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², + // Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: + //
    + //
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    + //
    +	// {
    +	// "settings": {
    +	// "cursor": {
    +	// "limit": 100
    +	// },
    +	// "filter": {
    +	// "withPhoto": -1
    +	// }
    +	// }
    +	// }
    + //
  2. + //
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. + //
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: + //
  6. + //
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса + // cursor.
  8. + //
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. + //
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ + // total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ + // limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ + // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/get/cards/trash + ContentV2GetCardsTrashPost(ctx context.Context, req *ContentV2GetCardsTrashPostReq, params ContentV2GetCardsTrashPostParams) (ContentV2GetCardsTrashPostRes, error) + // ContentV2ObjectAllGet implements GET /content/v2/object/all operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ + // ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/all + ContentV2ObjectAllGet(ctx context.Context, params ContentV2ObjectAllGetParams) (ContentV2ObjectAllGetRes, error) + // ContentV2ObjectCharcsSubjectIdGet implements GET /content/v2/object/charcs/{subjectId} operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик + // ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ + // Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID + // [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). + //
+ // Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ + //
+ //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/charcs/{subjectId} + ContentV2ObjectCharcsSubjectIdGet(ctx context.Context, params ContentV2ObjectCharcsSubjectIdGetParams) (ContentV2ObjectCharcsSubjectIdGetRes, error) + // ContentV2ObjectParentAllGet implements GET /content/v2/object/parent/all operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… + // ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, + // `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/object/parent/all + ContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (ContentV2ObjectParentAllGetRes, error) + // ContentV2TagNomenclatureLinkPost implements POST /content/v2/tag/nomenclature/link operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+ // ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ + // удаляСтся ΠΈΠ· [списка + // ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) + // ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v2/tag/nomenclature/link + ContentV2TagNomenclatureLinkPost(ctx context.Context, req *ContentV2TagNomenclatureLinkPostReq) (ContentV2TagNomenclatureLinkPostRes, error) + // ContentV2TagsGet implements GET /content/v2/tags operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх + // ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ + // Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // GET /content/v2/tags + ContentV2TagsGet(ctx context.Context) (ContentV2TagsGetRes, error) + // ContentV3MediaFilePost implements POST /content/v3/media/file operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ + // ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. + // ВрСбования ΠΊ изобраТСниям: + // * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 + // * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб + // * минимальноС качСство — 65% + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP + // ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: + // * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v3/media/file + ContentV3MediaFilePost(ctx context.Context, req *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (ContentV3MediaFilePostRes, error) + // ContentV3MediaSavePost implements POST /content/v3/media/save operation. + // + // ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° + // Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС. + //
+ // НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ + // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки + // ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹. + //
+ // ВрСбования ΠΊ изобраТСниям: + // * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 + // * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб + // * минимальноС качСство — 65% + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP + // ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: + // * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° + // * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб + // * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 + // Если Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ + // соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ + // ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится. + //
+ // ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх + // ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ + // Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² + //
. + // + // POST /content/v3/media/save + ContentV3MediaSavePost(ctx context.Context, req *ContentV3MediaSavePostReq) (ContentV3MediaSavePostRes, error) +} + +// Server implements http server based on OpenAPI v3 specification and +// calls Handler to handle requests. +type Server struct { + h Handler + sec SecurityHandler + baseServer +} + +// NewServer creates new Server. +func NewServer(h Handler, sec SecurityHandler, opts ...ServerOption) (*Server, error) { + s, err := newServerConfig(opts...).baseServer() + if err != nil { + return nil, err + } + return &Server{ + h: h, + sec: sec, + baseServer: s, + }, nil +} diff --git a/pkg/api/wb/client/oas_unimplemented_gen.go b/pkg/api/wb/client/oas_unimplemented_gen.go new file mode 100644 index 0000000..e090ac5 --- /dev/null +++ b/pkg/api/wb/client/oas_unimplemented_gen.go @@ -0,0 +1,1062 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + ht "github.com/ogen-go/ogen/http" +) + +// UnimplementedHandler is no-op Handler which returns http.ErrNotImplemented. +type UnimplementedHandler struct{} + +var _ Handler = UnimplementedHandler{} + +// APIV2BufferGoodsTaskGet implements GET /api/v2/buffer/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² +// Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/goods/task +func (UnimplementedHandler) APIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (r APIV2BufferGoodsTaskGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2BufferTasksGet implements GET /api/v2/buffer/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скидок Π² +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. +//
+// НСобработанная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скидок для калСндаря Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ +// скидки примСнятся ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° +// Π°ΠΊΡ†ΠΈΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/buffer/tasks +func (UnimplementedHandler) APIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (r APIV2BufferTasksGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2HistoryGoodsTaskGet implements GET /api/v2/history/goods/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΈ ΠΎΠ± +// ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/goods/task +func (UnimplementedHandler) APIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (r APIV2HistoryGoodsTaskGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2HistoryTasksGet implements GET /api/v2/history/tasks operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ +// Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ†Π΅Π½ ΠΈ скидок. +//
+// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½ ΠΈ скидок +// для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ скидок WB ΠšΠ»ΡƒΠ±Π°. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/history/tasks +func (UnimplementedHandler) APIV2HistoryTasksGet(ctx context.Context, params APIV2HistoryTasksGetParams) (r APIV2HistoryTasksGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2ListGoodsFilterGet implements GET /api/v2/list/goods/filter operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΠΎ ΠΈΡ… +// Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°, +// ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ» пустым, установитС `limit=1000`, Π² +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `offset` установитС смСщСниС ΠΏΠΎ количСству +// записСй. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: `offset` +// плюс `limit` ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запроса. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ запрос, +// ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ с пустым массивом.
Π§Ρ‚ΠΎΠ±Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ +// [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/filter +func (UnimplementedHandler) APIV2ListGoodsFilterGet(ctx context.Context, params APIV2ListGoodsFilterGetParams) (r APIV2ListGoodsFilterGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2ListGoodsSizeNmGet implements GET /api/v2/list/goods/size/nm operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… +// ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ: Ρ†Π΅Π½Ρ‹, Π²Π°Π»ΡŽΡ‚Ρƒ, ΠΎΠ±Ρ‰ΠΈΠ΅ скидки ΠΈ скидки +// для [WB +// ΠšΠ»ΡƒΠ±Π°](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post). +//

+// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² `editableSizePrice: true`. +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом Ρ‚ΠΎΠ²Π°Ρ€Π΅, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/list/goods/size/nm +func (UnimplementedHandler) APIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (r APIV2ListGoodsSizeNmGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2QuarantineGoodsGet implements GET /api/v2/quarantine/goods operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ… Π² ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅. +//

+// Если новая Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° со скидкой Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Β 3 +// Ρ€Π°Π·Π° мСньшС старой, Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ [Π² +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½](https://seller.wildberries.ru/discount-and-prices/quarantine) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ +// ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ по старой Ρ†Π΅Π½Π΅. Ошибка об этом Π±ΡƒΠ΄Π΅Ρ‚ Π² +// ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² [состояний +// Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get). +//

+// Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ скидку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Π»ΠΈΠ±ΠΎ +// вывСсти Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ·Β ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π° [Π²Β Π»ΠΈΡ‡Π½ΠΎΠΌ +// ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/discount-and-prices/quarantine). +//

+// Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с [ΠΏΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ установкой +// Ρ†Π΅Π½](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post) +// ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ примСняСтся. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// GET /api/v2/quarantine/goods +func (UnimplementedHandler) APIV2QuarantineGoodsGet(ctx context.Context, params APIV2QuarantineGoodsGetParams) (r APIV2QuarantineGoodsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2UploadTaskClubDiscountPost implements POST /api/v2/upload/task/club-discount operation. +// +// УстанавливаСт скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… подписки [WB +// ΠšΠ»ΡƒΠ±](https://seller.wildberries.ru/help-center/article/A-337). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/club-discount +func (UnimplementedHandler) APIV2UploadTaskClubDiscountPost(ctx context.Context, req *APIV2UploadTaskClubDiscountPostReq) (r APIV2UploadTaskClubDiscountPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2UploadTaskPost implements POST /api/v2/upload/task operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€Π°, +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task +func (UnimplementedHandler) APIV2UploadTaskPost(ctx context.Context, req *APIV2UploadTaskPostReq) (r APIV2UploadTaskPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV2UploadTaskSizePost implements POST /api/v2/upload/task/size operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +// Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Для +// [Ρ‚Π°ΠΊΠΈΡ… +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get) `editableSizePrice: true`. +// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ ΠΈ скидки для самих Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// ΠΌΠ΅Ρ‚ΠΎΠ΄](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post). +//
+// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссС установки Ρ†Π΅Π½ ΠΈ +// скидок ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² состояния ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌΒ 10 запросов Π·Π°Β 6 сСкунд для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π¦Π΅Π½Ρ‹ ΠΈ скидки +// Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /api/v2/upload/task/size +func (UnimplementedHandler) APIV2UploadTaskSizePost(ctx context.Context, req *APIV2UploadTaskSizePostReq) (r APIV2UploadTaskSizePostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3OfficesGet implements GET /api/v3/offices operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов WB для +// привязки ΠΊ складам ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для +// опрСдСлСния складов WB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ +// ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/offices +func (UnimplementedHandler) APIV3OfficesGet(ctx context.Context) (r APIV3OfficesGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3StocksWarehouseIdDelete implements DELETE /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт запись ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· +// [списка +// остатков](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ДСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ. Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ остаток +// Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ для +// возобновлСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/stocks/{warehouseId} +func (UnimplementedHandler) APIV3StocksWarehouseIdDelete(ctx context.Context, req *APIV3StocksWarehouseIdDeleteReq, params APIV3StocksWarehouseIdDeleteParams) (r APIV3StocksWarehouseIdDeleteRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3StocksWarehouseIdPost implements POST /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± остатках Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° +// [складах ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°](/openapi/work-with-products#tag/Sklady-prodavca). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/stocks/{warehouseId} +func (UnimplementedHandler) APIV3StocksWarehouseIdPost(ctx context.Context, req *APIV3StocksWarehouseIdPostReq, params APIV3StocksWarehouseIdPostParams) (r APIV3StocksWarehouseIdPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3StocksWarehouseIdPut implements PUT /api/v3/stocks/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт количСство остатков Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [Π² +// спискС](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// Названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π½Π΅ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ +// ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ +// ΠΎΡ‚Π²Π΅Ρ‚ (204), Π½ΠΎ остатки Π½Π΅ обновятся. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/stocks/{warehouseId} +func (UnimplementedHandler) APIV3StocksWarehouseIdPut(ctx context.Context, req OptAPIV3StocksWarehouseIdPutReq, params APIV3StocksWarehouseIdPutParams) (r APIV3StocksWarehouseIdPutRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3WarehousesGet implements GET /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список всСх складов ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +// ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для получСния [остатков +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// GET /api/v3/warehouses +func (UnimplementedHandler) APIV3WarehousesGet(ctx context.Context) (r APIV3WarehousesGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3WarehousesPost implements POST /api/v3/warehouses operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [остатками +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1%7BwarehouseId%7D/post). НуТно ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ складу ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° [склад WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ схСмС [FBS](/openapi/orders-fbs#tag/Zakazy-FBS) (Fulfillment by Seller). +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// POST /api/v3/warehouses +func (UnimplementedHandler) APIV3WarehousesPost(ctx context.Context, req *APIV3WarehousesPostReq) (r APIV3WarehousesPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3WarehousesWarehouseIdDelete implements DELETE /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ удаляСт склад ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· [списка +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// DELETE /api/v3/warehouses/{warehouseId} +func (UnimplementedHandler) APIV3WarehousesWarehouseIdDelete(ctx context.Context, params APIV3WarehousesWarehouseIdDeleteParams) (r APIV3WarehousesWarehouseIdDeleteRes, _ error) { + return r, ht.ErrNotImplemented +} + +// APIV3WarehousesWarehouseIdPut implements PUT /api/v3/warehouses/{warehouseId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт Π΄Π°Π½Π½Ρ‹Π΅ склада ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π² [спискС +// складов](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1warehouses/get). +// Π”Π°Π½Π½Ρ‹Π΅ ΠΎ привязанном [складС +// WB](/openapi/work-with-products#tag/Sklady-prodavca/paths/~1api~1v3~1offices/get) ΠΌΠΎΠΆΠ½ΠΎ +// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² сутки. +//
+// НСльзя ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ склад WB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 300 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΏΠ»Π΅ΠΉΡ Π½Π° +// ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//

+// Один запрос с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° 409 учитываСтся ΠΊΠ°ΠΊ 5 +// запросов +//
. +// +// PUT /api/v3/warehouses/{warehouseId} +func (UnimplementedHandler) APIV3WarehousesWarehouseIdPut(ctx context.Context, req *APIV3WarehousesWarehouseIdPutReq, params APIV3WarehousesWarehouseIdPutParams) (r APIV3WarehousesWarehouseIdPutRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2BarcodesPost implements POST /content/v2/barcodes operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ² для +// создания Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ +// Ρ‚ΠΎΠ²Π°Ρ€Π°](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π½Π΅Ρ‚ собствСнных Π±Π°Ρ€ΠΊΠΎΠ΄ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/barcodes +func (UnimplementedHandler) ContentV2BarcodesPost(ctx context.Context, req *ContentV2BarcodesPostReq) (r ContentV2BarcodesPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsDeleteTrashPost implements POST /content/v2/cards/delete/trash operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ пСрСносит [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). ΠŸΡ€ΠΈ этом ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ [Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1recover/post). +//
+// ПослС пСрСноса Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π° +// присваиваСтся Π½ΠΎΠ²Ρ‹ΠΉ imtID. +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ автоматичСски, Ссли Π»Π΅ΠΆΠ°Ρ‚ +// Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ большС 30 Π΄Π½Π΅ΠΉ. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ происходит +// ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ ΠΏΠΎ московскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² любоС врСмя Π² +// [Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅](https://seller.wildberries.ru/new-goods/basket-cards). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/delete/trash +func (UnimplementedHandler) ContentV2CardsDeleteTrashPost(ctx context.Context, req *ContentV2CardsDeleteTrashPostReq) (r ContentV2CardsDeleteTrashPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsErrorListGet implements GET /content/v2/cards/error/list operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΏΡ€ΠΈ +// создании ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ +// ошибки, с описаниСм этих ошибок. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ +// ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π½Π° созданиС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° с исправлСнными ошибками. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/error/list +func (UnimplementedHandler) ContentV2CardsErrorListGet(ctx context.Context, params ContentV2CardsErrorListGetParams) (r ContentV2CardsErrorListGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsLimitsGet implements GET /content/v2/cards/limits operation. +// +// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° Π½Π° +// [созданиС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post).

+// Π€ΠΎΡ€ΠΌΡƒΠ»Π° для получСния количСства ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ +// ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ: +// > (`freeLimits` + `paidLimits`) - количСство созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/cards/limits +func (UnimplementedHandler) ContentV2CardsLimitsGet(ctx context.Context) (r ContentV2CardsLimitsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsRecoverPost implements POST /content/v2/cards/recover operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ восстанавливаСт [ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· +// ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° сохраняСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ imtID, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» +// присвоСн Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/cards/recover +func (UnimplementedHandler) ContentV2CardsRecoverPost(ctx context.Context, req *ContentV2CardsRecoverPostReq) (r ContentV2CardsRecoverPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsUpdatePost implements POST /content/v2/cards/update operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ для +// обновлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1list/post) ΠΈ [список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post). +//
+// ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π° пСрСзаписываСтся ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. +// ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС +// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ +// ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. +//
+// НСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π±Π°Ρ€ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Ρ€ΠΊΠΎΠ΄ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `photos`, `video` ΠΈ `tags` Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ +// Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя.
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимум 3000 +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`nmID`). ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 +// Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/update +func (UnimplementedHandler) ContentV2CardsUpdatePost(ctx context.Context, req []ContentV2CardsUpdatePostReqItem) (r ContentV2CardsUpdatePostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsUploadAddPost implements POST /content/v2/cards/upload/add operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², присоСдиняя ΠΈΡ… +// ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. +// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload/add +func (UnimplementedHandler) ContentV2CardsUploadAddPost(ctx context.Context, req OptContentV2CardsUploadAddPostReq) (r ContentV2CardsUploadAddPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2CardsUploadPost implements POST /content/v2/cards/upload operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ описаний ΠΈ +// характСристик Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
+//
+// Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ запроса: для создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π“Π°Π±Π°Ρ€ΠΈΡ‚Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² `сантимСтрах`, +// +// вСс Ρ‚ΠΎΠ²Π°Ρ€Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ β€” Π² `ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…`. +// +//

+// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° происходит асинхронно. +// ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запрос становится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° +// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
+// Π’ ΠΎΠ΄Π½ΠΎΠΌ запросС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ максимум 100 +// ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊΒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (`imtID`), ΠΏΠΎΒ 30 ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Β ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запроса 10 Мб.
+// Если ΠΎΡ‚Π²Π΅Ρ‚ `УспСшно` (`200`), Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅ +// обновились, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ [список нСсозданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get). +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ +// Π»ΠΈΠΌΠΈΡ‚ β€” 10 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° +//
. +// +// POST /content/v2/cards/upload +func (UnimplementedHandler) ContentV2CardsUploadPost(ctx context.Context, req []ContentV2CardsUploadPostReqItem) (r ContentV2CardsUploadPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectoryColorsGet implements GET /content/v2/directory/colors operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π¦Π²Π΅Ρ‚`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/colors +func (UnimplementedHandler) ContentV2DirectoryColorsGet(ctx context.Context, params ContentV2DirectoryColorsGetParams) (r ContentV2DirectoryColorsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectoryCountriesGet implements GET /content/v2/directory/countries operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Ρ€Π°Π½Π° производства`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/countries +func (UnimplementedHandler) ContentV2DirectoryCountriesGet(ctx context.Context, params ContentV2DirectoryCountriesGetParams) (r ContentV2DirectoryCountriesGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectoryKindsGet implements GET /content/v2/directory/kinds operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Пол`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/kinds +func (UnimplementedHandler) ContentV2DirectoryKindsGet(ctx context.Context, params ContentV2DirectoryKindsGetParams) (r ContentV2DirectoryKindsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectorySeasonsGet implements GET /content/v2/directory/seasons operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Π΅Π·ΠΎΠ½`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/seasons +func (UnimplementedHandler) ContentV2DirectorySeasonsGet(ctx context.Context, params ContentV2DirectorySeasonsGetParams) (r ContentV2DirectorySeasonsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectoryTnvedGet implements GET /content/v2/directory/tnved operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ВНВЭД-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΎ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get) ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ВНВЭД-ΠΊΠΎΠ΄Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/tnved +func (UnimplementedHandler) ContentV2DirectoryTnvedGet(ctx context.Context, params ContentV2DirectoryTnvedGetParams) (r ContentV2DirectoryTnvedGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2DirectoryVatGet implements GET /content/v2/directory/vat operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния +// [характСристики](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1charcs~1%7BsubjectId%7D/get) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° `Π‘Ρ‚Π°Π²ΠΊΠ° НДБ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/directory/vat +func (UnimplementedHandler) ContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (r ContentV2DirectoryVatGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2GetCardsListPost implements POST /content/v2/get/cards/list operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список созданных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, находящихся Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. +//
+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/list +func (UnimplementedHandler) ContentV2GetCardsListPost(ctx context.Context, req *ContentV2GetCardsListPostReq, params ContentV2GetCardsListPostParams) (r ContentV2GetCardsListPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2GetCardsTrashPost implements POST /content/v2/get/cards/trash operation. +// +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ с +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ +//
+// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² +// ΠΊΠΎΡ€Π·ΠΈΠ½Π΅.

+// Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ **большС 100** ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², +// Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ: +//
    +//
  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос:
    +//
    +// {
    +// "settings": {
    +// "cursor": {
    +// "limit": 100
    +// },
    +// "filter": {
    +// "withPhoto": -1
    +// }
    +// }
    +// }
    +//
  2. +//
  3. ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  4. +//
  5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ· cursor Π΄Π²Π΅ строки: +//
  6. +//
  7. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ скопированныС строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса +// cursor.
  8. +//
  9. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ запрос.
  10. +//
  11. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ со 2 ΠΏΠΎ 5, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π΅ +// total Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π΅ станСт мСньшС Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ +// limit Π² запросС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ +// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ. +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/get/cards/trash +func (UnimplementedHandler) ContentV2GetCardsTrashPost(ctx context.Context, req *ContentV2GetCardsTrashPostReq, params ContentV2GetCardsTrashPostParams) (r ContentV2GetCardsTrashPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2ObjectAllGet implements GET /content/v2/object/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список Π½Π°Π·Π²Π°Π½ΠΈΠΉ [Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1parent~1all/get) ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² с ID. НапримСр, Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ `Π˜Π³Ρ€ΡƒΡˆΠΊΠΈ` Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ `ΠšΠ°Π»Π΅ΠΉΠ΄ΠΎΡΠΊΠΎΠΏΡ‹`, `ΠšΡƒΠΊΠ»Ρ‹`, `ΠœΡΡ‡ΠΈΠΊΠΈ`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/all +func (UnimplementedHandler) ContentV2ObjectAllGet(ctx context.Context, params ContentV2ObjectAllGetParams) (r ContentV2ObjectAllGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2ObjectCharcsSubjectIdGet implements GET /content/v2/object/charcs/{subjectId} operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ характСристик +// ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°: названия, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния ΠΈ +// Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ запросС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ID +// [ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°](/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1object~1all/get). +//
+// Для получСния характСристик Π¦Π²Π΅Ρ‚, Пол, Π‘Ρ‚Ρ€Π°Π½Π° производства, Π‘Π΅Π·ΠΎΠ½, Π‘Ρ‚Π°Π²ΠΊΠ° НДБ ΠΈ ВНВЭД-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ +//
+//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/charcs/{subjectId} +func (UnimplementedHandler) ContentV2ObjectCharcsSubjectIdGet(ctx context.Context, params ContentV2ObjectCharcsSubjectIdGetParams) (r ContentV2ObjectCharcsSubjectIdGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2ObjectParentAllGet implements GET /content/v2/object/parent/all operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт названия ΠΈ ID всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… +// ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для [создания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²](/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, +// `Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°`, `Бытовая химия`, `Π ΡƒΠΊΠΎΠ΄Π΅Π»ΠΈΠ΅`. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/object/parent/all +func (UnimplementedHandler) ContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (r ContentV2ObjectParentAllGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2TagNomenclatureLinkPost implements POST /content/v2/tag/nomenclature/link operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΈΠ»ΠΈ снимаСт ярлык с ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// К ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ максимум 15 ярлыков.
+// ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ярлыка ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΎΠ½ Π½Π΅ +// удаляСтся ΠΈΠ· [списка +// ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get) +// ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v2/tag/nomenclature/link +func (UnimplementedHandler) ContentV2TagNomenclatureLinkPost(ctx context.Context, req *ContentV2TagNomenclatureLinkPostReq) (r ContentV2TagNomenclatureLinkPostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV2TagsGet implements GET /content/v2/tags operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ прСдоставляСт список ΠΈ характСристики всСх +// ярлыков ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ +// Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// GET /content/v2/tags +func (UnimplementedHandler) ContentV2TagsGet(ctx context.Context) (r ContentV2TagsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV3MediaFilePost implements POST /content/v3/media/file operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ добавляСт ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ» ΠΊ +// ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°. +// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700x900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/file +func (UnimplementedHandler) ContentV3MediaFilePost(ctx context.Context, req *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (r ContentV3MediaFilePostRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ContentV3MediaSavePost implements POST /content/v3/media/save operation. +// +// ΠœΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€Π° +// Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ссылок Π² запросС. +//
+// НовыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ старыС. Π§Ρ‚ΠΎΠ±Ρ‹ +// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² запросС ссылки +// ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΈ старыС ΠΌΠ΅Π΄ΠΈΠ°Ρ„Π°ΠΉΠ»Ρ‹. +//
+// ВрСбования ΠΊ изобраТСниям: +// * максимум ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°Β β€” 30 +// * минимальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” 700Γ—900 px +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 32 Мб +// * минимальноС качСство — 65% +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” JPG, PNG, BMP, GIF (статичныС), WebP +// ВрСбования ΠΊ Π²ΠΈΠ΄Π΅ΠΎ: +// * максимум ΠΎΠ΄Π½ΠΎΒ Π²ΠΈΠ΄Π΅ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π° +// * ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Β β€” 50 Мб +// * Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹Β β€” MOV, MP4 +// Если Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² запросС Π½Π΅ +// соотвСтствуСт трСбованиям, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ +// ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ загрузится. +//
+// ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ 100 запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ для всСх +// ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ +// Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π‘ 5 июня β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² создания, создания с присоСдинСниСм ΠΈ рСдактирования ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² +//
. +// +// POST /content/v3/media/save +func (UnimplementedHandler) ContentV3MediaSavePost(ctx context.Context, req *ContentV3MediaSavePostReq) (r ContentV3MediaSavePostRes, _ error) { + return r, ht.ErrNotImplemented +} diff --git a/pkg/api/wb/client/oas_validators_gen.go b/pkg/api/wb/client/oas_validators_gen.go new file mode 100644 index 0000000..f12d229 --- /dev/null +++ b/pkg/api/wb/client/oas_validators_gen.go @@ -0,0 +1,1661 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "fmt" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/validate" +) + +func (s APIV3OfficesGetOKApplicationJSON) Validate() error { + alias := ([]Office)(s) + if alias == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range alias { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3StocksWarehouseIdDeleteReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Skus == nil { + return nil // optional + } + if err := (validate.Array{ + MinLength: 1, + MinLengthSet: true, + MaxLength: 1000, + MaxLengthSet: true, + }).ValidateLength(len(s.Skus)); err != nil { + return errors.Wrap(err, "array") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "skus", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3StocksWarehouseIdPostReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Skus == nil { + return errors.New("nil is invalid value") + } + if err := (validate.Array{ + MinLength: 1, + MinLengthSet: true, + MaxLength: 1000, + MaxLengthSet: true, + }).ValidateLength(len(s.Skus)); err != nil { + return errors.Wrap(err, "array") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "skus", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3StocksWarehouseIdPutReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Stocks == nil { + return errors.New("nil is invalid value") + } + if err := (validate.Array{ + MinLength: 1, + MinLengthSet: true, + MaxLength: 1000, + MaxLengthSet: true, + }).ValidateLength(len(s.Stocks)); err != nil { + return errors.Wrap(err, "array") + } + var failures []validate.FieldError + for i, elem := range s.Stocks { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "stocks", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3StocksWarehouseIdPutReqStocksItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Amount.Get(); ok { + if err := func() error { + if err := (validate.Int{ + MinSet: false, + Min: 0, + MaxSet: true, + Max: 100000, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(value)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "amount", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s APIV3WarehousesGetOKApplicationJSON) Validate() error { + alias := ([]Warehouse)(s) + if alias == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range alias { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3WarehousesPostReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.String{ + MinLength: 1, + MinLengthSet: true, + MaxLength: 200, + MaxLengthSet: true, + Email: false, + Hostname: false, + Regex: nil, + }).Validate(string(s.Name)); err != nil { + return errors.Wrap(err, "string") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "name", + Error: err, + }) + } + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 1, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(s.OfficeId)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "officeId", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *APIV3WarehousesWarehouseIdPutReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.String{ + MinLength: 1, + MinLengthSet: true, + MaxLength: 200, + MaxLengthSet: true, + Email: false, + Hostname: false, + Regex: nil, + }).Validate(string(s.Name)); err != nil { + return errors.Wrap(err, "string") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "name", + Error: err, + }) + } + if err := func() error { + if err := (validate.Int{ + MinSet: true, + Min: 1, + MaxSet: false, + Max: 0, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: 0, + }).Validate(int64(s.OfficeId)); err != nil { + return errors.Wrap(err, "int") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "officeId", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUpdatePostReqItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Title.Get(); ok { + if err := func() error { + if err := (validate.String{ + MinLength: 0, + MinLengthSet: false, + MaxLength: 60, + MaxLengthSet: true, + Email: false, + Hostname: false, + Regex: nil, + }).Validate(string(value)); err != nil { + return errors.Wrap(err, "string") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "title", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Dimensions.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dimensions", + Error: err, + }) + } + if err := func() error { + if s.Sizes == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sizes", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUpdatePostReqItemDimensions) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.WeightBrutto.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "weightBrutto", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUpdatePostRequestEntityTooLarge) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadAddPostReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.CardsToAdd { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "cardsToAdd", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadAddPostReqCardsToAddItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Title.Get(); ok { + if err := func() error { + if err := (validate.String{ + MinLength: 0, + MinLengthSet: false, + MaxLength: 60, + MaxLengthSet: true, + Email: false, + Hostname: false, + Regex: nil, + }).Validate(string(value)); err != nil { + return errors.Wrap(err, "string") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "title", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Dimensions.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dimensions", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadAddPostReqCardsToAddItemDimensions) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.WeightBrutto.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "weightBrutto", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadAddPostRequestEntityTooLarge) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadPostReqItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Variants == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Variants { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "variants", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadPostReqItemVariantsItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Title.Get(); ok { + if err := func() error { + if err := (validate.String{ + MinLength: 0, + MinLengthSet: false, + MaxLength: 60, + MaxLengthSet: true, + Email: false, + Hostname: false, + Regex: nil, + }).Validate(string(value)); err != nil { + return errors.Wrap(err, "string") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "title", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Dimensions.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dimensions", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadPostReqItemVariantsItemDimensions) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.WeightBrutto.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "weightBrutto", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2CardsUploadPostRequestEntityTooLarge) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsListPostOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.Cards { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "cards", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsListPostOKCardsItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Dimensions.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dimensions", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsListPostOKCardsItemDimensions) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.WeightBrutto.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "weightBrutto", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsListPostOKHeaders) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "Response", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s ContentV2GetCardsTrashPostLocale) Validate() error { + switch s { + case "ru": + return nil + case "en": + return nil + case "zh": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *ContentV2GetCardsTrashPostOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.Cards { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "cards", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsTrashPostOKCardsItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Dimensions.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dimensions", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ContentV2GetCardsTrashPostOKCardsItemDimensions) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.WeightBrutto.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "weightBrutto", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *GoodsList) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.Sizes { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sizes", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *GoodsListSizesItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.DiscountedPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "discountedPrice", + Error: err, + }) + } + if err := func() error { + if value, ok := s.ClubDiscountedPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "clubDiscountedPrice", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *Office) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Longitude.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "longitude", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Latitude.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "latitude", + Error: err, + }) + } + if err := func() error { + if value, ok := s.CargoType.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "cargoType", + Error: err, + }) + } + if err := func() error { + if value, ok := s.DeliveryType.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "deliveryType", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s OfficeCargoType) Validate() error { + switch s { + case 1: + return nil + case 2: + return nil + case 3: + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s OfficeDeliveryType) Validate() error { + switch s { + case 1: + return nil + case 2: + return nil + case 3: + return nil + case 5: + return nil + case 6: + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *QuarantineGoods) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.NewPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "newPrice", + Error: err, + }) + } + if err := func() error { + if value, ok := s.OldPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "oldPrice", + Error: err, + }) + } + if err := func() error { + if value, ok := s.PriceDiff.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "priceDiff", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *R401) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *R429) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *R429Headers) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "Response", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseGoodsLists) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Data.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "data", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseGoodsListsData) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.ListGoods { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "listGoods", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseQuarantineGoods) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Data.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "data", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseQuarantineGoodsData) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.QuarantineGoods { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "quarantineGoods", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseSizeLists) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Data.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "data", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ResponseSizeListsData) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + var failures []validate.FieldError + for i, elem := range s.ListGoods { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "listGoods", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *SizeGood) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.DiscountedPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "discountedPrice", + Error: err, + }) + } + if err := func() error { + if value, ok := s.ClubDiscountedPrice.Get(); ok { + if err := func() error { + if err := (validate.Float{}).Validate(float64(value)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "clubDiscountedPrice", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s StocksWarehouseError) Validate() error { + alias := ([]StocksWarehouseErrorItem)(s) + if alias == nil { + return errors.New("nil is invalid value") + } + return nil +} + +func (s *Warehouse) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.CargoType.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "cargoType", + Error: err, + }) + } + if err := func() error { + if value, ok := s.DeliveryType.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "deliveryType", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s WarehouseCargoType) Validate() error { + switch s { + case 1: + return nil + case 2: + return nil + case 3: + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s WarehouseDeliveryType) Validate() error { + switch s { + case 1: + return nil + case 2: + return nil + case 3: + return nil + case 5: + return nil + case 6: + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} diff --git a/pkg/api/wb/generate.go b/pkg/api/wb/generate.go new file mode 100644 index 0000000..621c548 --- /dev/null +++ b/pkg/api/wb/generate.go @@ -0,0 +1,3 @@ +package wb + +//go:generate go run github.com/ogen-go/ogen/cmd/ogen@latest --target client --clean 02-products.yaml diff --git a/pkg/api/wb/ogen.yml b/pkg/api/wb/ogen.yml new file mode 100644 index 0000000..4c41ba7 --- /dev/null +++ b/pkg/api/wb/ogen.yml @@ -0,0 +1,7 @@ +generator: + ignore_not_implemented: [ "all" ] + content_type_aliases: + "application/problem+json": "application/json" + features: + enable: + - 'client/security/reentrant' \ No newline at end of file