bigcommerce

package module
v0.0.0-...-376626f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2024 License: MIT Imports: 11 Imported by: 0

README

This library provides an unofficial Go client for the bigcommerce REST API

Installation:

go get github.com/seanomeara96/go-bigcommerce

bigcommerce example usage:

package main

import (
	"fmt"

  	"github.com/joho/godotenv"
  	bigcommerce "github.com/seanomeara96/go-bigcommerce"
)

func main() {
	err := godotenv.Load()
	if err != nil {
		panic(err)
	}

	storeHash := os.Getenv("STORE_HASH")
	xAuthToken := os.Getenv("XAUTHTOKEN")

	store := bigcommerce.NewClient("3", storeHash, xAuthToken)

	products, err := store.GetFullProductCatalog(250)
	if err != nil {
		panic(err)
	}
	fmt.Println(products)
}

Documentation

Index

Constants

This section is empty.

Variables

AllowedContactFields is a slice containing all allowed contact fields.

AllowedPageTypes is a slice containing all allowed page types.

Functions

func FromPaths

func FromPaths(redirects []Redirect) []string

func ValidateCreateUpdateProductVariantOptions

func ValidateCreateUpdateProductVariantOptions(options CreateUpdateProductVariantOptions) error

Types

type AllProductVariantsQueryParams

type AllProductVariantsQueryParams struct {
	ID            int    `url:"id,omitempty"`
	SKU           string `url:"sku,omitempty"`
	UPC           string `url:"upc,omitempty"`
	Page          int    `url:"page,omitempty"`
	Limit         int    `url:"limit,omitempty"`
	IncludeFields string `url:"include_fields,omitempty"`
	ExcludeFields string `url:"exclude_fields,omitempty"`
	ProductID     string `url:"product_id,omitempty"`
}

type AppliesTo

type AppliesTo struct {
	IDs    []int  `json:"ids"`
	Entity string `json:"entity"`
}
type Banner struct {
	ID          int    `json:"id"`
	DateCreated string `json:"date_created"`
	Name        string `json:"name"`
	Content     string `json:"content"`
	Page        string `json:"page"`
	Location    string `json:"location"`
	DateType    string `json:"date_type"`
	DateFrom    string `json:"date_from,omitempty"`
	DateTo      string `json:"date_to,omitempty"`
	Visible     string `json:"visible"`
	ItemID      string `json:"item_id,omitempty"`
}

type BillingAddress

type BillingAddress struct {
	FirstName   string       `json:"first_name"`
	LastName    string       `json:"last_name"`
	Company     string       `json:"company"`
	Street1     string       `json:"street_1"`
	Street2     string       `json:"street_2"`
	City        string       `json:"city"`
	State       string       `json:"state"`
	Zip         int          `json:"zip"`
	Country     string       `json:"country"`
	CountryISO2 string       `json:"country_iso2"`
	Phone       int          `json:"phone"`
	Email       string       `json:"email"`
	FormFields  []FormFields `json:"form_fields"`
}

type Brand

type Brand struct {
	ID              int       `json:"id"`
	Name            string    `json:"name"`
	MetaKeywords    []string  `json:"meta_keywords"`
	MetaDescription string    `json:"meta_description"`
	ImageURL        string    `json:"image_url"`
	SearchKeywords  string    `json:"search_keywords"`
	CustomURL       CustomURL `json:"custom_url"`
}

type BrandQueryParams

type BrandQueryParams struct {
	ID            int    `url:"id,omitempty"`
	IDIn          []int  `url:"id:in,omitempty"`
	IDNotIn       []int  `url:"id:not_in,omitempty"`
	IDMin         []int  `url:"id:min,omitempty"`
	IDMax         []int  `url:"id:max,omitempty"`
	IDGreater     []int  `url:"id:greater,omitempty"`
	IDLess        []int  `url:"id:less,omitempty"`
	Name          string `url:"name,omitempty"`
	PageTitle     string `url:"page_title,omitempty"`
	Page          int    `url:"page,omitempty"`
	Limit         int    `url:"limit,omitempty"`
	IncludeFields string `url:"include_fields,omitempty"`
	ExcludeFields string `url:"exclude_fields,omitempty"`
}

type Category

type Category struct {
	ID                 int       `json:"id"`
	ParentID           int       `json:"parent_id"`
	Name               string    `json:"name"`
	Description        string    `json:"description"`
	Views              int       `json:"views"`
	SortOrder          int       `json:"sort_order"`
	PageTitle          string    `json:"page_title"`
	SearchKeywords     string    `json:"search_keywords"`
	MetaKeywords       []string  `json:"meta_keywords"`
	MetaDescription    string    `json:"meta_description"`
	LayoutFile         string    `json:"layout_file"`
	IsVisible          bool      `json:"is_visible"`
	DefaultProductSort string    `json:"default_product_sort"`
	ImageURL           string    `json:"image_url"`
	CustomURL          CustomURL `json:"custom_url"`
}

type CategoryQueryParams

type CategoryQueryParams struct {
	ID              int      `url:"id,omitempty"`
	IDIn            []int    `url:"id:in,omitempty"`
	IDNotIn         []int    `url:"id:not_in,omitempty"`
	IDMin           []int    `url:"id:min,omitempty"`
	IDMax           []int    `url:"id:max,omitempty"`
	IDGreater       []int    `url:"id:greater,omitempty"`
	IDLess          []int    `url:"id:less,omitempty"`
	Name            string   `url:"name,omitempty"`
	NameLike        []string `url:"name:like,omitempty"`
	ParentID        int      `url:"parent_id,omitempty"`
	ParentIDIn      []int    `url:"parent_id:in,omitempty"`
	ParentIDMin     []int    `url:"parent_id:min,omitempty"`
	ParentIDMax     []int    `url:"parent_id:max,omitempty"`
	ParentIDGreater []int    `url:"parent_id:greater,omitempty"`
	ParentIDLess    []int    `url:"parent_id:less,omitempty"`
	PageTitle       string   `url:"page_title,omitempty"`
	PageTitleLike   []string `url:"page_title:like,omitempty"`
	Keyword         string   `url:"keyword,omitempty"`
	IsVisible       bool     `url:"is_visible,omitempty"`
	Page            int      `url:"page,omitempty"`
	Limit           int      `url:"limit,omitempty"`
	IncludeFields   string   `url:"include_fields,omitempty"`
	ExcludeFields   string   `url:"exclude_fields,omitempty"`
}

type Client

type Client struct {
	BaseURL   *url.URL
	AuthToken string
	StoreHash string

	Version int
	// contains filtered or unexported fields
}

func NewClient

func NewClient(storeHash string, authToken string, version int) Client

func (*Client) AddCategoryToProduct

func (client *Client) AddCategoryToProduct(productID, categoryToAddID int) (Product, error)

func (*Client) CreateBanner

func (client *Client) CreateBanner(params CreateUpdateBannerParams) (Banner, error)

func (*Client) CreateCoupon

func (client *Client) CreateCoupon(params CreateUpdateCouponParams) (Coupon, error)

func (*Client) CreateCustomField

func (client *Client) CreateCustomField(productID int, params CreateCustomFieldParams) (ProductCustomField, error)

func (*Client) CreatePage

func (client *Client) CreatePage(params CreatePageParams) (Page, error)

func (*Client) CreateProduct

func (client *Client) CreateProduct(params CreateUpdateProductParams) (Product, error)

func (*Client) CreateProductImage

func (client *Client) CreateProductImage(productID int, params CreateProductImageParams) (ProductImage, error)

func (*Client) CreateProductVariant

func (client *Client) CreateProductVariant(productID int, params ProductVariantCreateParams) (ProductVariant, error)

func (*Client) CreateProductVariantOption

func (client *Client) CreateProductVariantOption(product_id int, params CreateUpdateProductVariantOptions) (ProductVariantOption, error)

func (*Client) CreateProductVideo

func (client *Client) CreateProductVideo()

func (*Client) CreateScript

func (client *Client) CreateScript(params CreateScriptParams) (Script, error)

func (*Client) Delete

func (client *Client) Delete(url string) (*http.Response, error)

func (*Client) DeleteBanner

func (client *Client) DeleteBanner(bannerID int) error

func (*Client) DeleteCoupon

func (client *Client) DeleteCoupon(couponID int) error

func (*Client) DeleteCustomField

func (client *Client) DeleteCustomField(productID int, customFieldID int) error

func (*Client) DeletePage

func (client *Client) DeletePage(pageID int) error

func (*Client) DeleteProduct

func (client *Client) DeleteProduct(productID int) error

func (*Client) DeleteProductImage

func (client *Client) DeleteProductImage(productID int, imageID int) (bool, error)

func (*Client) DeleteProductVariantOption

func (client *Client) DeleteProductVariantOption(product_id, option_id int) error

func (*Client) DeleteProductVideo

func (client *Client) DeleteProductVideo()

func (*Client) DeleteRedirect

func (client *Client) DeleteRedirect(params DeleteRedirectsParams) error

func (*Client) EmptyCategory

func (client *Client) EmptyCategory(id int) error

func (*Client) Get

func (client *Client) Get(url string) (*http.Response, error)

func (*Client) GetAllBrands

func (client *Client) GetAllBrands(params BrandQueryParams) ([]Brand, error)

func (*Client) GetAllCategories

func (client *Client) GetAllCategories(params CategoryQueryParams) ([]Category, error)

func (*Client) GetAllProductImages

func (client *Client) GetAllProductImages(productID int) ([]ProductImage, error)

func (*Client) GetAllProductVideos

func (client *Client) GetAllProductVideos(productID int, params GetAllProductVideosQueryParams) ([]ProductVideo, MetaData, error)

func (*Client) GetAllProducts

func (client *Client) GetAllProducts(params ProductQueryParams) ([]Product, error)

func (*Client) GetAllRedirects

func (client *Client) GetAllRedirects(params RedirectQueryParams) ([]Redirect, error)

func (*Client) GetAllScripts

func (client *Client) GetAllScripts(limit int) ([]Script, error)

func (*Client) GetAllVariants

func (c *Client) GetAllVariants(queryParams AllProductVariantsQueryParams) ([]ProductVariant, error)

func (*Client) GetBanner

func (client *Client) GetBanner(bannerID int) (Banner, error)

func (*Client) GetBanners

func (client *Client) GetBanners(params GetBannersParams) ([]Banner, MetaData, error)

func (*Client) GetBrand

func (client *Client) GetBrand(id int) (Brand, error)

func (*Client) GetBrands

func (client *Client) GetBrands(params BrandQueryParams) ([]Brand, MetaData, error)

func (*Client) GetCategories

func (client *Client) GetCategories(params CategoryQueryParams) ([]Category, MetaData, error)

func (*Client) GetCategory

func (client *Client) GetCategory(id int) (Category, error)

func (*Client) GetCoupon

func (client *Client) GetCoupon(couponID int) (Coupon, error)

func (*Client) GetCoupons

func (client *Client) GetCoupons(params CouponQueryParams) ([]Coupon, MetaData, error)

func (*Client) GetCustomField

func (client *Client) GetCustomField(productID int, customFieldID int) (ProductCustomField, error)

func (*Client) GetCustomFields

func (client *Client) GetCustomFields(productID int, params ProductCustomFieldsRequestParams) ([]ProductCustomField, error)

func (*Client) GetOrder

func (client *Client) GetOrder(orderID int) (Order, error)

func (*Client) GetOrders

func (client *Client) GetOrders(params OrderQueryParams) ([]Order, MetaData, error)

func (*Client) GetPage

func (client *Client) GetPage(pageID int) (Page, error)

func (*Client) GetPages

func (client *Client) GetPages(queryParams GetPagesParams) ([]Page, MetaData, error)

func (*Client) GetProduct

func (client *Client) GetProduct(id int) (Product, error)

func (*Client) GetProductBySKU

func (client *Client) GetProductBySKU(sku string) (Product, error)

func (*Client) GetProductImage

func (client *Client) GetProductImage(productID int, imageID int) (ProductImage, error)

func (*Client) GetProductVariantOption

func (client *Client) GetProductVariantOption(product_id, option_id int) (ProductVariantOption, error)

func (*Client) GetProductVariantOptions

func (client *Client) GetProductVariantOptions(product_id int) ([]ProductVariantOption, error)

func (*Client) GetProductVariants

func (client *Client) GetProductVariants(productID int, params ProductVariantQueryParams) ([]ProductVariant, MetaData, error)

func (*Client) GetProductVideo

func (client *Client) GetProductVideo()

func (*Client) GetProducts

func (client *Client) GetProducts(params ProductQueryParams) ([]Product, MetaData, error)

func (*Client) GetPromotion

func (c *Client) GetPromotion(id int) (Promotion, error)

func (*Client) GetRedirects

func (client *Client) GetRedirects(params RedirectQueryParams) ([]Redirect, error)

func (*Client) GetScripts

func (client *Client) GetScripts(params ScriptsQuery) ([]Script, MetaData, error)

func (*Client) GetVariants

func (c *Client) GetVariants(queryParams AllProductVariantsQueryParams) ([]ProductVariant, MetaData, error)

func (*Client) ListOrderCoupons

func (client *Client) ListOrderCoupons(orderID int) ([]OrderCoupon, error)

func (*Client) Post

func (client *Client) Post(url string, payload []byte) (*http.Response, error)

func (*Client) ProductToProductVariant

func (client *Client) ProductToProductVariant(parentProductID int, product Product, options *[]VariantOption) (ProductVariant, error)

func (*Client) Put

func (client *Client) Put(url string, payload []byte) (*http.Response, error)

func (*Client) RemoveCategoryFromProduct

func (client *Client) RemoveCategoryFromProduct(productID, categoryToRemoveID int) (Product, error)

func (*Client) Request

func (c *Client) Request(httpMethod string, relativeUrl string, payload []byte, attempt int) (*http.Response, error)

func (*Client) UpdateClient

func (client *Client) UpdateClient(bannerID int, params CreateUpdateBannerParams) (Banner, error)

func (*Client) UpdateCoupon

func (client *Client) UpdateCoupon(couponID int, params CreateUpdateCouponParams) (Coupon, error)

func (*Client) UpdateCustomField

func (client *Client) UpdateCustomField(productID int, customFieldID int, params UpdateCustomFieldParams) (ProductCustomField, error)

func (*Client) UpdatePage

func (client *Client) UpdatePage(pageID int, params UpdatePageParams) (Page, error)

func (*Client) UpdateProduct

func (client *Client) UpdateProduct(productId int, params CreateUpdateProductParams) (Product, error)

func (*Client) UpdateProductImage

func (client *Client) UpdateProductImage(productID int, imageID int, params UpdateProductImageParams) (ProductImage, error)

func (*Client) UpdateProductVariantOption

func (client *Client) UpdateProductVariantOption(product_id, option_id int, params CreateUpdateProductVariantOptions) (ProductVariantOption, error)

func (*Client) UpdateProductVideo

func (client *Client) UpdateProductVideo()

func (*Client) UpdatePromotion

func (c *Client) UpdatePromotion(id int, params PromotionUpdateParams) (Promotion, error)

func (*Client) UpdateScript

func (client *Client) UpdateScript(uuid string, params UpdateScriptParams) (Script, error)

func (*Client) UpsertRedirects

func (client *Client) UpsertRedirects(redirects []RedirectUpsert) ([]Redirect, error)

func (*Client) Version2Required

func (client *Client) Version2Required() error

type Config

type Config struct {
	DefaultValue            string   `json:"default_value,omitempty"`
	CheckedByDefault        bool     `json:"checked_by_default,omitempty"`
	CheckboxLabel           string   `json:"checkbox_label,omitempty"`
	DateLimited             bool     `json:"date_limited,omitempty"`
	DateLimitMode           string   `json:"date_limit_mode,omitempty"`
	DateEarliestValue       string   `json:"date_earliest_value,omitempty"`
	DateLatestValue         string   `json:"date_latest_value,omitempty"`
	FileTypesMode           string   `json:"file_types_mode,omitempty"`
	FileTypesSupported      []string `json:"file_types_supported,omitempty"`
	FileTypesOther          []string `json:"file_types_other,omitempty"`
	FileMaxSize             int      `json:"file_max_size,omitempty"`
	TextCharactersLimited   bool     `json:"text_characters_limited,omitempty"`
	TextMinLength           int      `json:"text_min_length,omitempty"`
	TextMaxLength           int      `json:"text_max_length,omitempty"`
	TextLinesLimited        bool     `json:"text_lines_limited,omitempty"`
	TextMaxLines            int      `json:"text_max_lines,omitempty"`
	NumberLimited           bool     `json:"number_limited,omitempty"`
	NumberLimitMode         string   `json:"number_limit_mode,omitempty"`
	NumberLowestValue       int      `json:"number_lowest_value,omitempty"`
	NumberHighestValue      int      `json:"number_highest_value,omitempty"`
	NumberIntegersOnly      bool     `json:"number_integers_only,omitempty"`
	ProductListAdjustsInv   bool     `json:"product_list_adjusts_inventory,omitempty"`
	ProductListAdjustsPrc   bool     `json:"product_list_adjusts_pricing,omitempty"`
	ProductListShippingCalc string   `json:"product_list_shipping_calc,omitempty"`
	SortOrder               int      `json:"sort_order,omitempty"`
}

type ContactField

type ContactField string
const (
	FullnameField    ContactField = "fullname"
	PhoneField       ContactField = "phone"
	CompanyNameField ContactField = "companyname"
	OrderNoField     ContactField = "orderno"
	RMAField         ContactField = "rma"
)

type Coupon

type Coupon struct {
	ID                 int                 `json:"id"`
	DateCreated        string              `json:"date_created"`
	NumUses            int                 `json:"num_uses"`
	Name               string              `json:"name"`
	Type               string              `json:"type"`
	Amount             string              `json:"amount"`
	MinPurchase        string              `json:"min_purchase"`
	Expires            string              `json:"expires"`
	Enabled            bool                `json:"enabled"`
	Code               string              `json:"code"`
	AppliesTo          CouponAppliesTo     `json:"applies_to"`
	MaxUses            int                 `json:"max_uses"`
	MaxUsesPerCustomer int                 `json:"max_uses_per_customer"`
	RestrictedTo       *CouponRestrictedTo `json:"restricted_to,omitempty"`
}

type CouponAppliesTo

type CouponAppliesTo struct {
	IDs    []int  `json:"ids"`
	Entity string `json:"entity"`
}

type CouponQueryParams

type CouponQueryParams struct {
	ID          string `url:"id,omitempty"`
	Code        string `url:"code,omitempty"`
	Name        string `url:"name,omitempty"`
	Type        string `url:"type,omitempty"`
	MinID       int    `url:"min_id,omitempty"`
	MaxID       int    `url:"max_id,omitempty"`
	Page        int    `url:"page,omitempty"`
	Limit       int    `url:"limit,omitempty"`
	ExcludeType string `url:"exclude_type,omitempty"`
}

type CouponResponseObject

type CouponResponseObject struct {
	Data Coupon   `json:"data"`
	Meta MetaData `json:"meta"`
}

type CouponRestrictedTo

type CouponRestrictedTo struct {
	Countries       string   `json:"countries,omitempty"`
	Null            string   `json:"null,omitempty"`
	ShippingMethods []string `json:"shipping_methods,omitempty"`
}

type CouponsResponseObject

type CouponsResponseObject struct {
	Data []Coupon `json:"data"`
	Meta MetaData `json:"meta"`
}

type CreateCustomFieldParams

type CreateCustomFieldParams struct {
	Name  string `json:"name" validate:"required,min=1,max=250"`
	Value string `json:"value" validate:"required,min=1,max=250"`
}

type CreatePageParams

type CreatePageParams struct {
	Email           string         `json:"email,omitempty" validate:"omitempty,max=255"`
	MetaTitle       string         `json:"meta_title,omitempty"`
	Body            string         `json:"body,omitempty"`
	Feed            string         `json:"feed,omitempty"`
	Link            string         `json:"link,omitempty"`
	ContactFields   []ContactField `json:"contact_fields,omitempty"`
	MetaKeywords    string         `json:"meta_keywords,omitempty"`
	MetaDescription string         `json:"meta_description,omitempty"`
	SearchKeywords  string         `json:"search_keywords,omitempty"`
	URL             string         `json:"url,omitempty"`
	ChannelID       int            `json:"channel_id,omitempty"`
	Name            string         `json:"name" validate:"required,min=1,max=100"`
	IsVisible       bool           `json:"is_visible,omitempty"`
	ParentID        int            `json:"parent_id,omitempty"`
	SortOrder       int            `json:"sort_order,omitempty"`
	Type            PageType       `json:"type" validate:"required,oneof=page raw contact_form feed link blog"`
	IsHomepage      bool           `json:"is_homepage,omitempty"`
	IsCustomersOnly bool           `json:"is_customers_only,omitempty"`
}

type CreateProductImageParams

type CreateProductImageParams struct {
	ProductID    int    `json:"product_id"`
	ImageFile    string `json:"image_file,omitempty"`
	URLZoom      string `json:"url_zoom,omitempty"`
	URLStandard  string `json:"url_standard,omitempty"`
	URLThumbnail string `json:"url_thumbnail,omitempty"`
	URLTiny      string `json:"url_tiny,omitempty"`
	DateModified string `json:"date_modified,omitempty"`
	IsThumbnail  bool   `json:"is_thumbnail,omitempty"`
	SortOrder    int    `json:"sort_order,omitempty"`
	Description  string `json:"description,omitempty"`
	ImageURL     string `json:"image_url,omitempty"`
}

type CreateScriptParams

type CreateScriptParams struct {
	Name            string `json:"name" validate:"required,min=1,max=255"`
	Description     string `json:"description,omitempty"`
	HTML            string `json:"html,omitempty" validate:"max=65536"`
	Src             string `json:"src,omitempty"`
	AutoUninstall   bool   `json:"auto_uninstall,omitempty"`
	LoadMethod      string `json:"load_method,omitempty" validate:"omitempty,oneof=default async defer"`
	Location        string `json:"location,omitempty" validate:"omitempty,oneof=head footer"`
	Visibility      string `json:"visibility,omitempty" validate:"omitempty,oneof=storefront all_pages checkout order_confirmation"`
	Kind            string `json:"kind,omitempty" validate:"omitempty,oneof=src script_tag"`
	APIClientID     string `json:"api_client_id,omitempty"`
	ConsentCategory string `json:"consent_category,omitempty" validate:"omitempty,oneof=essential functional analytics targeting"`
	Enabled         bool   `json:"enabled,omitempty"`
	ChannelID       int    `json:"channel_id,omitempty"`
}

func StorefrontFooterHTMLScript

func StorefrontFooterHTMLScript(Name string, HTML string) CreateScriptParams

type CreateUpdateBannerParams

type CreateUpdateBannerParams struct {
	Name     string `json:"name" binding:"required"`
	Content  string `json:"content" binding:"required"`
	Page     string `json:"page" binding:"required"`
	Location string `json:"location" binding:"required"`
	DateType string `json:"date_type" binding:"required"`
	DateFrom string `json:"date_from,omitempty"`
	DateTo   string `json:"date_to,omitempty"`
	Visible  string `json:"visible,omitempty"`
	ItemID   string `json:"item_id,omitempty"`
}

type CreateUpdateCouponParams

type CreateUpdateCouponParams struct {
	Name               string        `json:"name"`
	Type               string        `json:"type"`
	Amount             string        `json:"amount"`
	MinPurchase        string        `json:"min_purchase,omitempty"`
	Expires            string        `json:"expires,omitempty"`
	Enabled            bool          `json:"enabled"`
	Code               string        `json:"code"`
	AppliesTo          AppliesTo     `json:"applies_to"`
	MaxUses            int           `json:"max_uses,omitempty"`
	MaxUsesPerCustomer int           `json:"max_uses_per_customer,omitempty"`
	RestrictedTo       *RestrictedTo `json:"restricted_to,omitempty"`
}

type CreateUpdateProductParams

type CreateUpdateProductParams struct {
	Name                    string                   `json:"name,omitempty" validate:"required,min=1,max=250"`
	Type                    string                   `json:"type,omitempty" validate:"required,oneof=physical digital"`
	SKU                     string                   `json:"sku,omitempty" validate:"max=255"`
	Description             string                   `json:"description,omitempty"`
	Weight                  float64                  `json:"weight,omitempty" validate:"required"`
	Width                   float64                  `json:"width,omitempty"`
	Depth                   float64                  `json:"depth,omitempty"`
	Height                  float64                  `json:"height,omitempty"`
	Price                   float64                  `json:"price,omitempty" validate:"required"`
	CostPrice               float64                  `json:"cost_price,omitempty"`
	RetailPrice             float64                  `json:"retail_price,omitempty"`
	SalePrice               float64                  `json:"sale_price,omitempty"`
	MapPrice                float64                  `json:"map_price,omitempty"`
	TaxClassID              int                      `json:"tax_class_id,omitempty"`
	ProductTaxCode          string                   `json:"product_tax_code,omitempty" validate:"max=255"`
	Categories              []int                    `json:"categories,omitempty"`
	BrandID                 int                      `json:"brand_id,omitempty"`
	InventoryLevel          int                      `json:"inventory_level,omitempty"`
	InventoryWarningLevel   int                      `json:"inventory_warning_level,omitempty"`
	InventoryTracking       string                   `json:"inventory_tracking,omitempty"`
	FixedCostShippingPrice  float64                  `json:"fixed_cost_shipping_price,omitempty"`
	IsFreeShipping          bool                     `json:"is_free_shipping,omitempty"`
	IsVisible               bool                     `json:"is_visible,omitempty"`
	IsFeatured              bool                     `json:"is_featured,omitempty"`
	RelatedProducts         []int                    `json:"related_products,omitempty"`
	Warranty                string                   `json:"warranty,omitempty"`
	BinPickingNumber        string                   `json:"bin_picking_number,omitempty"`
	LayoutFile              string                   `json:"layout_file,omitempty"`
	UPC                     string                   `json:"upc,omitempty"`
	SearchKeywords          string                   `json:"search_keywords,omitempty"`
	AvailabilityDescription string                   `json:"availability_description,omitempty"`
	Availability            string                   `json:"availability,omitempty"`
	GiftWrappingOptionsType string                   `json:"gift_wrapping_options_type,omitempty"`
	GiftWrappingOptionsList []int                    `json:"gift_wrapping_options_list,omitempty"`
	SortOrder               int                      `json:"sort_order,omitempty"`
	Condition               string                   `json:"condition,omitempty"`
	IsConditionShown        bool                     `json:"is_condition_shown,omitempty"`
	OrderQuantityMinimum    int                      `json:"order_quantity_minimum,omitempty"`
	OrderQuantityMaximum    int                      `json:"order_quantity_maximum,omitempty"`
	PageTitle               string                   `json:"page_title,omitempty"`
	MetaKeywords            []string                 `json:"meta_keywords,omitempty"`
	MetaDescription         string                   `json:"meta_description,omitempty"`
	ViewCount               int                      `json:"view_count,omitempty"`
	PreorderReleaseDate     string                   `json:"preorder_release_date,omitempty"`
	Message                 string                   `json:"preorder_message,omitempty"`
	IsPreorderOnly          bool                     `json:"is_preorder_only,omitempty"`
	IsPriceHidden           bool                     `json:"is_price_hidden,omitempty"`
	PriceHiddenLabel        string                   `json:"price_hidden_label,omitempty"`
	CustomURL               *CustomURL               `json:"custom_url,omitempty"`
	OpenGraphType           string                   `json:"open_graph_type,omitempty"`
	OpenGraphTitle          string                   `json:"open_graph_title,omitempty"`
	OpenGraphDescription    string                   `json:"open_graph_description,omitempty"`
	OpenGraphUseMetaDesc    bool                     `json:"open_graph_use_meta_description,omitempty"`
	OpenGraphUseProductName bool                     `json:"open_graph_use_product_name,omitempty"`
	OpenGraphUseImage       bool                     `json:"open_graph_use_image,omitempty"`
	BrandName               string                   `json:"brand_name,omitempty"`
	GTIN                    string                   `json:"gtin,omitempty"`
	MPN                     string                   `json:"mpn,omitempty"`
	ReviewsRatingSum        int                      `json:"reviews_rating_sum,omitempty"`
	ReviewsCount            int                      `json:"reviews_count,omitempty"`
	TotalSold               int                      `json:"total_sold,omitempty"`
	CustomFields            []ProductCustomField     `json:"custom_fields,omitempty"`
	BulkPricingRules        []ProductBulkPricingRule `json:"bulk_pricing_rules,omitempty"`
	Images                  []ProductImage           `json:"images,omitempty"`
	Videos                  []ProductVideo           `json:"videos,omitempty"`
	Variants                []ProductVariant         `json:"variants,omitempty"`
}

type CreateUpdateProductVariantOptions

type CreateUpdateProductVariantOptions struct {
	ProductID    int       `json:"product_id"`
	DisplayName  string    `json:"display_name"`
	Type         string    `json:"type"`
	Config       *Config   `json:"config"`
	OptionValues []*Option `json:"option_values"`
}

type CustomURL

type CustomURL struct {
	URL          string `json:"url,omitempty"`
	IsCustomized bool   `json:"is_customized,omitempty"`
}

type DeleteRedirectsParams

type DeleteRedirectsParams struct {
	ID     []int `url:"id:in,omitempty"`
	SiteID int   `url:"site_id,omitempty"`
}

type ErrorPayload

type ErrorPayload struct {
	Status   int    `json:"status"`
	Title    string `json:"title"`
	Type     string `json:"type"`
	Instance string `json:"instance"`
}

type FormFields

type FormFields struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type GetAllProductVideosQueryParams

type GetAllProductVideosQueryParams struct {
	IncludeFields string `url:"include_fields,omitempty"`
	ExcludeFields string `url:"exclude_fields,omitempty"`
	Page          int    `url:"page,omitempty"`
	Limit         int    `url:"limit,omitempty"`
}

type GetBannersParams

type GetBannersParams struct {
	MinID int `url:"min_id,omitempty"`
	MaxID int `url:"max_id,omitempty"`
	Page  int `url:"page,omitempty"`
	Limit int `url:"limit,omitempty"`
}

type GetPagesParams

type GetPagesParams struct {
	ChannelID int    `url:"channel_id,omitempty"`
	ID        string `url:"id,in,omitempty"`
	Name      string `url:"name,omitempty"`
	NameLike  string `url:"name:like,omitempty"`
	Limit     int    `url:"limit,omitempty"`
	Page      int    `url:"page,omitempty"`
	Include   string `url:"include,omitempty"`
}
type Links struct {
	Current string `json:"current"`
}

type MetaData

type MetaData struct {
	Pagination Pagination `json:"pagination"`
}

type Option

type Option struct {
	IsDefault bool        `json:"is_default,omitempty"`
	Label     string      `json:"label"`
	SortOrder int         `json:"sort_order"`
	ValueData OptionValue `json:"value_data"`
}

type OptionConfig

type OptionConfig struct {
	DefaultValue                string   `json:"default_value"`
	CheckedByDefault            bool     `json:"checked_by_default"`
	CheckboxLabel               string   `json:"checkbox_label"`
	DateLimited                 bool     `json:"date_limited"`
	DateLimitMode               string   `json:"date_limit_mode"`
	DateEarliestValue           string   `json:"date_earliest_value"`
	DateLatestValue             string   `json:"date_latest_value"`
	FileTypesMode               string   `json:"file_types_mode"`
	FileTypesSupported          []string `json:"file_types_supported"`
	FileTypesOther              []string `json:"file_types_other"`
	FileMaxSize                 int      `json:"file_max_size"`
	TextCharactersLimited       bool     `json:"text_characters_limited"`
	TextMinLength               int      `json:"text_min_length"`
	TextMaxLength               int      `json:"text_max_length"`
	TextLinesLimited            bool     `json:"text_lines_limited"`
	TextMaxLines                int      `json:"text_max_lines"`
	NumberLimited               bool     `json:"number_limited"`
	NumberLimitMode             string   `json:"number_limit_mode"`
	NumberLowestValue           int      `json:"number_lowest_value"`
	NumberHighestValue          int      `json:"number_highest_value"`
	NumberIntegersOnly          bool     `json:"number_integers_only"`
	ProductListAdjustsInventory bool     `json:"product_list_adjusts_inventory"`
	ProductListAdjustsPricing   bool     `json:"product_list_adjusts_pricing"`
	ProductListShippingCalc     string   `json:"product_list_shipping_calc"`
}

type OptionValue

type OptionValue struct {
	IsDefault bool        `json:"is_default"`
	Label     string      `json:"label"`
	SortOrder int         `json:"sort_order"`
	ValueData interface{} `json:"value_data"`
	ID        int         `json:"id"`
}

type Order

type Order struct {
	ID                                      int            `json:"id"`
	CustomerID                              int            `json:"customer_id"`
	DateCreated                             string         `json:"date_created"`
	DateModified                            string         `json:"date_modified"`
	DateShipped                             string         `json:"date_shipped"`
	StatusID                                int            `json:"status_id"`
	Status                                  string         `json:"status"`
	SubtotalExTax                           string         `json:"subtotal_ex_tax"`
	SubtotalIncTax                          string         `json:"subtotal_inc_tax"`
	SubtotalTax                             string         `json:"subtotal_tax"`
	BaseShippingCost                        string         `json:"base_shipping_cost"`
	ShippingCostExTax                       string         `json:"shipping_cost_ex_tax"`
	ShippingCostIncTax                      string         `json:"shipping_cost_inc_tax"`
	ShippingCostTax                         string         `json:"shipping_cost_tax"`
	ShippingCostTaxClassID                  int            `json:"shipping_cost_tax_class_id"`
	BaseHandlingCost                        string         `json:"base_handling_cost"`
	HandlingCostExTax                       string         `json:"handling_cost_ex_tax"`
	HandlingCostIncTax                      string         `json:"handling_cost_inc_tax"`
	HandlingCostTax                         string         `json:"handling_cost_tax"`
	HandlingCostTaxClassID                  int            `json:"handling_cost_tax_class_id"`
	BaseWrappingCost                        string         `json:"base_wrapping_cost"`
	WrappingCostExTax                       string         `json:"wrapping_cost_ex_tax"`
	WrappingCostIncTax                      string         `json:"wrapping_cost_inc_tax"`
	WrappingCostTax                         string         `json:"wrapping_cost_tax"`
	WrappingCostTaxClassID                  int            `json:"wrapping_cost_tax_class_id"`
	TotalExTax                              string         `json:"total_ex_tax"`
	TotalIncTax                             string         `json:"total_inc_tax"`
	TotalTax                                string         `json:"total_tax"`
	ItemsTotal                              int            `json:"items_total"`
	ItemsShipped                            int            `json:"items_shipped"`
	PaymentMethod                           string         `json:"payment_method"`
	PaymentProviderID                       string         `json:"payment_provider_id"`
	PaymentStatus                           string         `json:"payment_status"`
	RefundedAmount                          string         `json:"refunded_amount"`
	OrderIsDigital                          bool           `json:"order_is_digital"`
	StoreCreditAmount                       string         `json:"store_credit_amount"`
	GiftCertificateAmount                   string         `json:"gift_certificate_amount"`
	IPAddress                               string         `json:"ip_address"`
	IPAddressV6                             string         `json:"ip_address_v6"`
	GeoIPCountry                            string         `json:"geoip_country"`
	GeoIPCountryISO2                        string         `json:"geoip_country_iso2"`
	CurrencyID                              int            `json:"currency_id"`
	CurrencyCode                            string         `json:"currency_code"`
	CurrencyExchangeRate                    string         `json:"currency_exchange_rate"`
	DefaultCurrencyID                       int            `json:"default_currency_id"`
	DefaultCurrencyCode                     string         `json:"default_currency_code"`
	StaffNotes                              string         `json:"staff_notes"`
	CustomerMessage                         string         `json:"customer_message"`
	DiscountAmount                          string         `json:"discount_amount"`
	CouponDiscount                          string         `json:"coupon_discount"`
	ShippingAddressCount                    int            `json:"shipping_address_count"`
	IsDeleted                               bool           `json:"is_deleted"`
	EbayOrderID                             string         `json:"ebay_order_id"`
	CartID                                  string         `json:"cart_id"`
	BillingAddress                          BillingAddress `json:"billing_address"`
	IsEmailOptIn                            bool           `json:"is_email_opt_in"`
	CreditCardType                          interface{}    `json:"credit_card_type"`
	OrderSource                             string         `json:"order_source"`
	ChannelID                               int            `json:"channel_id"`
	ExternalSource                          interface{}    `json:"external_source"`
	Products                                URLResource    `json:"products"`
	ShippingAddresses                       URLResource    `json:"shipping_addresses"`
	Coupons                                 URLResource    `json:"coupons"`
	ExternalID                              interface{}    `json:"external_id"`
	ExternalMerchantID                      interface{}    `json:"external_merchant_id"`
	TaxProviderID                           string         `json:"tax_provider_id"`
	StoreDefaultCurrencyCode                string         `json:"store_default_currency_code"`
	StoreDefaultToTransactionalExchangeRate string         `json:"store_default_to_transactional_exchange_rate"`
	CustomStatus                            string         `json:"custom_status"`
	CustomerLocale                          string         `json:"customer_locale"`
	ExternalOrderID                         string         `json:"external_order_id"`
}

type OrderCoupon

type OrderCoupon struct {
	ID       int     `json:"id"`
	CouponID int     `json:"coupon_id"`
	OrderID  int     `json:"order_id"`
	Code     string  `json:"code"`
	Amount   int     `json:"amount"`
	Type     int     `json:"type"`
	Discount float64 `json:"discount"`
}

func (*OrderCoupon) TypeName

func (orderCoupon *OrderCoupon) TypeName() string

type OrderQueryParams

type OrderQueryParams struct {
	ID              int      `url:"id,omitempty"`
	IDIn            []int    `url:"id:in,omitempty"`
	IDNotIn         []int    `url:"id:not_in,omitempty"`
	IDMin           []int    `url:"id:min,omitempty"`
	IDMax           []int    `url:"id:max,omitempty"`
	IDGreater       []int    `url:"id:greater,omitempty"`
	IDLess          []int    `url:"id:less,omitempty"`
	Name            string   `url:"name,omitempty"`
	NameLike        []string `url:"name:like,omitempty"`
	ParentID        int      `url:"parent_id,omitempty"`
	ParentIDIn      []int    `url:"parent_id:in,omitempty"`
	ParentIDMin     []int    `url:"parent_id:min,omitempty"`
	ParentIDMax     []int    `url:"parent_id:max,omitempty"`
	ParentIDGreater []int    `url:"parent_id:greater,omitempty"`
	ParentIDLess    []int    `url:"parent_id:less,omitempty"`
	PageTitle       string   `url:"page_title,omitempty"`
	PageTitleLike   []string `url:"page_title:like,omitempty"`
	Keyword         string   `url:"keyword,omitempty"`
	IsVisible       bool     `url:"is_visible,omitempty"`
	Page            int      `url:"page,omitempty"`
	Limit           int      `url:"limit,omitempty"`
	IncludeFields   string   `url:"include_fields,omitempty"`
	ExcludeFields   string   `url:"exclude_fields,omitempty"`
	MinID           int      `url:"min_id,omitempty"`
	MaxID           int      `url:"max_id,omitempty"`
	MinTotal        float64  `url:"min_total,omitempty"`
	MaxTotal        float64  `url:"max_total,omitempty"`
	CustomerID      int      `url:"customer_id,omitempty"`
	Email           string   `url:"email,omitempty"`
	StatusID        int      `url:"status_id,omitempty"`
	CartID          string   `url:"cart_id,omitempty"`
	PaymentMethod   string   `url:"payment_method,omitempty"`
	MinDateCreated  string   `url:"min_date_created,omitempty"`
	MaxDateCreated  string   `url:"max_date_created,omitempty"`
	MinDateModified string   `url:"min_date_modified,omitempty"`
	MaxDateModified string   `url:"max_date_modified,omitempty"`
	Sort            string   `url:"sort,omitempty"`
	IsDeleted       bool     `url:"is_deleted,omitempty"`
	ChannelID       int      `url:"channel_id,omitempty"`
}

type Page

type Page struct {
	ID              int    `json:"id"`
	ChannelID       int    `json:"channel_id"`
	Name            string `json:"name" validate:"required,min=1,max=100"`
	IsVisible       bool   `json:"is_visible"`
	ParentID        int    `json:"parent_id"`
	SortOrder       int    `json:"sort_order"`
	Type            string `json:"type" validate:"required,oneof=page raw contact_form feed link blog"`
	IsHomepage      bool   `json:"is_homepage"`
	IsCustomersOnly bool   `json:"is_customers_only"`
	URL             string `json:"url"`
	MetaTitle       string `json:"meta_title"`
	MetaKeywords    string `json:"meta_keywords"`
	MetaDescription string `json:"meta_description"`
	SearchKeywords  string `json:"search_keywords"`
}

type PageType

type PageType string
const (
	BlogPage        PageType = "blog"
	ContactFormPage PageType = "contact_form"
	LinkPage        PageType = "link"
	UserDefinedPage PageType = "page"
	RawPage         PageType = "raw"
	RSSFeedPage     PageType = "rss_feed"
)

type Pagination

type Pagination struct {
	Total       int   `json:"total"`
	Count       int   `json:"count"`
	PerPage     int   `json:"per_page"`
	CurrentPage int   `json:"current_page"`
	TotalPages  int   `json:"total_pages"`
	Links       Links `json:"links"`
}

type Product

type Product struct {
	ID                      int       `json:"id"`
	Name                    string    `json:"name"`
	Type                    string    `json:"type"`
	SKU                     string    `json:"sku"`
	Description             string    `json:"description"`
	Weight                  float64   `json:"weight"`
	Width                   float64   `json:"width"`
	Depth                   float64   `json:"depth"`
	Height                  float64   `json:"height"`
	Price                   float64   `json:"price"`
	CostPrice               float64   `json:"cost_price"`
	RetailPrice             float64   `json:"retail_price"`
	SalePrice               float64   `json:"sale_price"`
	MapPrice                float64   `json:"map_price"`
	TaxClassID              float64   `json:"tax_class_id"`
	ProductTaxCode          string    `json:"product_tax_code"`
	CalculatedPrice         float64   `json:"calculated_price"`
	Categories              []int     `json:"categories"`
	BrandID                 int       `json:"brand_id"`
	OptionSetID             int       `json:"option_set_id"`
	OptionSetDisplay        string    `json:"option_set_display"`
	InventoryLevel          int       `json:"inventory_level"`
	InventoryWarningLevel   int       `json:"inventory_warning_level"`
	InventoryTracking       string    `json:"inventory_tracking"`
	ReviewsRatingSum        float64   `json:"reviews_rating_sum"`
	ReviewsCount            int       `json:"reviews_count"`
	TotalSold               int       `json:"total_sold"`
	FixedCostShippingPrice  float64   `json:"fixed_cost_shipping_price"`
	IsFreeShipping          bool      `json:"is_free_shipping"`
	IsVisible               bool      `json:"is_visible"`
	IsFeatured              bool      `json:"is_featured"`
	RelatedProducts         []int     `json:"related_products"`
	Warranty                string    `json:"warranty"`
	BinPickingNumber        string    `json:"bin_picking_number"`
	LayoutFile              string    `json:"layout_file"`
	UPC                     string    `json:"upc"`
	MPN                     string    `json:"mpn"`
	GTIN                    string    `json:"gtin"`
	SearchKeywords          string    `json:"search_keywords"`
	Availability            string    `json:"availability"`
	AvailabilityDescription string    `json:"availability_description"`
	GiftWrappingOptionsType string    `json:"gift_wrapping_options_type"`
	GiftWrappingOptionsList []string  `json:"gift_wrapping_options_list"`
	SortOrder               int       `json:"sort_order"`
	Condition               string    `json:"condition"`
	IsConditionShown        bool      `json:"is_condition_shown"`
	OrderQuantityMinimum    int       `json:"order_quantity_minimum"`
	OrderQuantityMaximum    int       `json:"order_quantity_maximum"`
	PageTitle               string    `json:"page_title"`
	MetaKeywords            []string  `json:"meta_keywords"`
	MetaDescription         string    `json:"meta_description"`
	DateCreated             string    `json:"date_created"`
	DateModified            string    `json:"date_modified"`
	ViewCount               int       `json:"view_count"`
	PreorderReleaseDate     string    `json:"preorder_release_date"`
	PreorderMessage         string    `json:"preorder_message"`
	IsPreorderOnly          bool      `json:"is_preorder_only"`
	IsPriceHidden           bool      `json:"is_price_hidden"`
	PriceHiddenLabel        string    `json:"price_hidden_label"`
	CustomURL               CustomURL `json:"custom_url"`
	BaseVariantID           int       `json:"base_variant_id"`
	OpenGraphType           string    `json:"open_graph_type"`
	OpenGraphTitle          string    `json:"open_graph_title"`
	OpenGraphDescription    string    `json:"open_graph_description"`
	OpenGraphUseMetaDesc    bool      `json:"open_graph_use_meta_description"`
	OpenGraphUseProductName bool      `json:"open_graph_use_product_name"`
	OpenGraphUseImage       bool      `json:"open_graph_use_image"`
}

func (*Product) AddCategory

func (p *Product) AddCategory(c int) []int

func (*Product) ContainsCategory

func (p *Product) ContainsCategory(c int) bool

func (*Product) RemoveCategory

func (p *Product) RemoveCategory(c int) []int

func (*Product) ToVariantCreateParams

func (product *Product) ToVariantCreateParams(parentProductID int) ProductVariantCreateParams

I have this idea where you select a parent product and you select some other existing products and they will be recreated as variants under the selected parent product. All products that became variants will be deleted and redirected

first port of call is the ability to convert from a product to a variant

func (*Product) ToVariantCreateParamsWithOptions

func (product *Product) ToVariantCreateParamsWithOptions(parentProductID int, options *[]VariantOption) ProductVariantCreateParams

type ProductBulkPricingRule

type ProductBulkPricingRule struct {
	ID          int    `json:"id"`
	QuantityMin int    `json:"quantity_min"`
	QuantityMax int    `json:"quantity_max"`
	Type        string `json:"type"`
	Amount      string `json:"amount"`
}

type ProductCustomField

type ProductCustomField struct {
	ID    int    `json:"id"`
	Name  string `json:"name"`
	Value string `json:"value"`
}

type ProductCustomFieldsRequestParams

type ProductCustomFieldsRequestParams struct {
	IncludeFields string `url:"include_fields,omitempty"`
	ExcludeFields string `url:"exclude_fields,omitempty"`
	Page          int    `url:"page,omitempty"`
	Limit         int    `url:"limit,omitempty"`
}

type ProductImage

type ProductImage struct {
	ImageFile    string `json:"image_file"`
	IsThumbnail  bool   `json:"is_thumbnail"`
	SortOrder    int    `json:"sort_order"`
	Description  string `json:"description"`
	ImageURL     string `json:"image_url"`
	ID           int    `json:"id"`
	ProductID    int    `json:"product_id"`
	URLZoom      string `json:"url_zoom"`
	URLStandard  string `json:"url_standard"`
	URLThumbnail string `json:"url_thumbnail"`
	URLTiny      string `json:"url_tiny"`
	DateModified string `json:"date_modified"`
}

type ProductQueryParams

type ProductQueryParams struct {
	ID                    int      `url:"id,omitempty"`
	IDIn                  []int    `url:"id:in,omitempty,comma"`
	IDNotIn               []int    `url:"id:not_in,omitempty,comma"`
	IDMin                 []int    `url:"id:min,omitempty,comma"`
	IDMax                 []int    `url:"id:max,omitempty,comma"`
	IDGreater             []int    `url:"id:greater,omitempty,comma"`
	IDLess                []int    `url:"id:less,omitempty,comma"`
	Name                  string   `url:"name,omitempty"`
	UPC                   string   `url:"upc,omitempty"`
	Price                 float64  `url:"price,omitempty"`
	Weight                float64  `url:"weight,omitempty"`
	Condition             string   `url:"condition,omitempty"`
	BrandID               int      `url:"brand_id,omitempty"`
	DateModified          string   `url:"date_modified,omitempty"`
	DateModifiedMax       string   `url:"date_modified:max,omitempty"`
	DateModifiedMin       string   `url:"date_modified:min,omitempty"`
	DateLastImported      string   `url:"date_last_imported,omitempty"`
	DateLastImportedMax   string   `url:"date_last_imported:max,omitempty"`
	DateLastImportedMin   string   `url:"date_last_imported:min,omitempty"`
	IsVisible             bool     `url:"is_visible,omitempty"`
	IsFeatured            int      `url:"is_featured,omitempty"`
	IsFreeShipping        int      `url:"is_free_shipping,omitempty"`
	InventoryLevel        int      `url:"inventory_level,omitempty"`
	InventoryLevelIn      []int    `url:"inventory_level:in,omitempty,comma"`
	InventoryLevelNotIn   []int    `url:"inventory_level:not_in,omitempty,comma"`
	InventoryLevelMin     []int    `url:"inventory_level:min,omitempty,comma"`
	InventoryLevelMax     []int    `url:"inventory_level:max,omitempty,comma"`
	InventoryLevelGreater []int    `url:"inventory_level:greater,omitempty,comma"`
	InventoryLevelLess    []int    `url:"inventory_level:less,omitempty,comma"`
	InventoryLow          int      `url:"inventory_low,omitempty"`
	OutOfStock            int      `url:"out_of_stock,omitempty"`
	TotalSold             int      `url:"total_sold,omitempty"`
	Type                  string   `url:"type,omitempty"`
	Categories            int      `url:"categories,omitempty"`
	Keyword               string   `url:"keyword,omitempty"`
	KeywordContext        string   `url:"keyword_context,omitempty"`
	Status                int      `url:"status,omitempty"`
	Include               string   `url:"include,omitempty"`
	IncludeFields         string   `url:"include_fields,omitempty"`
	ExcludeFields         string   `url:"exclude_fields,omitempty"`
	Availability          string   `url:"availability,omitempty"`
	Page                  int      `url:"page,omitempty"`
	Limit                 int      `url:"limit,omitempty"`
	Direction             string   `url:"direction,omitempty"`
	Sort                  string   `url:"sort,omitempty"`
	CategoriesIn          []int    `url:"categories:in,omitempty,comma"`
	SKU                   string   `url:"sku,omitempty"`
	SKUIn                 []string `url:"sku:in,omitempty,comma"`
}

type ProductVariant

type ProductVariant struct {
	ID                        int             `json:"id"`
	ProductID                 int             `json:"product_id"`
	SKU                       string          `json:"sku"`
	SKUID                     int             `json:"sku_id"`
	Price                     float64         `json:"price"`
	CalculatedPrice           float64         `json:"calculated_price"`
	SalePrice                 float64         `json:"sale_price"`
	RetailPrice               float64         `json:"retail_price"`
	MapPrice                  interface{}     `json:"map_price"`
	Weight                    float64         `json:"weight"`
	CalculatedWeight          float64         `json:"calculated_weight"`
	Width                     float64         `json:"width"`
	Height                    float64         `json:"height"`
	Depth                     float64         `json:"depth"`
	IsFreeShipping            bool            `json:"is_free_shipping"`
	FixedCostShippingPrice    float64         `json:"fixed_cost_shipping_price"`
	PurchasingDisabled        bool            `json:"purchasing_disabled"`
	PurchasingDisabledMessage string          `json:"purchasing_disabled_message"`
	ImageURL                  string          `json:"image_url"`
	CostPrice                 float64         `json:"cost_price"`
	UPC                       string          `json:"upc"`
	MPN                       string          `json:"mpn"`
	GTIN                      string          `json:"gtin"`
	InventoryLevel            int             `json:"inventory_level"`
	InventoryWarningLevel     int             `json:"inventory_warning_level"`
	BinPickingNumber          string          `json:"bin_picking_number"`
	OptionValues              []VariantOption `json:"option_values"`
}

type ProductVariantCreateParams

type ProductVariantCreateParams struct {
	CostPrice                 float64          `json:"cost_price"`
	Price                     float64          `json:"price"`
	SalePrice                 float64          `json:"sale_price"`
	RetailPrice               float64          `json:"retail_price"`
	Weight                    float64          `json:"weight"`
	Width                     float64          `json:"width"`
	Height                    float64          `json:"height"`
	Depth                     float64          `json:"depth"`
	IsFreeShipping            bool             `json:"is_free_shipping"`
	FixedCostShippingPrice    float64          `json:"fixed_cost_shipping_price"`
	PurchasingDisabled        bool             `json:"purchasing_disabled"`
	PurchasingDisabledMessage string           `json:"purchasing_disabled_message"`
	UPC                       string           `json:"upc"`
	InventoryLevel            int              `json:"inventory_level"`
	InventoryWarningLevel     int              `json:"inventory_warning_level"`
	BinPickingNumber          string           `json:"bin_picking_number"`
	ImageURL                  string           `json:"image_url"`
	GTIN                      string           `json:"gtin"`
	MPN                       string           `json:"mpn"`
	ProductID                 int              `json:"product_id"`
	SKU                       string           `json:"sku"`
	OptionValues              *[]VariantOption `json:"option_values"`
}

type ProductVariantOption

type ProductVariantOption struct {
	ID           int             `json:"id"`
	ProductID    int             `json:"product_id"`
	DisplayName  string          `json:"display_name"`
	Type         string          `json:"type"`
	Config       []*OptionConfig `json:"config"`
	SortOrder    int             `json:"sort_order"`
	OptionValues []*OptionValue  `json:"option_values"`
	Name         string          `json:"name"`
}

type ProductVariantQueryParams

type ProductVariantQueryParams struct {
	Page          int    `url:"page,omitempty"`
	Limit         int    `url:"limit,omitempty"`
	IncludeFields string `url:"include_fields,omitempty"`
	ExcludeFields string `url:"exclude_fields,omitempty"`
}

type ProductVideo

type ProductVideo struct {
	Title       string `json:"title"`
	Description string `json:"description"`
	SortOrder   int    `json:"sort_order"`
	Type        string `json:"type"`
	VideoID     string `json:"video_id"`
	ID          int    `json:"id"`
	ProductID   int    `json:"product_id"`
	Length      string `json:"length"`
}

type Promotion

type Promotion struct {
	ID             int    `json:"id"`
	RedemptionType string `json:"redemption_type"`
	Name           string `json:"name"`
	Channels       []struct {
		ID int `json:"id"`
	} `json:"channels"`
	Customer struct {
		GroupIDs          []int `json:"group_ids"`
		MinimumOrderCount int   `json:"minimum_order_count"`
		ExcludedGroupIDs  []int `json:"excluded_group_ids"`
	} `json:"customer"`
	Segments struct {
		IDs   []string `json:"id"`
		Rules []struct {
			Action    string `json:"action"`
			CartValue struct {
				Discount  string `json:"discount"`
				ApplyOnce bool   `json:"apply_once"`
				Stop      bool   `json:"stop"`
			} `json:"cart_value"`
			Condition struct {
				Cart struct {
					Items struct {
						Brands          []int  `json:"brands"`
						MinimumSpend    string `json:"minimum_spend"`
						MinimumQuantity int    `json:"minimum_quantity"`
					} `json:"items"`
				} `json:"cart"`
				CurrentUses int `json:"current_uses"`
				MaxUses     int `json:"max_uses"`
			} `json:"condition"`
		} `json:"rules"`
	} `json:"segments"`
	Status             string `json:"status"`
	StartDate          string `json:"start_date"`
	EndDate            string `json:"end_date"`
	Stop               bool   `json:"stop"`
	CanBeUsedWithOther bool   `json:"can_be_used_with_other_promotions"`
	CurrencyCode       string `json:"currency_code"`
	Notifications      []struct {
		Content   string   `json:"content"`
		Type      string   `json:"type"`
		Locations []string `json:"locations"`
	} `json:"notifications"`
	ShippingAddress struct {
		Countries []struct{} `json:"countries"`
	} `json:"shipping_address"`
	Schedule struct {
		WeekFrequency  int      `json:"week_frequency"`
		WeekDays       []string `json:"week_days"`
		DailyStartTime string   `json:"daily_start_time"`
		DailyEndTime   string   `json:"daily_end_time"`
	} `json:"schedule"`
	CouponOverridesAutomatic bool `json:"coupon_overrides_automatic_when_offering_higher_discounts"`
}

type PromotionUpdateParams

type PromotionUpdateParams struct {
	Name     string `json:"name,omitempty" url:"name,omitempty"`
	Channels []struct {
		ID int `json:"id,omitempty" url:"id,omitempty"`
	} `json:"channels,omitempty" url:"channels,omitempty"`

	Customer struct {
		GroupIDs          []int `json:"group_ids,omitempty" url:"group_ids,omitempty"`
		MinimumOrderCount int   `json:"minimum_order_count,omitempty" url:"minimum_order_count,omitempty"`
		ExcludedGroupIDs  []int `json:"excluded_group_ids,omitempty" url:"excluded_group_ids,omitempty"`
		Segments          struct {
			ID []string `json:"id,omitempty" url:"id,omitempty"`
		} `json:"segments,omitempty" url:"segments,omitempty"`
	} `json:"customer,omitempty" url:"customer,omitempty"`

	Rules []struct {
		Action string `json:"action,omitempty" url:"action,omitempty"`

		CartValue struct {
			Discount struct {
				FixedAmount string `json:"fixed_amount,omitempty" url:"fixed_amount,omitempty"`
			} `json:"discount,omitempty" url:"discount,omitempty"`
		} `json:"cart_value,omitempty" url:"cart_value,omitempty"`

		ApplyOnce bool `json:"apply_once,omitempty" url:"apply_once,omitempty"`
		Stop      bool `json:"stop,omitempty" url:"stop,omitempty"`

		Condition struct {
			Cart struct {
				Items struct {
					Brands []int `json:"brands,omitempty" url:"brands,omitempty"`
				} `json:"items,omitempty" url:"items,omitempty"`

				MinimumSpend    string `json:"minimum_spend,omitempty" url:"minimum_spend,omitempty"`
				MinimumQuantity int    `json:"minimum_quantity,omitempty" url:"minimum_quantity,omitempty"`
			} `json:"cart,omitempty" url:"cart,omitempty"`
		} `json:"condition,omitempty" url:"condition,omitempty"`
	} `json:"rules,omitempty" url:"rules,omitempty"`

	MaxUses                      int    `json:"max_uses,omitempty" url:"max_uses,omitempty"`
	Status                       string `json:"status,omitempty" url:"status,omitempty"`
	StartDate                    string `json:"start_date,omitempty" url:"start_date,omitempty"`
	EndDate                      string `json:"end_date,omitempty" url:"end_date,omitempty"`
	Stop                         bool   `json:"stop,omitempty" url:"stop,omitempty"`
	CanBeUsedWithOtherPromotions bool   `json:"can_be_used_with_other_promotions,omitempty" url:"can_be_used_with_other_promotions,omitempty"`
	CurrencyCode                 string `json:"currency_code,omitempty" url:"currency_code,omitempty"`

	Notifications []struct {
		Content   string   `json:"content,omitempty" url:"content,omitempty"`
		Type      string   `json:"type,omitempty" url:"type,omitempty"`
		Locations []string `json:"locations,omitempty" url:"locations,omitempty"`
	} `json:"notifications,omitempty" url:"notifications,omitempty"`

	ShippingAddress struct {
		Countries []struct {
			ISO2CountryCode string `json:"iso2_country_code,omitempty" url:"iso2_country_code,omitempty"`
		} `json:"countries,omitempty" url:"countries,omitempty"`
	} `json:"shipping_address,omitempty" url:"shipping_address,omitempty"`

	Schedule struct {
		WeekFrequency  int      `json:"week_frequency,omitempty" url:"week_frequency,omitempty"`
		WeekDays       []string `json:"week_days,omitempty" url:"week_days,omitempty"`
		DailyStartTime string   `json:"daily_start_time,omitempty" url:"daily_start_time,omitempty"`
		DailyEndTime   string   `json:"daily_end_time,omitempty" url:"daily_end_time,omitempty"`
	} `json:"schedule,omitempty" url:"schedule,omitempty"`

	CouponOverridesAutomaticWhenOfferingHigherDiscounts bool `` /* 148-byte string literal not displayed */
}

type Redirect

type Redirect struct {
	ID       int              `json:"id"`
	SiteID   int              `json:"site_id"`
	FromPath string           `json:"from_path"`
	To       RedirectToObject `json:"to"`
	ToURL    string           `json:"to_url"`
}

type RedirectQueryParams

type RedirectQueryParams struct {
	SiteID    int    `url:"site_id,omitempty"`
	IDs       []int  `url:"id,omitempty"`
	Limit     int    `url:"limit,omitempty"`
	Page      int    `url:"page,omitempty"`
	Sort      string `url:"sort,omitempty"`
	Direction string `url:"direction,omitempty"`
	Include   string `url:"include,omitempty"`
	Keyword   string `url:"keyword,omitempty"`
}

type RedirectTarget

type RedirectTarget struct {
	Type     string `json:"type"`
	EntityID int    `json:"entity_id"`
	URL      string `json:"url"`
}

type RedirectToObject

type RedirectToObject struct {
	Type     string `json:"type"`
	EntityID int    `json:"entity_id"`
	URL      string `json:"url"`
}

type RedirectUpsert

type RedirectUpsert struct {
	FromPath string         `json:"from_path"`
	SiteID   int            `json:"site_id"`
	To       RedirectTarget `json:"to"`
}

type RestrictedTo

type RestrictedTo struct {
	ShippingMethods []string `json:"shipping_methods,omitempty"`
}

type Script

type Script struct {
	Name            string `json:"name"`
	UUID            string `json:"uuid"`
	DateCreated     string `json:"date_created"`
	DateModified    string `json:"date_modified"`
	Description     string `json:"description"`
	HTML            string `json:"html"`
	Src             string `json:"src"`
	AutoUninstall   bool   `json:"auto_uninstall"`
	LoadMethod      string `json:"load_method"`
	Location        string `json:"location"`
	Visibility      string `json:"visibility"`
	Kind            string `json:"kind"`
	APIClientID     string `json:"api_client_id"`
	ConsentCategory string `json:"consent_category"`
	Enabled         bool   `json:"enabled"`
	ChannelID       int    `json:"channel_id"`
}

type ScriptsQuery

type ScriptsQuery struct {
	Page       int      `json:"page,omitempty"`
	Limit      int      `json:"limit,omitempty"`
	Sort       string   `json:"sort,omitempty"`
	Direction  string   `json:"direction,omitempty"`
	ChannelIDs []string `json:"channel_id,omitempty"`
}

type URLResource

type URLResource struct {
	URL      string `json:"url"`
	Resource string `json:"resource"`
}

type UpdateCustomFieldParams

type UpdateCustomFieldParams struct {
	ID    int    `json:"id"`
	Name  string `json:"name" validate:"required,min=1,max=250"`
	Value string `json:"value" validate:"required,min=1,max=250"`
}

type UpdatePageParams

type UpdatePageParams struct {
	Name            string         `json:"name,omitempty"`
	IsVisible       bool           `json:"is_visible,omitempty"`
	ParentID        int            `json:"parent_id,omitempty"`
	SortOrder       int            `json:"sort_order,omitempty"`
	Type            PageType       `json:"type,omitempty"`
	IsHomepage      bool           `json:"is_homepage,omitempty"`
	IsCustomersOnly bool           `json:"is_customers_only,omitempty"`
	ID              int            `json:"id,omitempty"`
	Email           string         `json:"email,omitempty"`
	MetaTitle       string         `json:"meta_title,omitempty"`
	Body            string         `json:"body,omitempty"`
	Feed            string         `json:"feed,omitempty"`
	Link            string         `json:"link,omitempty"`
	ContactFields   []ContactField `json:"contact_fields,omitempty"`
	MetaKeywords    string         `json:"meta_keywords,omitempty"`
	MetaDescription string         `json:"meta_description,omitempty"`
	SearchKeywords  string         `json:"search_keywords,omitempty"`
	URL             string         `json:"url,omitempty"`
	ChannelID       int            `json:"channel_id,omitempty"`
}

type UpdateProductImageParams

type UpdateProductImageParams struct {
	ProductID    int    `json:"product_id,omitempty"`
	URLZoom      string `json:"url_zoom,omitempty"`
	URLStandard  string `json:"url_standard,omitempty"`
	URLThumbnail string `json:"url_thumbnail,omitempty"`
	URLTiny      string `json:"url_tiny,omitempty"`
	ImageFile    string `json:"image_file,omitempty"`
	IsThumbnail  bool   `json:"is_thumbnail,omitempty"`
	SortOrder    int    `json:"sort_order,omitempty"`
	Description  string `json:"description,omitempty"`
	ImageURL     string `json:"image_url,omitempty"`
}

type UpdateScriptParams

type UpdateScriptParams struct {
	Name            string `json:"name,omitempty"`
	Description     string `json:"description,omitempty"`
	HTML            string `json:"html,omitempty"`
	Src             string `json:"src,omitempty"`
	AutoUninstall   bool   `json:"auto_uninstall,omitempty"`
	LoadMethod      string `json:"load_method,omitempty"`
	Location        string `json:"location,omitempty"`
	Visibility      string `json:"visibility,omitempty"`
	Kind            string `json:"kind,omitempty"`
	APIClientID     string `json:"api_client_id,omitempty"`
	ConsentCategory string `json:"consent_category,omitempty"`
	Enabled         bool   `json:"enabled,omitempty"`
	ChannelID       int    `json:"channel_id,omitempty"`
}

type ValidationErrors

type ValidationErrors []string

func (ValidationErrors) Error

func (ve ValidationErrors) Error() string

type VariantOption

type VariantOption struct {
	ID                int    `json:"id"`
	Label             string `json:"label"`
	OptionID          int    `json:"option_id"`
	OptionDisplayName string `json:"option_display_name"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL