Add Wildberries product fetching and rate limiting functionality
This commit is contained in:
		
							
								
								
									
										5572
									
								
								pkg/api/wb/02-products.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5572
									
								
								pkg/api/wb/02-products.yaml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										283
									
								
								pkg/api/wb/client/oas_cfg_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								pkg/api/wb/client/oas_cfg_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6749
									
								
								pkg/api/wb/client/oas_client_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6749
									
								
								pkg/api/wb/client/oas_client_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										8243
									
								
								pkg/api/wb/client/oas_handlers_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8243
									
								
								pkg/api/wb/client/oas_handlers_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										166
									
								
								pkg/api/wb/client/oas_interfaces_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								pkg/api/wb/client/oas_interfaces_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19793
									
								
								pkg/api/wb/client/oas_json_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19793
									
								
								pkg/api/wb/client/oas_json_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										42
									
								
								pkg/api/wb/client/oas_labeler_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								pkg/api/wb/client/oas_labeler_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								pkg/api/wb/client/oas_middleware_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								pkg/api/wb/client/oas_middleware_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
							
								
								
									
										50
									
								
								pkg/api/wb/client/oas_operations_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								pkg/api/wb/client/oas_operations_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										2634
									
								
								pkg/api/wb/client/oas_parameters_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2634
									
								
								pkg/api/wb/client/oas_parameters_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1360
									
								
								pkg/api/wb/client/oas_request_decoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1360
									
								
								pkg/api/wb/client/oas_request_decoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										315
									
								
								pkg/api/wb/client/oas_request_encoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										315
									
								
								pkg/api/wb/client/oas_request_encoders_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12994
									
								
								pkg/api/wb/client/oas_response_decoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12994
									
								
								pkg/api/wb/client/oas_response_decoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5052
									
								
								pkg/api/wb/client/oas_response_encoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5052
									
								
								pkg/api/wb/client/oas_response_encoders_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2379
									
								
								pkg/api/wb/client/oas_router_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2379
									
								
								pkg/api/wb/client/oas_router_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10053
									
								
								pkg/api/wb/client/oas_schemas_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10053
									
								
								pkg/api/wb/client/oas_schemas_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										111
									
								
								pkg/api/wb/client/oas_security_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								pkg/api/wb/client/oas_security_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										951
									
								
								pkg/api/wb/client/oas_server_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										951
									
								
								pkg/api/wb/client/oas_server_gen.go
									
									
									
									
									
										Normal file
									
								
							@@ -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.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет информацию о товарах и ошибках в
 | 
			
		||||
	// товарах из загрузки в обработке.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Необработанная загрузка — это загрузка скидок для <a
 | 
			
		||||
	// href="/openapi/promotion#tag/Kalendar-akcij">календаря акций</a>. Такие
 | 
			
		||||
	// скидки применятся к товарам только в момент начала
 | 
			
		||||
	// акции.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /api/v2/buffer/goods/task
 | 
			
		||||
	APIV2BufferGoodsTaskGet(ctx context.Context, params APIV2BufferGoodsTaskGetParams) (APIV2BufferGoodsTaskGetRes, error)
 | 
			
		||||
	// APIV2BufferTasksGet implements GET /api/v2/buffer/tasks operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет информацию про загрузку скидок в
 | 
			
		||||
	// обработке.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Необработанная загрузка — это загрузка скидок для <a
 | 
			
		||||
	// href="/openapi/promotion#tag/Kalendar-akcij">календаря акций</a>. Такие
 | 
			
		||||
	// скидки применятся к товарам только в момент начала
 | 
			
		||||
	// акции.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /api/v2/buffer/tasks
 | 
			
		||||
	APIV2BufferTasksGet(ctx context.Context, params APIV2BufferTasksGetParams) (APIV2BufferTasksGetRes, error)
 | 
			
		||||
	// APIV2HistoryGoodsTaskGet implements GET /api/v2/history/goods/task operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет информацию о товарах и об
 | 
			
		||||
	// ошибках в товарах в обработанной загрузке.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Обработанная загрузка — это загрузка цен и скидок
 | 
			
		||||
	// для <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post">товаров</a> и <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post">размеров товаров</a>, а также скидок <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post">WB Клуба</a>.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /api/v2/history/goods/task
 | 
			
		||||
	APIV2HistoryGoodsTaskGet(ctx context.Context, params APIV2HistoryGoodsTaskGetParams) (APIV2HistoryGoodsTaskGetRes, error)
 | 
			
		||||
	// APIV2HistoryTasksGet implements GET /api/v2/history/tasks operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет информацию об обработанной
 | 
			
		||||
	// загрузке цен и скидок.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Обработанная загрузка — это загрузка цен и скидок
 | 
			
		||||
	// для <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task/post">товаров</a> и <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post">размеров товаров</a>, а также скидок <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1club-discount/post">WB Клуба</a>.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Чтобы получить информацию обо всех товарах продавца,
 | 
			
		||||
	// оставьте артикул пустым, установите `limit=1000`, в
 | 
			
		||||
	// параметре `offset` установите смещение по количеству
 | 
			
		||||
	// записей. Количество нужно рассчитать по формуле: `offset`
 | 
			
		||||
	// плюс `limit` из предыдущего запроса. Повторяйте запрос,
 | 
			
		||||
	// пока вы не получите ответ с пустым массивом.<br> Чтобы
 | 
			
		||||
	// получить информацию о размерах товара, используйте
 | 
			
		||||
	// [отдельный
 | 
			
		||||
	// метод](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1size~1nm/get).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Работает только для товаров из категорий, где можно
 | 
			
		||||
	// устанавливать цены отдельно для разных размеров. Для
 | 
			
		||||
	// таких товаров `editableSizePrice: true`.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Чтобы получить информацию о самом товаре,
 | 
			
		||||
	// используйте [отдельный
 | 
			
		||||
	// метод](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /api/v2/list/goods/size/nm
 | 
			
		||||
	APIV2ListGoodsSizeNmGet(ctx context.Context, params APIV2ListGoodsSizeNmGetParams) (APIV2ListGoodsSizeNmGetRes, error)
 | 
			
		||||
	// APIV2QuarantineGoodsGet implements GET /api/v2/quarantine/goods operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет информацию о товарах в карантине.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Если новая цена товара со скидкой будет минимум в 3
 | 
			
		||||
	// раза меньше старой, товар попадёт [в
 | 
			
		||||
	// карантин](https://seller.wildberries.ru/discount-and-prices/quarantine) и будет
 | 
			
		||||
	// продаваться по старой цене. Ошибка об этом будет в
 | 
			
		||||
	// ответах методов [состояний
 | 
			
		||||
	// загрузок](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get).
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Вы можете изменить цену или скидку с помощью API либо
 | 
			
		||||
	// вывести товар из карантина [в личном
 | 
			
		||||
	// кабинете](https://seller.wildberries.ru/discount-and-prices/quarantine).
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Для товаров с [поразмерной установкой
 | 
			
		||||
	// цен](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post)
 | 
			
		||||
	// карантин не применяется.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Получить информацию о процессе установки цен и
 | 
			
		||||
	// скидок можно с помощью методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get">состояния</a> и <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1goods~1task/get">детализации</a> обработанной загрузки.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /api/v2/upload/task/club-discount
 | 
			
		||||
	APIV2UploadTaskClubDiscountPost(ctx context.Context, req *APIV2UploadTaskClubDiscountPostReq) (APIV2UploadTaskClubDiscountPostRes, error)
 | 
			
		||||
	// APIV2UploadTaskPost implements POST /api/v2/upload/task operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод устанавливает цены и скидки для товаров.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Чтобы установить цены и скидки для размеров товара,
 | 
			
		||||
	// используйте [отдельный
 | 
			
		||||
	// метод](/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1upload~1task~1size/post).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Получить информацию о процессе установки цен и
 | 
			
		||||
	// скидок можно с помощью методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get">состояния</a> и <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1goods~1task/get">детализации</a> обработанной загрузки.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Получить информацию о процессе установки цен и
 | 
			
		||||
	// скидок можно с помощью методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1tasks/get">состояния</a> и <a href="/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1history~1goods~1task/get">детализации</a> обработанной загрузки.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 10 запросов за 6 <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">секунд</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Цены и скидки</a>
 | 
			
		||||
	// на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// <strong>Действие необратимо</strong>. Удаленный остаток
 | 
			
		||||
	// будет необходимо загрузить повторно для
 | 
			
		||||
	// возобновления продаж.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Названия параметров запроса не валидируются. При
 | 
			
		||||
	// отправке некорректных названий вы получите успешный
 | 
			
		||||
	// ответ (<code>204</code>), но остатки не обновятся.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Нельзя привязывать склад WB, который уже используется
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) можно
 | 
			
		||||
	// изменить один раз в сутки.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Нельзя привязывать склад WB, который уже используется
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 300 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Маркетплейс</a> на
 | 
			
		||||
	// один аккаунт продавца.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Один запрос с кодом ответа <code>409</code> учитывается как 5
 | 
			
		||||
	// запросов
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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). Можно использовать, если у вас нет собственных баркодов.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// После переноса в корзину карточке товара
 | 
			
		||||
	// присваивается новый <code>imtID</code>.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Карточки товаров удаляются автоматически, если лежат
 | 
			
		||||
	// в корзине больше 30 дней. Очистка корзины происходит
 | 
			
		||||
	// каждую ночь по московскому времени.<br>
 | 
			
		||||
	// Карточки товаров можно удалить в любое время в
 | 
			
		||||
	// [личном кабинете](https://seller.wildberries.ru/new-goods/basket-cards).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /content/v2/cards/delete/trash
 | 
			
		||||
	ContentV2CardsDeleteTrashPost(ctx context.Context, req *ContentV2CardsDeleteTrashPostReq) (ContentV2CardsDeleteTrashPostRes, error)
 | 
			
		||||
	// ContentV2CardsErrorListGet implements GET /content/v2/cards/error/list operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет список карточек товаров, при
 | 
			
		||||
	// создании или редактировании которых произошли
 | 
			
		||||
	// ошибки, с описанием этих ошибок.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Чтобы убрать карточку товара из списка, нужно
 | 
			
		||||
	// повторно сделать запрос на <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создание</a> или редактирование карточки товара с исправленными ошибками.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).<br><br>
 | 
			
		||||
	// Формула для получения количества карточек, которые
 | 
			
		||||
	// можно создать:
 | 
			
		||||
	// > (`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).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Карточка товара сохраняет тот же <code>imtID</code>, что был
 | 
			
		||||
	// присвоен ей при <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1delete~1trash/post">перемещении в корзину</a>.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Карточка товара перезаписывается при обновлении.
 | 
			
		||||
	// Поэтому в запросе нужно передать <strong>все</strong>
 | 
			
		||||
	// параметры карточки, в том числе те, которые вы не
 | 
			
		||||
	// собираетесь обновлять.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Нельзя редактировать или удалять баркоды, но можно
 | 
			
		||||
	// добавить дополнительный баркод к карточке товара.
 | 
			
		||||
	// Параметры `photos`, `video` и `tags` редактировать или удалять
 | 
			
		||||
	// через данный метод нельзя.<br>
 | 
			
		||||
	// Габариты товаров можно указать только в `сантиметрах`,
 | 
			
		||||
	//  вес товара с упаковкой — в `килограммах`.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// В одном запросе можно отредактировать максимум 3000
 | 
			
		||||
	// карточек товаров (`nmID`). Максимальный размер запроса 10
 | 
			
		||||
	// Мб.<br>
 | 
			
		||||
	// Если ответ `Успешно` (`200`), но какие-то карточки не
 | 
			
		||||
	// обновились, получите [список несозданных карточек
 | 
			
		||||
	// товаров](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня для метода будет отдельный
 | 
			
		||||
	// лимит — 10 запросов в минуту на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /content/v2/cards/update
 | 
			
		||||
	ContentV2CardsUpdatePost(ctx context.Context, req []ContentV2CardsUpdatePostReqItem) (ContentV2CardsUpdatePostRes, error)
 | 
			
		||||
	// ContentV2CardsUploadAddPost implements POST /content/v2/cards/upload/add operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод создаёт новые карточки товаров, присоединяя их
 | 
			
		||||
	// к существующим карточкам.
 | 
			
		||||
	// Габариты товаров можно указать только в `сантиметрах`,
 | 
			
		||||
	//  вес товара с упаковкой — в `килограммах`.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Создание карточки товара происходит асинхронно.
 | 
			
		||||
	// После отправки запрос становится в очередь на
 | 
			
		||||
	// обработку.<br>Максимальный размер запроса 10 Мб.<br>
 | 
			
		||||
	// Если ответ `Успешно` (`200`), но какие-то карточки не
 | 
			
		||||
	// обновились, получите [список несозданных карточек
 | 
			
		||||
	// товаров](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня для метода будет отдельный
 | 
			
		||||
	// лимит — 10 запросов в минуту на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /content/v2/cards/upload/add
 | 
			
		||||
	ContentV2CardsUploadAddPost(ctx context.Context, req OptContentV2CardsUploadAddPostReq) (ContentV2CardsUploadAddPostRes, error)
 | 
			
		||||
	// ContentV2CardsUploadPost implements POST /content/v2/cards/upload operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод создаёт карточки товаров c указанием описаний и
 | 
			
		||||
	// характеристик товаров.<br>
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Есть две формы запроса: для создания отдельных и
 | 
			
		||||
	// объединённых карточек товаров.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Габариты товаров можно указать только в `сантиметрах`,
 | 
			
		||||
	//  вес товара с упаковкой — в `килограммах`.
 | 
			
		||||
	// <br><br>
 | 
			
		||||
	// Создание карточки товара происходит асинхронно.
 | 
			
		||||
	// После отправки запрос становится в очередь на
 | 
			
		||||
	// обработку.<br>
 | 
			
		||||
	// В одном запросе можно создать максимум 100
 | 
			
		||||
	// объединённых карточек товаров (`imtID`), по 30 карточек
 | 
			
		||||
	// товаров в каждой. Максимальный размер запроса 10 Мб.<br>
 | 
			
		||||
	// Если ответ `Успешно` (`200`), но какие-то карточки не
 | 
			
		||||
	// обновились, получите [список несозданных карточек
 | 
			
		||||
	// товаров](/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1error~1list/get).
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня для метода будет отдельный
 | 
			
		||||
	// лимит — 10 запросов в минуту на один аккаунт продавца
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) предмета `Цвет`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) предмета `Страна производства`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) предмета `Пол`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) предмета `Сезон`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) и фрагменту ТНВЭД-кода.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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) предмета `Ставка НДС`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /content/v2/directory/vat
 | 
			
		||||
	ContentV2DirectoryVatGet(ctx context.Context, params ContentV2DirectoryVatGetParams) (ContentV2DirectoryVatGetRes, error)
 | 
			
		||||
	// ContentV2GetCardsListPost implements POST /content/v2/get/cards/list operation.
 | 
			
		||||
	//
 | 
			
		||||
	// <div class="description_auth">
 | 
			
		||||
	// Метод доступен по <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">токену</a> с
 | 
			
		||||
	// категорией <strong>Контент</strong> или <strong>Продвижение</strong>
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Метод предоставляет список созданных карточек
 | 
			
		||||
	// товаров.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// В ответе метода не будет карточек, находящихся в
 | 
			
		||||
	// корзине. Получить такие карточки можно через <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1get~1cards~1trash/post">отдельный метод</a>.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Чтобы получить **больше 100** карточек товаров,
 | 
			
		||||
	// воспользуйтесь пагинацией:
 | 
			
		||||
	// <ol>
 | 
			
		||||
	// <li>Сделайте первый запрос: <br>
 | 
			
		||||
	// <pre style="background-color: rgb(38 50 56 / 5%); color: #e53935">
 | 
			
		||||
	// {
 | 
			
		||||
	// "settings": {
 | 
			
		||||
	// "cursor": {
 | 
			
		||||
	// "limit": 100
 | 
			
		||||
	// },
 | 
			
		||||
	// "filter": {
 | 
			
		||||
	// "withPhoto": -1
 | 
			
		||||
	// }
 | 
			
		||||
	// }
 | 
			
		||||
	// }</pre>
 | 
			
		||||
	// </li>
 | 
			
		||||
	// <li>Пройдите в конец полученного списка карточек
 | 
			
		||||
	// товаров.</li>
 | 
			
		||||
	// <li>Скопируйте из <code>cursor</code> две строки:
 | 
			
		||||
	// <ul>
 | 
			
		||||
	// <li><code>"updatedAt": "***"</code></li>
 | 
			
		||||
	// <li><code>"nmID": ***</code></li>
 | 
			
		||||
	// </ul></li>
 | 
			
		||||
	// <li>Вставьте скопированные строки в параметр запроса
 | 
			
		||||
	// <code>cursor</code>.</li>
 | 
			
		||||
	// <li>Повторите запрос. </li>
 | 
			
		||||
	// <li>Повторяйте пункты со <b>2</b> по <b>5</b>, пока поле
 | 
			
		||||
	// <code>total</code> в ответе не станет меньше чем параметр
 | 
			
		||||
	// <code>limit</code> в запросе. Это будет означать, что вы
 | 
			
		||||
	// получили все карточки.
 | 
			
		||||
	// </ol>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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.
 | 
			
		||||
	//
 | 
			
		||||
	// <div class="description_auth">
 | 
			
		||||
	// Метод доступен по <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">токену</a> с
 | 
			
		||||
	// категорией <strong>Контент</strong> или <strong>Продвижение</strong>
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Метод предоставляет список карточек товаров в
 | 
			
		||||
	// корзине.<br><br>
 | 
			
		||||
	// Чтобы получить **больше 100** карточек товаров,
 | 
			
		||||
	// воспользуйтесь пагинацией:
 | 
			
		||||
	// <ol>
 | 
			
		||||
	// <li>Сделайте первый запрос: <br>
 | 
			
		||||
	// <pre style="background-color: rgb(38 50 56 / 5%); color: #e53935">
 | 
			
		||||
	// {
 | 
			
		||||
	// "settings": {
 | 
			
		||||
	// "cursor": {
 | 
			
		||||
	// "limit": 100
 | 
			
		||||
	// },
 | 
			
		||||
	// "filter": {
 | 
			
		||||
	// "withPhoto": -1
 | 
			
		||||
	// }
 | 
			
		||||
	// }
 | 
			
		||||
	// }</pre>
 | 
			
		||||
	// </li>
 | 
			
		||||
	// <li>Пройдите в конец полученного списка карточек
 | 
			
		||||
	// товаров.</li>
 | 
			
		||||
	// <li>Скопируйте из <code>cursor</code> две строки:
 | 
			
		||||
	// <ul>
 | 
			
		||||
	// <li><code>"trashedAt": "***"</code></li>
 | 
			
		||||
	// <li><code>"nmID": ***</code></li>
 | 
			
		||||
	// </ul></li>
 | 
			
		||||
	// <li>Вставьте скопированные строки в параметр запроса
 | 
			
		||||
	// <code>cursor</code>.</li>
 | 
			
		||||
	// <li>Повторите запрос. </li>
 | 
			
		||||
	// <li>Повторяйте пункты со <b>2</b> по <b>5</b>, пока поле
 | 
			
		||||
	// <code>total</code> в ответе не станет меньше чем параметр
 | 
			
		||||
	// <code>limit</code> в запросе. Это будет означать, что вы
 | 
			
		||||
	// получили все карточки.
 | 
			
		||||
	// </ol>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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. Например, у категории `Игрушки` будут предметы `Калейдоскопы`, `Куклы`, `Мячики`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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).
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Для получения характеристик <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1colors/get">Цвет</a>, <a href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1kinds/get">Пол</a>, <a href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1countries/get">Страна производства</a>, <a href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1seasons/get">Сезон</a>, <a href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1vat/get">Ставка НДС</a> и <a href="/openapi/work-with-products#tag/Kategorii-predmety-i-harakteristiki/paths/~1content~1v2~1directory~1tnved/get">ТНВЭД-код</a> используйте отдельные методы
 | 
			
		||||
	// </div>
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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): например,
 | 
			
		||||
	// `Электроника`, `Бытовая химия`, `Рукоделие`.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// GET /content/v2/object/parent/all
 | 
			
		||||
	ContentV2ObjectParentAllGet(ctx context.Context, params ContentV2ObjectParentAllGetParams) (ContentV2ObjectParentAllGetRes, error)
 | 
			
		||||
	// ContentV2TagNomenclatureLinkPost implements POST /content/v2/tag/nomenclature/link operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод добавляет или снимает ярлык с карточки товара.
 | 
			
		||||
	// К карточке можно добавить максимум 15 ярлыков.<br>
 | 
			
		||||
	// При удалении ярлыка из карточки товара он не
 | 
			
		||||
	// удаляется из [списка
 | 
			
		||||
	// ярлыков](/openapi/work-with-products#tag/Yarlyki/paths/~1content~1v2~1tags/get)
 | 
			
		||||
	// продавца.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /content/v2/tag/nomenclature/link
 | 
			
		||||
	ContentV2TagNomenclatureLinkPost(ctx context.Context, req *ContentV2TagNomenclatureLinkPostReq) (ContentV2TagNomenclatureLinkPostRes, error)
 | 
			
		||||
	// ContentV2TagsGet implements GET /content/v2/tags operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод предоставляет список и характеристики всех
 | 
			
		||||
	// ярлыков продавца для группировки и фильтрации
 | 
			
		||||
	// товаров.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// POST /content/v3/media/file
 | 
			
		||||
	ContentV3MediaFilePost(ctx context.Context, req *ContentV3MediaFilePostReq, params ContentV3MediaFilePostParams) (ContentV3MediaFilePostRes, error)
 | 
			
		||||
	// ContentV3MediaSavePost implements POST /content/v3/media/save operation.
 | 
			
		||||
	//
 | 
			
		||||
	// Метод загружает набор медиафайлов в карточку товара
 | 
			
		||||
	// через указание ссылок в запросе.
 | 
			
		||||
	// <div class="description_important">
 | 
			
		||||
	// Новые медиафайлы полностью заменяют старые. Чтобы
 | 
			
		||||
	// добавить новые медиафайлы, укажите в запросе ссылки
 | 
			
		||||
	// одновременно на новые и старые медиафайлы.
 | 
			
		||||
	// </div>
 | 
			
		||||
	// Требования к изображениям:
 | 
			
		||||
	// * максимум изображений для одной карточки товара — 30
 | 
			
		||||
	// * минимальное разрешение — 700×900 px
 | 
			
		||||
	// * максимальный размер — 32 Мб
 | 
			
		||||
	// * минимальное качество — 65%
 | 
			
		||||
	// * форматы — JPG, PNG, BMP, GIF (статичные), WebP
 | 
			
		||||
	// Требования к видео:
 | 
			
		||||
	// * максимум одно видео для одной карточки товара
 | 
			
		||||
	// * максимальный размер — 50 Мб
 | 
			
		||||
	// * форматы — MOV, MP4
 | 
			
		||||
	// Если видео или хотя бы одно изображение в запросе не
 | 
			
		||||
	// соответствует требованиям, то даже при успешном
 | 
			
		||||
	// ответе ни одно изображение/видео не загрузится.
 | 
			
		||||
	// <div class="description_limit">
 | 
			
		||||
	// Максимум 100 запросов в <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Vvedenie/Limity-zaprosov">минуту</a> для всех
 | 
			
		||||
	// методов категории <a
 | 
			
		||||
	// href="/openapi/api-information#tag/Avtorizaciya/Kak-sozdat-token">Контент</a> на один
 | 
			
		||||
	// аккаунт продавца. С 5 июня — за исключением методов <a
 | 
			
		||||
	// href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload/post">создания</a>, <a href="/openapi/work-with-products#tag/Sozdanie-kartochek-tovarov/paths/~1content~1v2~1cards~1upload~1add/post">создания с присоединением</a> и <a href="/openapi/work-with-products#tag/Kartochki-tovarov/paths/~1content~1v2~1cards~1update/post">редактирования</a> карточек товаров
 | 
			
		||||
	// </div>.
 | 
			
		||||
	//
 | 
			
		||||
	// 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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1062
									
								
								pkg/api/wb/client/oas_unimplemented_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1062
									
								
								pkg/api/wb/client/oas_unimplemented_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1661
									
								
								pkg/api/wb/client/oas_validators_gen.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1661
									
								
								pkg/api/wb/client/oas_validators_gen.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3
									
								
								pkg/api/wb/generate.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pkg/api/wb/generate.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
package wb
 | 
			
		||||
 | 
			
		||||
//go:generate go run github.com/ogen-go/ogen/cmd/ogen@latest --target client --clean 02-products.yaml
 | 
			
		||||
							
								
								
									
										7
									
								
								pkg/api/wb/ogen.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								pkg/api/wb/ogen.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
generator:
 | 
			
		||||
  ignore_not_implemented: [ "all" ]
 | 
			
		||||
  content_type_aliases:
 | 
			
		||||
    "application/problem+json": "application/json"
 | 
			
		||||
  features:
 | 
			
		||||
    enable:
 | 
			
		||||
      - 'client/security/reentrant'
 | 
			
		||||
		Reference in New Issue
	
	Block a user