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