// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.

package generated

import (
	"fmt"
	"io"
	"strconv"
)

type AppPricingDetails interface {
	IsAppPricingDetails()
}

type AppPurchase interface {
	IsAppPurchase()
	GetCreatedAt() string
	GetName() string
	GetPrice() *MoneyV2
	GetStatus() AppPurchaseStatus
	GetTest() bool
}

type AppSubscriptionDiscountValue interface {
	IsAppSubscriptionDiscountValue()
}

type CommentEventEmbed interface {
	IsCommentEventEmbed()
}

type CommentEventSubject interface {
	IsCommentEventSubject()
	GetID() string
	GetHasTimelineComment() bool
}

type CustomerMoment interface {
	IsCustomerMoment()
	GetOccurredAt() string
}

type CustomerPaymentInstrument interface {
	IsCustomerPaymentInstrument()
}

type DeliveryConditionCriteria interface {
	IsDeliveryConditionCriteria()
}

type DeliveryRateProvider interface {
	IsDeliveryRateProvider()
}

type DiscountApplication interface {
	IsDiscountApplication()
	GetAllocationMethod() DiscountApplicationAllocationMethod
	GetIndex() int
	GetTargetSelection() DiscountApplicationTargetSelection
	GetTargetType() DiscountApplicationTargetType
	GetValue() PricingValue
}

type DisplayableError interface {
	IsDisplayableError()
	GetField() []string
	GetMessage() string
}

type Event interface {
	IsEvent()
	GetAppTitle() *string
	GetAttributeToApp() bool
	GetAttributeToUser() bool
	GetCreatedAt() string
	GetCriticalAlert() bool
	GetID() string
	GetMessage() string
}

type File interface {
	IsFile()
	GetAlt() *string
	GetCreatedAt() string
	GetFileErrors() []*FileError
	GetFileStatus() FileStatus
	GetPreview() *MediaPreviewImage
}

type HasEvents interface {
	IsHasEvents()
	GetEvents() *EventConnection
}

type HasLocalizationExtensions interface {
	IsHasLocalizationExtensions()
	GetLocalizationExtensions() *LocalizationExtensionConnection
}

type HasMetafieldDefinitions interface {
	IsHasMetafieldDefinitions()
	GetMetafieldDefinitions() *MetafieldDefinitionConnection
}

type HasMetafields interface {
	IsHasMetafields()
	GetMetafield() *Metafield
	GetMetafields() *MetafieldConnection
	GetPrivateMetafield() *PrivateMetafield
	GetPrivateMetafields() *PrivateMetafieldConnection
}

type HasPublishedTranslations interface {
	IsHasPublishedTranslations()
	GetTranslations() []*PublishedTranslation
}

type LegacyInteroperability interface {
	IsLegacyInteroperability()
	GetLegacyResourceID() string
}

type MarketRegion interface {
	IsMarketRegion()
	GetID() string
	GetName() string
}

type Media interface {
	IsMedia()
	GetAlt() *string
	GetMediaContentType() MediaContentType
	GetMediaErrors() []*MediaError
	GetMediaWarnings() []*MediaWarning
	GetPreview() *MediaPreviewImage
	GetStatus() MediaStatus
}

type MetafieldReference interface {
	IsMetafieldReference()
}

type Navigable interface {
	IsNavigable()
	GetDefaultCursor() string
}

type Node interface {
	IsNode()
	GetID() string
}

type OnlineStorePreviewable interface {
	IsOnlineStorePreviewable()
	GetOnlineStorePreviewURL() *string
}

type PaymentInstrument interface {
	IsPaymentInstrument()
}

type PricingValue interface {
	IsPricingValue()
}

type Publishable interface {
	IsPublishable()
	GetAvailablePublicationCount() int
	GetPublicationCount() int
	GetPublishedOnCurrentPublication() bool
	GetPublishedOnPublication() bool
	GetResourcePublications() *ResourcePublicationConnection
	GetResourcePublicationsV2() *ResourcePublicationV2Connection
	GetUnpublishedPublications() *PublicationConnection
}

type PurchasingEntity interface {
	IsPurchasingEntity()
}

type Sale interface {
	IsSale()
	GetActionType() SaleActionType
	GetID() string
	GetLineType() SaleLineType
	GetQuantity() *int
	GetTaxes() []*SaleTax
	GetTotalAmount() *MoneyBag
	GetTotalDiscountAmountAfterTaxes() *MoneyBag
	GetTotalDiscountAmountBeforeTaxes() *MoneyBag
	GetTotalTaxAmount() *MoneyBag
}

type SalesAgreement interface {
	IsSalesAgreement()
	GetApp() *App
	GetHappenedAt() string
	GetID() string
	GetReason() OrderActionType
	GetSales() *SaleConnection
	GetUser() *StaffMember
}

type SellingPlanBillingPolicy interface {
	IsSellingPlanBillingPolicy()
}

type SellingPlanCheckoutChargeValue interface {
	IsSellingPlanCheckoutChargeValue()
}

type SellingPlanDeliveryPolicy interface {
	IsSellingPlanDeliveryPolicy()
}

type SellingPlanPricingPolicy interface {
	IsSellingPlanPricingPolicy()
}

type SellingPlanPricingPolicyAdjustmentValue interface {
	IsSellingPlanPricingPolicyAdjustmentValue()
}

type SellingPlanPricingPolicyBase interface {
	IsSellingPlanPricingPolicyBase()
	GetAdjustmentType() SellingPlanPricingPolicyAdjustmentType
	GetAdjustmentValue() SellingPlanPricingPolicyAdjustmentValue
}

type SubscriptionContractBase interface {
	IsSubscriptionContractBase()
	GetApp() *App
	GetAppAdminURL() *string
	GetCurrencyCode() CurrencyCode
	GetCustomAttributes() []*Attribute
	GetCustomer() *Customer
	GetCustomerPaymentMethod() *CustomerPaymentMethod
	GetDeliveryMethod() SubscriptionDeliveryMethod
	GetDeliveryPrice() *MoneyV2
	GetDiscounts() *SubscriptionManualDiscountConnection
	GetLineCount() int
	GetLines() *SubscriptionLineConnection
	GetNote() *string
	GetOrders() *OrderConnection
	GetUpdatedAt() string
}

type SubscriptionDeliveryMethod interface {
	IsSubscriptionDeliveryMethod()
}

type SubscriptionDiscount interface {
	IsSubscriptionDiscount()
}

type SubscriptionDiscountValue interface {
	IsSubscriptionDiscountValue()
}

type AccessScope struct {
	Description string `json:"description"`
	Handle      string `json:"handle"`
}

type App struct {
	ID string `json:"id"`
}

func (App) IsEntity() {}

type AppConnection struct {
	Edges    []*AppEdge `json:"edges"`
	Nodes    []*App     `json:"nodes"`
	PageInfo *PageInfo  `json:"pageInfo"`
}

type AppCredit struct {
	Amount      *MoneyV2 `json:"amount"`
	CreatedAt   string   `json:"createdAt"`
	Description string   `json:"description"`
	ID          string   `json:"id"`
	Test        bool     `json:"test"`
}

func (AppCredit) IsNode()            {}
func (this AppCredit) GetID() string { return this.ID }

type AppCreditConnection struct {
	Edges    []*AppCreditEdge `json:"edges"`
	Nodes    []*AppCredit     `json:"nodes"`
	PageInfo *PageInfo        `json:"pageInfo"`
}

type AppCreditEdge struct {
	Cursor string     `json:"cursor"`
	Node   *AppCredit `json:"node"`
}

type AppEdge struct {
	Cursor string `json:"cursor"`
	Node   *App   `json:"node"`
}

type AppFeedback struct {
	App      *App         `json:"app"`
	Link     *Link        `json:"link"`
	Messages []*UserError `json:"messages"`
}

type AppInstallation struct {
	AccessScopes              []*AccessScope                         `json:"accessScopes"`
	ActiveSubscriptions       []*AppSubscription                     `json:"activeSubscriptions"`
	AllSubscriptions          *AppSubscriptionConnection             `json:"allSubscriptions"`
	App                       *App                                   `json:"app"`
	Credits                   *AppCreditConnection                   `json:"credits"`
	ID                        string                                 `json:"id"`
	LaunchURL                 string                                 `json:"launchUrl"`
	Metafield                 *Metafield                             `json:"metafield"`
	Metafields                *MetafieldConnection                   `json:"metafields"`
	OneTimePurchases          *AppPurchaseOneTimeConnection          `json:"oneTimePurchases"`
	PrivateMetafield          *PrivateMetafield                      `json:"privateMetafield"`
	PrivateMetafields         *PrivateMetafieldConnection            `json:"privateMetafields"`
	Publication               *Publication                           `json:"publication"`
	RevenueAttributionRecords *AppRevenueAttributionRecordConnection `json:"revenueAttributionRecords"`
	UninstallURL              *string                                `json:"uninstallUrl"`
}

func (AppInstallation) IsHasMetafields()                            {}
func (this AppInstallation) GetMetafield() *Metafield               { return this.Metafield }
func (this AppInstallation) GetMetafields() *MetafieldConnection    { return this.Metafields }
func (this AppInstallation) GetPrivateMetafield() *PrivateMetafield { return this.PrivateMetafield }
func (this AppInstallation) GetPrivateMetafields() *PrivateMetafieldConnection {
	return this.PrivateMetafields
}

func (AppInstallation) IsNode()            {}
func (this AppInstallation) GetID() string { return this.ID }

type AppPlanV2 struct {
	PricingDetails AppPricingDetails `json:"pricingDetails"`
}

type AppPurchaseOneTime struct {
	CreatedAt string            `json:"createdAt"`
	ID        string            `json:"id"`
	Name      string            `json:"name"`
	Price     *MoneyV2          `json:"price"`
	Status    AppPurchaseStatus `json:"status"`
	Test      bool              `json:"test"`
}

func (AppPurchaseOneTime) IsAppPurchase()                    {}
func (this AppPurchaseOneTime) GetCreatedAt() string         { return this.CreatedAt }
func (this AppPurchaseOneTime) GetName() string              { return this.Name }
func (this AppPurchaseOneTime) GetPrice() *MoneyV2           { return this.Price }
func (this AppPurchaseOneTime) GetStatus() AppPurchaseStatus { return this.Status }
func (this AppPurchaseOneTime) GetTest() bool                { return this.Test }

func (AppPurchaseOneTime) IsNode()            {}
func (this AppPurchaseOneTime) GetID() string { return this.ID }

type AppPurchaseOneTimeConnection struct {
	Edges    []*AppPurchaseOneTimeEdge `json:"edges"`
	Nodes    []*AppPurchaseOneTime     `json:"nodes"`
	PageInfo *PageInfo                 `json:"pageInfo"`
}

type AppPurchaseOneTimeEdge struct {
	Cursor string              `json:"cursor"`
	Node   *AppPurchaseOneTime `json:"node"`
}

type AppRecurringPricing struct {
	Discount *AppSubscriptionDiscount `json:"discount"`
	Interval AppPricingInterval       `json:"interval"`
	Price    *MoneyV2                 `json:"price"`
}

func (AppRecurringPricing) IsAppPricingDetails() {}

type AppRevenueAttributionRecord struct {
	Amount         *MoneyV2                  `json:"amount"`
	CapturedAt     string                    `json:"capturedAt"`
	CreatedAt      string                    `json:"createdAt"`
	ID             string                    `json:"id"`
	IdempotencyKey string                    `json:"idempotencyKey"`
	Test           bool                      `json:"test"`
	Type           AppRevenueAttributionType `json:"type"`
}

func (AppRevenueAttributionRecord) IsNode()            {}
func (this AppRevenueAttributionRecord) GetID() string { return this.ID }

type AppRevenueAttributionRecordConnection struct {
	Edges    []*AppRevenueAttributionRecordEdge `json:"edges"`
	Nodes    []*AppRevenueAttributionRecord     `json:"nodes"`
	PageInfo *PageInfo                          `json:"pageInfo"`
}

type AppRevenueAttributionRecordEdge struct {
	Cursor string                       `json:"cursor"`
	Node   *AppRevenueAttributionRecord `json:"node"`
}

type AppSubscription struct {
	CreatedAt        string                     `json:"createdAt"`
	CurrentPeriodEnd *string                    `json:"currentPeriodEnd"`
	ID               string                     `json:"id"`
	LineItems        []*AppSubscriptionLineItem `json:"lineItems"`
	Name             string                     `json:"name"`
	ReturnURL        string                     `json:"returnUrl"`
	Status           AppSubscriptionStatus      `json:"status"`
	Test             bool                       `json:"test"`
	TrialDays        int                        `json:"trialDays"`
}

func (AppSubscription) IsNode()            {}
func (this AppSubscription) GetID() string { return this.ID }

type AppSubscriptionConnection struct {
	Edges    []*AppSubscriptionEdge `json:"edges"`
	Nodes    []*AppSubscription     `json:"nodes"`
	PageInfo *PageInfo              `json:"pageInfo"`
}

type AppSubscriptionDiscount struct {
	DurationLimitInIntervals     *int                         `json:"durationLimitInIntervals"`
	PriceAfterDiscount           *MoneyV2                     `json:"priceAfterDiscount"`
	RemainingDurationInIntervals *int                         `json:"remainingDurationInIntervals"`
	Value                        AppSubscriptionDiscountValue `json:"value"`
}

type AppSubscriptionDiscountAmount struct {
	Amount *MoneyV2 `json:"amount"`
}

func (AppSubscriptionDiscountAmount) IsAppSubscriptionDiscountValue() {}

type AppSubscriptionDiscountPercentage struct {
	Percentage float64 `json:"percentage"`
}

func (AppSubscriptionDiscountPercentage) IsAppSubscriptionDiscountValue() {}

type AppSubscriptionEdge struct {
	Cursor string           `json:"cursor"`
	Node   *AppSubscription `json:"node"`
}

type AppSubscriptionLineItem struct {
	ID           string                    `json:"id"`
	Plan         *AppPlanV2                `json:"plan"`
	UsageRecords *AppUsageRecordConnection `json:"usageRecords"`
}

type AppUsagePricing struct {
	BalanceUsed  *MoneyV2           `json:"balanceUsed"`
	CappedAmount *MoneyV2           `json:"cappedAmount"`
	Interval     AppPricingInterval `json:"interval"`
	Terms        string             `json:"terms"`
}

func (AppUsagePricing) IsAppPricingDetails() {}

type AppUsageRecord struct {
	CreatedAt            string                   `json:"createdAt"`
	Description          string                   `json:"description"`
	ID                   string                   `json:"id"`
	Price                *MoneyV2                 `json:"price"`
	SubscriptionLineItem *AppSubscriptionLineItem `json:"subscriptionLineItem"`
}

func (AppUsageRecord) IsNode()            {}
func (this AppUsageRecord) GetID() string { return this.ID }

type AppUsageRecordConnection struct {
	Edges    []*AppUsageRecordEdge `json:"edges"`
	Nodes    []*AppUsageRecord     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type AppUsageRecordEdge struct {
	Cursor string          `json:"cursor"`
	Node   *AppUsageRecord `json:"node"`
}

type Attribute struct {
	Key   string  `json:"key"`
	Value *string `json:"value"`
}

type AutomaticDiscountApplication struct {
	AllocationMethod DiscountApplicationAllocationMethod `json:"allocationMethod"`
	Index            int                                 `json:"index"`
	TargetSelection  DiscountApplicationTargetSelection  `json:"targetSelection"`
	TargetType       DiscountApplicationTargetType       `json:"targetType"`
	Title            string                              `json:"title"`
	Value            PricingValue                        `json:"value"`
}

func (AutomaticDiscountApplication) IsDiscountApplication() {}
func (this AutomaticDiscountApplication) GetAllocationMethod() DiscountApplicationAllocationMethod {
	return this.AllocationMethod
}
func (this AutomaticDiscountApplication) GetIndex() int { return this.Index }
func (this AutomaticDiscountApplication) GetTargetSelection() DiscountApplicationTargetSelection {
	return this.TargetSelection
}
func (this AutomaticDiscountApplication) GetTargetType() DiscountApplicationTargetType {
	return this.TargetType
}
func (this AutomaticDiscountApplication) GetValue() PricingValue { return this.Value }

type AvailableChannelDefinitionsByChannel struct {
	ChannelDefinitions []*ChannelDefinition `json:"channelDefinitions"`
	ChannelName        string               `json:"channelName"`
}

type BasicEvent struct {
	AppTitle        *string `json:"appTitle"`
	AttributeToApp  bool    `json:"attributeToApp"`
	AttributeToUser bool    `json:"attributeToUser"`
	CreatedAt       string  `json:"createdAt"`
	CriticalAlert   bool    `json:"criticalAlert"`
	ID              string  `json:"id"`
	Message         string  `json:"message"`
}

func (BasicEvent) IsEvent()                      {}
func (this BasicEvent) GetAppTitle() *string     { return this.AppTitle }
func (this BasicEvent) GetAttributeToApp() bool  { return this.AttributeToApp }
func (this BasicEvent) GetAttributeToUser() bool { return this.AttributeToUser }
func (this BasicEvent) GetCreatedAt() string     { return this.CreatedAt }
func (this BasicEvent) GetCriticalAlert() bool   { return this.CriticalAlert }
func (this BasicEvent) GetID() string            { return this.ID }
func (this BasicEvent) GetMessage() string       { return this.Message }

func (BasicEvent) IsNode() {}

type BuyerExperienceConfiguration struct {
	CheckoutToDraft      bool                  `json:"checkoutToDraft"`
	PayNowOnly           bool                  `json:"payNowOnly"`
	PaymentTermsTemplate *PaymentTermsTemplate `json:"paymentTermsTemplate"`
}

type ChannelDefinition struct {
	ChannelName    string  `json:"channelName"`
	Handle         string  `json:"handle"`
	ID             string  `json:"id"`
	SubChannelName string  `json:"subChannelName"`
	SVGIcon        *string `json:"svgIcon"`
}

func (ChannelDefinition) IsNode()            {}
func (this ChannelDefinition) GetID() string { return this.ID }

type ChannelInformation struct {
	App               *App               `json:"app"`
	ChannelDefinition *ChannelDefinition `json:"channelDefinition"`
	ChannelID         string             `json:"channelId"`
	ID                string             `json:"id"`
}

func (ChannelInformation) IsNode()            {}
func (this ChannelInformation) GetID() string { return this.ID }

type Collection struct {
	ID string `json:"id"`
}

func (Collection) IsMetafieldReference() {}

func (Collection) IsEntity() {}

type CollectionConnection struct {
	Edges    []*CollectionEdge `json:"edges"`
	Nodes    []*Collection     `json:"nodes"`
	PageInfo *PageInfo         `json:"pageInfo"`
}

type CollectionEdge struct {
	Cursor string      `json:"cursor"`
	Node   *Collection `json:"node"`
}

type CollectionRule struct {
	AppliedDisjunctively bool              `json:"appliedDisjunctively"`
	Rules                []*CollectionRule `json:"rules"`
}

type CollectionRuleSet struct {
	AppliedDisjunctively bool              `json:"appliedDisjunctively"`
	Rules                []*CollectionRule `json:"rules"`
}

type CommentEvent struct {
	AppTitle        *string                   `json:"appTitle"`
	Attachments     []*CommentEventAttachment `json:"attachments"`
	AttributeToApp  bool                      `json:"attributeToApp"`
	AttributeToUser bool                      `json:"attributeToUser"`
	Author          *StaffMember              `json:"author"`
	CanDelete       bool                      `json:"canDelete"`
	CanEdit         bool                      `json:"canEdit"`
	CreatedAt       string                    `json:"createdAt"`
	CriticalAlert   bool                      `json:"criticalAlert"`
	Edited          bool                      `json:"edited"`
	Embed           CommentEventEmbed         `json:"embed"`
	ID              string                    `json:"id"`
	Message         string                    `json:"message"`
	RawMessage      string                    `json:"rawMessage"`
	Subject         CommentEventSubject       `json:"subject"`
}

func (CommentEvent) IsEvent()                      {}
func (this CommentEvent) GetAppTitle() *string     { return this.AppTitle }
func (this CommentEvent) GetAttributeToApp() bool  { return this.AttributeToApp }
func (this CommentEvent) GetAttributeToUser() bool { return this.AttributeToUser }
func (this CommentEvent) GetCreatedAt() string     { return this.CreatedAt }
func (this CommentEvent) GetCriticalAlert() bool   { return this.CriticalAlert }
func (this CommentEvent) GetID() string            { return this.ID }
func (this CommentEvent) GetMessage() string       { return this.Message }

func (CommentEvent) IsNode() {}

type CommentEventAttachment struct {
	FileExtension *string `json:"fileExtension"`
	ID            string  `json:"id"`
	Image         *Image  `json:"image"`
	Name          string  `json:"name"`
	Size          int     `json:"size"`
	URL           string  `json:"url"`
}

type Company struct {
	ContactCount       int                           `json:"contactCount"`
	ContactRoles       *CompanyContactRoleConnection `json:"contactRoles"`
	Contacts           *CompanyContactConnection     `json:"contacts"`
	CreatedAt          string                        `json:"createdAt"`
	CustomerSince      string                        `json:"customerSince"`
	DefaultCursor      string                        `json:"defaultCursor"`
	DefaultRole        *CompanyContactRole           `json:"defaultRole"`
	DraftOrders        *DraftOrderConnection         `json:"draftOrders"`
	Events             *EventConnection              `json:"events"`
	ExternalID         *string                       `json:"externalId"`
	HasTimelineComment bool                          `json:"hasTimelineComment"`
	ID                 string                        `json:"id"`
	LifetimeDuration   string                        `json:"lifetimeDuration"`
	LocationCount      int                           `json:"locationCount"`
	Locations          *CompanyLocationConnection    `json:"locations"`
	MainContact        *CompanyContact               `json:"mainContact"`
	Name               string                        `json:"name"`
	Note               *string                       `json:"note"`
	OrderCount         int                           `json:"orderCount"`
	Orders             *OrderConnection              `json:"orders"`
	TotalSpent         *MoneyV2                      `json:"totalSpent"`
	UpdatedAt          string                        `json:"updatedAt"`
}

func (Company) IsCommentEventSubject()           {}
func (this Company) GetID() string               { return this.ID }
func (this Company) GetHasTimelineComment() bool { return this.HasTimelineComment }

func (Company) IsHasEvents()                     {}
func (this Company) GetEvents() *EventConnection { return this.Events }

func (Company) IsNavigable()                  {}
func (this Company) GetDefaultCursor() string { return this.DefaultCursor }

func (Company) IsNode() {}

type CompanyAddress struct {
	Address1      string      `json:"address1"`
	Address2      *string     `json:"address2"`
	City          *string     `json:"city"`
	CompanyName   string      `json:"companyName"`
	Country       *string     `json:"country"`
	CountryCode   CountryCode `json:"countryCode"`
	CreatedAt     string      `json:"createdAt"`
	FormattedArea *string     `json:"formattedArea"`
	ID            string      `json:"id"`
	Phone         *string     `json:"phone"`
	Province      *string     `json:"province"`
	Recipient     *string     `json:"recipient"`
	UpdatedAt     string      `json:"updatedAt"`
	Zip           *string     `json:"zip"`
	ZoneCode      *string     `json:"zoneCode"`
}

func (CompanyAddress) IsNode()            {}
func (this CompanyAddress) GetID() string { return this.ID }

type CompanyContact struct {
	Company          *Company                                `json:"company"`
	CreatedAt        string                                  `json:"createdAt"`
	Customer         *Customer                               `json:"customer"`
	DraftOrders      *DraftOrderConnection                   `json:"draftOrders"`
	ID               string                                  `json:"id"`
	IsMainContact    bool                                    `json:"isMainContact"`
	LifetimeDuration string                                  `json:"lifetimeDuration"`
	Locale           *string                                 `json:"locale"`
	Orders           *OrderConnection                        `json:"orders"`
	RoleAssignments  *CompanyContactRoleAssignmentConnection `json:"roleAssignments"`
	Title            *string                                 `json:"title"`
	UpdatedAt        string                                  `json:"updatedAt"`
}

func (CompanyContact) IsNode()            {}
func (this CompanyContact) GetID() string { return this.ID }

type CompanyContactConnection struct {
	Edges    []*CompanyContactEdge `json:"edges"`
	Nodes    []*CompanyContact     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type CompanyContactEdge struct {
	Cursor string          `json:"cursor"`
	Node   *CompanyContact `json:"node"`
}

type CompanyContactRole struct {
	ID   string  `json:"id"`
	Name string  `json:"name"`
	Note *string `json:"note"`
}

func (CompanyContactRole) IsNode()            {}
func (this CompanyContactRole) GetID() string { return this.ID }

type CompanyContactRoleAssignment struct {
	Company         *Company            `json:"company"`
	CompanyContact  *CompanyContact     `json:"companyContact"`
	CompanyLocation *CompanyLocation    `json:"companyLocation"`
	CreatedAt       string              `json:"createdAt"`
	ID              string              `json:"id"`
	Role            *CompanyContactRole `json:"role"`
	UpdatedAt       string              `json:"updatedAt"`
}

func (CompanyContactRoleAssignment) IsNode()            {}
func (this CompanyContactRoleAssignment) GetID() string { return this.ID }

type CompanyContactRoleAssignmentConnection struct {
	Edges    []*CompanyContactRoleAssignmentEdge `json:"edges"`
	Nodes    []*CompanyContactRoleAssignment     `json:"nodes"`
	PageInfo *PageInfo                           `json:"pageInfo"`
}

type CompanyContactRoleAssignmentEdge struct {
	Cursor string                        `json:"cursor"`
	Node   *CompanyContactRoleAssignment `json:"node"`
}

type CompanyContactRoleConnection struct {
	Edges    []*CompanyContactRoleEdge `json:"edges"`
	Nodes    []*CompanyContactRole     `json:"nodes"`
	PageInfo *PageInfo                 `json:"pageInfo"`
}

type CompanyContactRoleEdge struct {
	Cursor string              `json:"cursor"`
	Node   *CompanyContactRole `json:"node"`
}

type CompanyLocation struct {
	BillingAddress               *CompanyAddress                         `json:"billingAddress"`
	BuyerExperienceConfiguration *BuyerExperienceConfiguration           `json:"buyerExperienceConfiguration"`
	Company                      *Company                                `json:"company"`
	CreatedAt                    string                                  `json:"createdAt"`
	Currency                     CurrencyCode                            `json:"currency"`
	DefaultCursor                string                                  `json:"defaultCursor"`
	DraftOrders                  *DraftOrderConnection                   `json:"draftOrders"`
	Events                       *EventConnection                        `json:"events"`
	ExternalID                   *string                                 `json:"externalId"`
	HasTimelineComment           bool                                    `json:"hasTimelineComment"`
	ID                           string                                  `json:"id"`
	Locale                       *string                                 `json:"locale"`
	Market                       *Market                                 `json:"market"`
	Name                         string                                  `json:"name"`
	Note                         *string                                 `json:"note"`
	OrderCount                   int                                     `json:"orderCount"`
	Orders                       *OrderConnection                        `json:"orders"`
	Phone                        *string                                 `json:"phone"`
	RoleAssignments              *CompanyContactRoleAssignmentConnection `json:"roleAssignments"`
	ShippingAddress              *CompanyAddress                         `json:"shippingAddress"`
	TaxExemptions                []TaxExemption                          `json:"taxExemptions"`
	TaxRegistrationID            *string                                 `json:"taxRegistrationId"`
	TotalSpent                   *MoneyV2                                `json:"totalSpent"`
	UpdatedAt                    string                                  `json:"updatedAt"`
}

func (CompanyLocation) IsCommentEventSubject()           {}
func (this CompanyLocation) GetID() string               { return this.ID }
func (this CompanyLocation) GetHasTimelineComment() bool { return this.HasTimelineComment }

func (CompanyLocation) IsHasEvents()                     {}
func (this CompanyLocation) GetEvents() *EventConnection { return this.Events }

func (CompanyLocation) IsNavigable()                  {}
func (this CompanyLocation) GetDefaultCursor() string { return this.DefaultCursor }

func (CompanyLocation) IsNode() {}

type CompanyLocationConnection struct {
	Edges    []*CompanyLocationEdge `json:"edges"`
	Nodes    []*CompanyLocation     `json:"nodes"`
	PageInfo *PageInfo              `json:"pageInfo"`
}

type CompanyLocationEdge struct {
	Cursor string           `json:"cursor"`
	Node   *CompanyLocation `json:"node"`
}

type ContextualPricingContext struct {
	Country           *CountryCode `json:"country"`
	CompanyLocationID *string      `json:"companyLocationId"`
}

type CountriesInShippingZones struct {
	CountryCodes       []CountryCode `json:"countryCodes"`
	IncludeRestOfWorld bool          `json:"includeRestOfWorld"`
}

type CountryHarmonizedSystemCode struct {
	CountryCode          CountryCode `json:"countryCode"`
	HarmonizedSystemCode string      `json:"harmonizedSystemCode"`
}

type CountryHarmonizedSystemCodeConnection struct {
	Edges    []*CountryHarmonizedSystemCodeEdge `json:"edges"`
	Nodes    []*CountryHarmonizedSystemCode     `json:"nodes"`
	PageInfo *PageInfo                          `json:"pageInfo"`
}

type CountryHarmonizedSystemCodeEdge struct {
	Cursor string                       `json:"cursor"`
	Node   *CountryHarmonizedSystemCode `json:"node"`
}

type CurrencyFormats struct {
	MoneyFormat                     string `json:"moneyFormat"`
	MoneyInEmailsFormat             string `json:"moneyInEmailsFormat"`
	MoneyWithCurrencyFormat         string `json:"moneyWithCurrencyFormat"`
	MoneyWithCurrencyInEmailsFormat string `json:"moneyWithCurrencyInEmailsFormat"`
}

type CurrencySetting struct {
	CurrencyCode  CurrencyCode `json:"currencyCode"`
	CurrencyName  string       `json:"currencyName"`
	Enabled       bool         `json:"enabled"`
	RateUpdatedAt *string      `json:"rateUpdatedAt"`
}

type CurrencySettingConnection struct {
	Edges    []*CurrencySettingEdge `json:"edges"`
	Nodes    []*CurrencySetting     `json:"nodes"`
	PageInfo *PageInfo              `json:"pageInfo"`
}

type CurrencySettingEdge struct {
	Cursor string           `json:"cursor"`
	Node   *CurrencySetting `json:"node"`
}

type Customer struct {
	ID string `json:"id"`
}

func (Customer) IsCommentEventEmbed() {}

func (Customer) IsPurchasingEntity() {}

func (Customer) IsEntity() {}

type CustomerCreditCard struct {
	BillingAddress    *CustomerCreditCardBillingAddress `json:"billingAddress"`
	Brand             string                            `json:"brand"`
	ExpiresSoon       bool                              `json:"expiresSoon"`
	ExpiryMonth       int                               `json:"expiryMonth"`
	ExpiryYear        int                               `json:"expiryYear"`
	FirstDigits       *string                           `json:"firstDigits"`
	IsRevocable       bool                              `json:"isRevocable"`
	LastDigits        string                            `json:"lastDigits"`
	MaskedNumber      string                            `json:"maskedNumber"`
	Name              string                            `json:"name"`
	Source            *string                           `json:"source"`
	VirtualLastDigits *string                           `json:"virtualLastDigits"`
}

func (CustomerCreditCard) IsCustomerPaymentInstrument() {}

type CustomerCreditCardBillingAddress struct {
	Address1     *string      `json:"address1"`
	City         *string      `json:"city"`
	Country      *string      `json:"country"`
	CountryCode  *CountryCode `json:"countryCode"`
	Province     *string      `json:"province"`
	ProvinceCode *string      `json:"provinceCode"`
	Zip          *string      `json:"zip"`
}

type CustomerEmailMarketingConsentState struct {
	ConsentUpdatedAt    *string                      `json:"consentUpdatedAt"`
	MarketingOptInLevel *CustomerMarketingOptInLevel `json:"marketingOptInLevel"`
	MarketingState      CustomerEmailMarketingState  `json:"marketingState"`
}

type CustomerJourneySummary struct {
	CustomerOrderIndex *int                      `json:"customerOrderIndex"`
	DaysToConversion   *int                      `json:"daysToConversion"`
	FirstVisit         *CustomerVisit            `json:"firstVisit"`
	LastVisit          *CustomerVisit            `json:"lastVisit"`
	Moments            *CustomerMomentConnection `json:"moments"`
	MomentsCount       *int                      `json:"momentsCount"`
	Ready              bool                      `json:"ready"`
}

type CustomerMomentConnection struct {
	Edges    []*CustomerMomentEdge `json:"edges"`
	Nodes    []CustomerMoment      `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type CustomerMomentEdge struct {
	Cursor string         `json:"cursor"`
	Node   CustomerMoment `json:"node"`
}

type CustomerPaymentInstrumentBillingAddress struct {
	Address1     *string      `json:"address1"`
	City         *string      `json:"city"`
	Country      *string      `json:"country"`
	CountryCode  *CountryCode `json:"countryCode"`
	Name         *string      `json:"name"`
	Province     *string      `json:"province"`
	ProvinceCode *string      `json:"provinceCode"`
	Zip          *string      `json:"zip"`
}

type CustomerPaymentMethod struct {
	Customer              *Customer                              `json:"customer"`
	ID                    string                                 `json:"id"`
	Instrument            CustomerPaymentInstrument              `json:"instrument"`
	RevokedAt             *string                                `json:"revokedAt"`
	RevokedReason         *CustomerPaymentMethodRevocationReason `json:"revokedReason"`
	SubscriptionContracts *SubscriptionContractConnection        `json:"subscriptionContracts"`
}

func (CustomerPaymentMethod) IsNode()            {}
func (this CustomerPaymentMethod) GetID() string { return this.ID }

type CustomerPaymentMethodConnection struct {
	Edges    []*CustomerPaymentMethodEdge `json:"edges"`
	Nodes    []*CustomerPaymentMethod     `json:"nodes"`
	PageInfo *PageInfo                    `json:"pageInfo"`
}

type CustomerPaymentMethodEdge struct {
	Cursor string                 `json:"cursor"`
	Node   *CustomerPaymentMethod `json:"node"`
}

type CustomerPaypalBillingAgreement struct {
	BillingAddress     *CustomerPaymentInstrumentBillingAddress `json:"billingAddress"`
	Inactive           bool                                     `json:"inactive"`
	IsRevocable        bool                                     `json:"isRevocable"`
	PaypalAccountEmail *string                                  `json:"paypalAccountEmail"`
}

func (CustomerPaypalBillingAgreement) IsCustomerPaymentInstrument() {}

type CustomerShopPayAgreement struct {
	ExpiresSoon  bool   `json:"expiresSoon"`
	ExpiryMonth  int    `json:"expiryMonth"`
	ExpiryYear   int    `json:"expiryYear"`
	Inactive     bool   `json:"inactive"`
	IsRevocable  bool   `json:"isRevocable"`
	LastDigits   string `json:"lastDigits"`
	MaskedNumber string `json:"maskedNumber"`
	Name         string `json:"name"`
}

func (CustomerShopPayAgreement) IsCustomerPaymentInstrument() {}

type CustomerSmsMarketingConsentState struct {
	ConsentCollectedFrom *CustomerConsentCollectedFrom `json:"consentCollectedFrom"`
	ConsentUpdatedAt     *string                       `json:"consentUpdatedAt"`
	MarketingOptInLevel  CustomerMarketingOptInLevel   `json:"marketingOptInLevel"`
	MarketingState       CustomerSmsMarketingState     `json:"marketingState"`
}

type CustomerStatistics struct {
	PredictedSpendTier *CustomerPredictedSpendTier `json:"predictedSpendTier"`
}

type CustomerVisit struct {
	ID                string           `json:"id"`
	LandingPage       *string          `json:"landingPage"`
	LandingPageHTML   *string          `json:"landingPageHtml"`
	MarketingEvent    *MarketingEvent  `json:"marketingEvent"`
	OccurredAt        string           `json:"occurredAt"`
	ReferralCode      *string          `json:"referralCode"`
	ReferralInfoHTML  string           `json:"referralInfoHtml"`
	ReferrerURL       *string          `json:"referrerUrl"`
	Source            string           `json:"source"`
	SourceDescription *string          `json:"sourceDescription"`
	SourceType        *MarketingTactic `json:"sourceType"`
	UtmParameters     *UTMParameters   `json:"utmParameters"`
}

func (CustomerVisit) IsCustomerMoment()          {}
func (this CustomerVisit) GetOccurredAt() string { return this.OccurredAt }

func (CustomerVisit) IsNode()            {}
func (this CustomerVisit) GetID() string { return this.ID }

type DeliveryAvailableService struct {
	Countries *DeliveryCountryCodesOrRestOfWorld `json:"countries"`
	Name      string                             `json:"name"`
}

type DeliveryCarrierService struct {
	AvailableServicesForCountries []*DeliveryAvailableService `json:"availableServicesForCountries"`
	FormattedName                 *string                     `json:"formattedName"`
	Icon                          *Image                      `json:"icon"`
	ID                            string                      `json:"id"`
	Name                          *string                     `json:"name"`
}

func (DeliveryCarrierService) IsNode()            {}
func (this DeliveryCarrierService) GetID() string { return this.ID }

type DeliveryCondition struct {
	ConditionCriteria DeliveryConditionCriteria `json:"conditionCriteria"`
	Field             DeliveryConditionField    `json:"field"`
	ID                string                    `json:"id"`
	Operator          DeliveryConditionOperator `json:"operator"`
}

func (DeliveryCondition) IsNode()            {}
func (this DeliveryCondition) GetID() string { return this.ID }

type DeliveryCountry struct {
	Code           *DeliveryCountryCodeOrRestOfWorld `json:"code"`
	ID             string                            `json:"id"`
	Name           string                            `json:"name"`
	Provinces      []*DeliveryProvince               `json:"provinces"`
	TranslatedName string                            `json:"translatedName"`
}

func (DeliveryCountry) IsNode()            {}
func (this DeliveryCountry) GetID() string { return this.ID }

type DeliveryCountryAndZone struct {
	Country *DeliveryCountry `json:"country"`
	Zone    string           `json:"zone"`
}

type DeliveryCountryCodeOrRestOfWorld struct {
	CountryCode *CountryCode `json:"countryCode"`
	RestOfWorld bool         `json:"restOfWorld"`
}

type DeliveryCountryCodesOrRestOfWorld struct {
	CountryCodes []CountryCode `json:"countryCodes"`
	RestOfWorld  bool          `json:"restOfWorld"`
}

type DeliveryLocationGroup struct {
	ID        string              `json:"id"`
	Locations *LocationConnection `json:"locations"`
}

func (DeliveryLocationGroup) IsNode()            {}
func (this DeliveryLocationGroup) GetID() string { return this.ID }

type DeliveryLocationGroupZone struct {
	MethodDefinitionCounts *DeliveryMethodDefinitionCounts     `json:"methodDefinitionCounts"`
	MethodDefinitions      *DeliveryMethodDefinitionConnection `json:"methodDefinitions"`
	Zone                   *DeliveryZone                       `json:"zone"`
}

type DeliveryLocationGroupZoneConnection struct {
	Edges    []*DeliveryLocationGroupZoneEdge `json:"edges"`
	Nodes    []*DeliveryLocationGroupZone     `json:"nodes"`
	PageInfo *PageInfo                        `json:"pageInfo"`
}

type DeliveryLocationGroupZoneEdge struct {
	Cursor string                     `json:"cursor"`
	Node   *DeliveryLocationGroupZone `json:"node"`
}

type DeliveryMethod struct {
	ID                  string             `json:"id"`
	MaxDeliveryDateTime *string            `json:"maxDeliveryDateTime"`
	MethodType          DeliveryMethodType `json:"methodType"`
	MinDeliveryDateTime *string            `json:"minDeliveryDateTime"`
}

func (DeliveryMethod) IsNode()            {}
func (this DeliveryMethod) GetID() string { return this.ID }

type DeliveryMethodDefinition struct {
	Active           bool                 `json:"active"`
	Description      *string              `json:"description"`
	ID               string               `json:"id"`
	MethodConditions []*DeliveryCondition `json:"methodConditions"`
	Name             string               `json:"name"`
	RateProvider     DeliveryRateProvider `json:"rateProvider"`
}

func (DeliveryMethodDefinition) IsNode()            {}
func (this DeliveryMethodDefinition) GetID() string { return this.ID }

type DeliveryMethodDefinitionConnection struct {
	Edges    []*DeliveryMethodDefinitionEdge `json:"edges"`
	Nodes    []*DeliveryMethodDefinition     `json:"nodes"`
	PageInfo *PageInfo                       `json:"pageInfo"`
}

type DeliveryMethodDefinitionCounts struct {
	ParticipantDefinitionsCount int `json:"participantDefinitionsCount"`
	RateDefinitionsCount        int `json:"rateDefinitionsCount"`
}

type DeliveryMethodDefinitionEdge struct {
	Cursor string                    `json:"cursor"`
	Node   *DeliveryMethodDefinition `json:"node"`
}

type DeliveryParticipant struct {
	AdaptToNewServicesFlag bool                          `json:"adaptToNewServicesFlag"`
	CarrierService         *DeliveryCarrierService       `json:"carrierService"`
	FixedFee               *MoneyV2                      `json:"fixedFee"`
	ID                     string                        `json:"id"`
	ParticipantServices    []*DeliveryParticipantService `json:"participantServices"`
	PercentageOfRateFee    float64                       `json:"percentageOfRateFee"`
}

func (DeliveryParticipant) IsNode()            {}
func (this DeliveryParticipant) GetID() string { return this.ID }

func (DeliveryParticipant) IsDeliveryRateProvider() {}

type DeliveryParticipantService struct {
	Active bool   `json:"active"`
	Name   string `json:"name"`
}

type DeliveryProductVariantsCount struct {
	Capped bool `json:"capped"`
	Count  int  `json:"count"`
}

type DeliveryProfile struct {
	ActiveMethodDefinitionsCount int                             `json:"activeMethodDefinitionsCount"`
	Default                      bool                            `json:"default"`
	ID                           string                          `json:"id"`
	LegacyMode                   bool                            `json:"legacyMode"`
	LocationsWithoutRatesCount   int                             `json:"locationsWithoutRatesCount"`
	Name                         string                          `json:"name"`
	OriginLocationCount          int                             `json:"originLocationCount"`
	ProductVariantsCountV2       *DeliveryProductVariantsCount   `json:"productVariantsCountV2"`
	ProfileItems                 *DeliveryProfileItemConnection  `json:"profileItems"`
	ProfileLocationGroups        []*DeliveryProfileLocationGroup `json:"profileLocationGroups"`
	SellingPlanGroups            *SellingPlanGroupConnection     `json:"sellingPlanGroups"`
	UnassignedLocations          []*Location                     `json:"unassignedLocations"`
	ZoneCountryCount             int                             `json:"zoneCountryCount"`
}

func (DeliveryProfile) IsNode()            {}
func (this DeliveryProfile) GetID() string { return this.ID }

type DeliveryProfileItem struct {
	ID       string                    `json:"id"`
	Product  *Product                  `json:"product"`
	Variants *ProductVariantConnection `json:"variants"`
}

func (DeliveryProfileItem) IsNode()            {}
func (this DeliveryProfileItem) GetID() string { return this.ID }

type DeliveryProfileItemConnection struct {
	Edges    []*DeliveryProfileItemEdge `json:"edges"`
	Nodes    []*DeliveryProfileItem     `json:"nodes"`
	PageInfo *PageInfo                  `json:"pageInfo"`
}

type DeliveryProfileItemEdge struct {
	Cursor string               `json:"cursor"`
	Node   *DeliveryProfileItem `json:"node"`
}

type DeliveryProfileLocationGroup struct {
	CountriesInAnyZone []*DeliveryCountryAndZone            `json:"countriesInAnyZone"`
	LocationGroup      *DeliveryLocationGroup               `json:"locationGroup"`
	LocationGroupZones *DeliveryLocationGroupZoneConnection `json:"locationGroupZones"`
}

type DeliveryProvince struct {
	Code           string `json:"code"`
	ID             string `json:"id"`
	Name           string `json:"name"`
	TranslatedName string `json:"translatedName"`
}

func (DeliveryProvince) IsNode()            {}
func (this DeliveryProvince) GetID() string { return this.ID }

type DeliveryRateDefinition struct {
	ID    string   `json:"id"`
	Price *MoneyV2 `json:"price"`
}

func (DeliveryRateDefinition) IsNode()            {}
func (this DeliveryRateDefinition) GetID() string { return this.ID }

func (DeliveryRateDefinition) IsDeliveryRateProvider() {}

type DeliveryZone struct {
	Countries []*DeliveryCountry `json:"countries"`
	ID        string             `json:"id"`
	Name      string             `json:"name"`
}

func (DeliveryZone) IsNode()            {}
func (this DeliveryZone) GetID() string { return this.ID }

type DiscountAllocation struct {
	AllocatedAmountSet  *MoneyBag           `json:"allocatedAmountSet"`
	DiscountApplication DiscountApplication `json:"discountApplication"`
}

type DiscountApplicationConnection struct {
	Edges    []*DiscountApplicationEdge `json:"edges"`
	Nodes    []DiscountApplication      `json:"nodes"`
	PageInfo *PageInfo                  `json:"pageInfo"`
}

type DiscountApplicationEdge struct {
	Cursor string              `json:"cursor"`
	Node   DiscountApplication `json:"node"`
}

type DiscountCodeApplication struct {
	AllocationMethod DiscountApplicationAllocationMethod `json:"allocationMethod"`
	Code             string                              `json:"code"`
	Index            int                                 `json:"index"`
	TargetSelection  DiscountApplicationTargetSelection  `json:"targetSelection"`
	TargetType       DiscountApplicationTargetType       `json:"targetType"`
	Value            PricingValue                        `json:"value"`
}

func (DiscountCodeApplication) IsDiscountApplication() {}
func (this DiscountCodeApplication) GetAllocationMethod() DiscountApplicationAllocationMethod {
	return this.AllocationMethod
}
func (this DiscountCodeApplication) GetIndex() int { return this.Index }
func (this DiscountCodeApplication) GetTargetSelection() DiscountApplicationTargetSelection {
	return this.TargetSelection
}
func (this DiscountCodeApplication) GetTargetType() DiscountApplicationTargetType {
	return this.TargetType
}
func (this DiscountCodeApplication) GetValue() PricingValue { return this.Value }

type Domain struct {
	Host              string              `json:"host"`
	ID                string              `json:"id"`
	Localization      *DomainLocalization `json:"localization"`
	MarketWebPresence *MarketWebPresence  `json:"marketWebPresence"`
	SslEnabled        bool                `json:"sslEnabled"`
	URL               string              `json:"url"`
}

func (Domain) IsNode()            {}
func (this Domain) GetID() string { return this.ID }

type DomainLocalization struct {
	AlternateLocales []string `json:"alternateLocales"`
	Country          *string  `json:"country"`
	DefaultLocale    string   `json:"defaultLocale"`
}

type DraftOrder struct {
	AppliedDiscount                      *DraftOrderAppliedDiscount       `json:"appliedDiscount"`
	BillingAddress                       *MailingAddress                  `json:"billingAddress"`
	BillingAddressMatchesShippingAddress bool                             `json:"billingAddressMatchesShippingAddress"`
	CompletedAt                          *string                          `json:"completedAt"`
	CreatedAt                            string                           `json:"createdAt"`
	CurrencyCode                         CurrencyCode                     `json:"currencyCode"`
	CustomAttributes                     []*Attribute                     `json:"customAttributes"`
	Customer                             *Customer                        `json:"customer"`
	DefaultCursor                        string                           `json:"defaultCursor"`
	Email                                *string                          `json:"email"`
	Events                               *EventConnection                 `json:"events"`
	HasTimelineComment                   bool                             `json:"hasTimelineComment"`
	ID                                   string                           `json:"id"`
	InvoiceEmailTemplateSubject          string                           `json:"invoiceEmailTemplateSubject"`
	InvoiceSentAt                        *string                          `json:"invoiceSentAt"`
	InvoiceURL                           *string                          `json:"invoiceUrl"`
	LegacyResourceID                     string                           `json:"legacyResourceId"`
	LineItems                            *DraftOrderLineItemConnection    `json:"lineItems"`
	LineItemsSubtotalPrice               *MoneyBag                        `json:"lineItemsSubtotalPrice"`
	LocalizationExtensions               *LocalizationExtensionConnection `json:"localizationExtensions"`
	MarketName                           string                           `json:"marketName"`
	MarketRegionCountryCode              CountryCode                      `json:"marketRegionCountryCode"`
	Metafield                            *Metafield                       `json:"metafield"`
	Metafields                           *MetafieldConnection             `json:"metafields"`
	Name                                 string                           `json:"name"`
	Note2                                *string                          `json:"note2"`
	Order                                *Order                           `json:"order"`
	PaymentTerms                         *PaymentTerms                    `json:"paymentTerms"`
	Phone                                *string                          `json:"phone"`
	PresentmentCurrencyCode              CurrencyCode                     `json:"presentmentCurrencyCode"`
	PrivateMetafield                     *PrivateMetafield                `json:"privateMetafield"`
	PrivateMetafields                    *PrivateMetafieldConnection      `json:"privateMetafields"`
	PurchasingEntity                     PurchasingEntity                 `json:"purchasingEntity"`
	Ready                                bool                             `json:"ready"`
	ReserveInventoryUntil                *string                          `json:"reserveInventoryUntil"`
	ShippingAddress                      *MailingAddress                  `json:"shippingAddress"`
	ShippingLine                         *ShippingLine                    `json:"shippingLine"`
	Status                               DraftOrderStatus                 `json:"status"`
	SubtotalPrice                        string                           `json:"subtotalPrice"`
	SubtotalPriceSet                     *MoneyBag                        `json:"subtotalPriceSet"`
	Tags                                 []string                         `json:"tags"`
	TaxExempt                            bool                             `json:"taxExempt"`
	TaxLines                             []*TaxLine                       `json:"taxLines"`
	TaxesIncluded                        bool                             `json:"taxesIncluded"`
	TotalDiscountsSet                    *MoneyBag                        `json:"totalDiscountsSet"`
	TotalLineItemsPriceSet               *MoneyBag                        `json:"totalLineItemsPriceSet"`
	TotalPrice                           string                           `json:"totalPrice"`
	TotalPriceSet                        *MoneyBag                        `json:"totalPriceSet"`
	TotalShippingPrice                   string                           `json:"totalShippingPrice"`
	TotalShippingPriceSet                *MoneyBag                        `json:"totalShippingPriceSet"`
	TotalTax                             string                           `json:"totalTax"`
	TotalTaxSet                          *MoneyBag                        `json:"totalTaxSet"`
	TotalWeight                          string                           `json:"totalWeight"`
	UpdatedAt                            string                           `json:"updatedAt"`
	VisibleToCustomer                    bool                             `json:"visibleToCustomer"`
}

func (DraftOrder) IsCommentEventSubject()           {}
func (this DraftOrder) GetID() string               { return this.ID }
func (this DraftOrder) GetHasTimelineComment() bool { return this.HasTimelineComment }

func (DraftOrder) IsHasEvents()                     {}
func (this DraftOrder) GetEvents() *EventConnection { return this.Events }

func (DraftOrder) IsHasLocalizationExtensions() {}
func (this DraftOrder) GetLocalizationExtensions() *LocalizationExtensionConnection {
	return this.LocalizationExtensions
}

func (DraftOrder) IsHasMetafields()                            {}
func (this DraftOrder) GetMetafield() *Metafield               { return this.Metafield }
func (this DraftOrder) GetMetafields() *MetafieldConnection    { return this.Metafields }
func (this DraftOrder) GetPrivateMetafield() *PrivateMetafield { return this.PrivateMetafield }
func (this DraftOrder) GetPrivateMetafields() *PrivateMetafieldConnection {
	return this.PrivateMetafields
}

func (DraftOrder) IsLegacyInteroperability()        {}
func (this DraftOrder) GetLegacyResourceID() string { return this.LegacyResourceID }

func (DraftOrder) IsNavigable()                  {}
func (this DraftOrder) GetDefaultCursor() string { return this.DefaultCursor }

func (DraftOrder) IsNode() {}

func (DraftOrder) IsCommentEventEmbed() {}

func (DraftOrder) IsEntity() {}

type DraftOrderAppliedDiscount struct {
	AmountSet   *MoneyBag                     `json:"amountSet"`
	AmountV2    *MoneyV2                      `json:"amountV2"`
	Description string                        `json:"description"`
	Title       *string                       `json:"title"`
	Value       float64                       `json:"value"`
	ValueType   DraftOrderAppliedDiscountType `json:"valueType"`
}

type DraftOrderConnection struct {
	Edges    []*DraftOrderEdge `json:"edges"`
	Nodes    []*DraftOrder     `json:"nodes"`
	PageInfo *PageInfo         `json:"pageInfo"`
}

type DraftOrderEdge struct {
	Cursor string      `json:"cursor"`
	Node   *DraftOrder `json:"node"`
}

type DraftOrderLineItem struct {
	AppliedDiscount        *DraftOrderAppliedDiscount `json:"appliedDiscount"`
	Custom                 bool                       `json:"custom"`
	CustomAttributes       []*Attribute               `json:"customAttributes"`
	CustomAttributesV2     []*TypedAttribute          `json:"customAttributesV2"`
	DiscountedTotal        string                     `json:"discountedTotal"`
	DiscountedTotalSet     *MoneyBag                  `json:"discountedTotalSet"`
	DiscountedUnitPrice    string                     `json:"discountedUnitPrice"`
	DiscountedUnitPriceSet *MoneyBag                  `json:"discountedUnitPriceSet"`
	FulfillmentService     *FulfillmentService        `json:"fulfillmentService"`
	ID                     string                     `json:"id"`
	Image                  *Image                     `json:"image"`
	IsGiftCard             bool                       `json:"isGiftCard"`
	Name                   string                     `json:"name"`
	OriginalTotal          string                     `json:"originalTotal"`
	OriginalTotalSet       *MoneyBag                  `json:"originalTotalSet"`
	OriginalUnitPrice      string                     `json:"originalUnitPrice"`
	OriginalUnitPriceSet   *MoneyBag                  `json:"originalUnitPriceSet"`
	Product                *Product                   `json:"product"`
	Quantity               int                        `json:"quantity"`
	RequiresShipping       bool                       `json:"requiresShipping"`
	Sku                    *string                    `json:"sku"`
	TaxLines               []*TaxLine                 `json:"taxLines"`
	Taxable                bool                       `json:"taxable"`
	Title                  string                     `json:"title"`
	TotalDiscount          string                     `json:"totalDiscount"`
	TotalDiscountSet       *MoneyBag                  `json:"totalDiscountSet"`
	Variant                *ProductVariant            `json:"variant"`
	VariantTitle           *string                    `json:"variantTitle"`
	Vendor                 *string                    `json:"vendor"`
	Weight                 *Weight                    `json:"weight"`
}

func (DraftOrderLineItem) IsNode()            {}
func (this DraftOrderLineItem) GetID() string { return this.ID }

type DraftOrderLineItemConnection struct {
	Edges    []*DraftOrderLineItemEdge `json:"edges"`
	Nodes    []*DraftOrderLineItem     `json:"nodes"`
	PageInfo *PageInfo                 `json:"pageInfo"`
}

type DraftOrderLineItemEdge struct {
	Cursor string              `json:"cursor"`
	Node   *DraftOrderLineItem `json:"node"`
}

type Duty struct {
	CountryCodeOfOrigin  *CountryCode `json:"countryCodeOfOrigin"`
	HarmonizedSystemCode *string      `json:"harmonizedSystemCode"`
	ID                   string       `json:"id"`
	Price                *MoneyBag    `json:"price"`
	TaxLines             []*TaxLine   `json:"taxLines"`
}

func (Duty) IsNode()            {}
func (this Duty) GetID() string { return this.ID }

type EditableProperty struct {
	Locked bool    `json:"locked"`
	Reason *string `json:"reason"`
}

type EventConnection struct {
	Edges    []*EventEdge `json:"edges"`
	Nodes    []Event      `json:"nodes"`
	PageInfo *PageInfo    `json:"pageInfo"`
}

type EventEdge struct {
	Cursor string `json:"cursor"`
	Node   Event  `json:"node"`
}

type FailedRequirement struct {
	Action  *NavigationItem `json:"action"`
	Message string          `json:"message"`
}

type FileError struct {
	Code    FileErrorCode `json:"code"`
	Details *string       `json:"details"`
	Message string        `json:"message"`
}

type FilterOption struct {
	Label string `json:"label"`
	Value string `json:"value"`
}

type Fulfillment struct {
	CreatedAt            string                         `json:"createdAt"`
	DeliveredAt          *string                        `json:"deliveredAt"`
	DisplayStatus        *FulfillmentDisplayStatus      `json:"displayStatus"`
	EstimatedDeliveryAt  *string                        `json:"estimatedDeliveryAt"`
	Events               *FulfillmentEventConnection    `json:"events"`
	FulfillmentLineItems *FulfillmentLineItemConnection `json:"fulfillmentLineItems"`
	FulfillmentOrders    *FulfillmentOrderConnection    `json:"fulfillmentOrders"`
	ID                   string                         `json:"id"`
	InTransitAt          *string                        `json:"inTransitAt"`
	LegacyResourceID     string                         `json:"legacyResourceId"`
	Location             *Location                      `json:"location"`
	Name                 string                         `json:"name"`
	Order                *Order                         `json:"order"`
	OriginAddress        *FulfillmentOriginAddress      `json:"originAddress"`
	RequiresShipping     bool                           `json:"requiresShipping"`
	Service              *FulfillmentService            `json:"service"`
	Status               FulfillmentStatus              `json:"status"`
	TotalQuantity        int                            `json:"totalQuantity"`
	TrackingInfo         []*FulfillmentTrackingInfo     `json:"trackingInfo"`
	UpdatedAt            string                         `json:"updatedAt"`
}

func (Fulfillment) IsLegacyInteroperability()        {}
func (this Fulfillment) GetLegacyResourceID() string { return this.LegacyResourceID }

func (Fulfillment) IsNode()            {}
func (this Fulfillment) GetID() string { return this.ID }

type FulfillmentConnection struct {
	Edges    []*FulfillmentEdge `json:"edges"`
	Nodes    []*Fulfillment     `json:"nodes"`
	PageInfo *PageInfo          `json:"pageInfo"`
}

type FulfillmentEdge struct {
	Cursor string       `json:"cursor"`
	Node   *Fulfillment `json:"node"`
}

type FulfillmentEvent struct {
	HappenedAt string                 `json:"happenedAt"`
	ID         string                 `json:"id"`
	Status     FulfillmentEventStatus `json:"status"`
}

func (FulfillmentEvent) IsNode()            {}
func (this FulfillmentEvent) GetID() string { return this.ID }

type FulfillmentEventConnection struct {
	Edges    []*FulfillmentEventEdge `json:"edges"`
	Nodes    []*FulfillmentEvent     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type FulfillmentEventEdge struct {
	Cursor string            `json:"cursor"`
	Node   *FulfillmentEvent `json:"node"`
}

type FulfillmentHold struct {
	Reason      FulfillmentHoldReason `json:"reason"`
	ReasonNotes *string               `json:"reasonNotes"`
}

type FulfillmentLineItem struct {
	DiscountedTotalSet *MoneyBag `json:"discountedTotalSet"`
	ID                 string    `json:"id"`
	LineItem           *LineItem `json:"lineItem"`
	OriginalTotalSet   *MoneyBag `json:"originalTotalSet"`
	Quantity           *int      `json:"quantity"`
}

func (FulfillmentLineItem) IsNode()            {}
func (this FulfillmentLineItem) GetID() string { return this.ID }

type FulfillmentLineItemConnection struct {
	Edges    []*FulfillmentLineItemEdge `json:"edges"`
	Nodes    []*FulfillmentLineItem     `json:"nodes"`
	PageInfo *PageInfo                  `json:"pageInfo"`
}

type FulfillmentLineItemEdge struct {
	Cursor string               `json:"cursor"`
	Node   *FulfillmentLineItem `json:"node"`
}

type FulfillmentOrder struct {
	AssignedLocation    *FulfillmentOrderAssignedLocation          `json:"assignedLocation"`
	DeliveryMethod      *DeliveryMethod                            `json:"deliveryMethod"`
	Destination         *FulfillmentOrderDestination               `json:"destination"`
	FulfillAt           *string                                    `json:"fulfillAt"`
	FulfillBy           *string                                    `json:"fulfillBy"`
	FulfillmentHolds    []*FulfillmentHold                         `json:"fulfillmentHolds"`
	Fulfillments        *FulfillmentConnection                     `json:"fulfillments"`
	ID                  string                                     `json:"id"`
	InternationalDuties *FulfillmentOrderInternationalDuties       `json:"internationalDuties"`
	LineItems           *FulfillmentOrderLineItemConnection        `json:"lineItems"`
	LocationsForMove    *FulfillmentOrderLocationForMoveConnection `json:"locationsForMove"`
	MerchantRequests    *FulfillmentOrderMerchantRequestConnection `json:"merchantRequests"`
	Order               *Order                                     `json:"order"`
	RequestStatus       FulfillmentOrderRequestStatus              `json:"requestStatus"`
	Status              FulfillmentOrderStatus                     `json:"status"`
	SupportedActions    []*FulfillmentOrderSupportedAction         `json:"supportedActions"`
}

func (FulfillmentOrder) IsNode()            {}
func (this FulfillmentOrder) GetID() string { return this.ID }

type FulfillmentOrderAssignedLocation struct {
	Address1    *string     `json:"address1"`
	Address2    *string     `json:"address2"`
	City        *string     `json:"city"`
	CountryCode CountryCode `json:"countryCode"`
	Location    *Location   `json:"location"`
	Name        string      `json:"name"`
	Phone       *string     `json:"phone"`
	Province    *string     `json:"province"`
	Zip         *string     `json:"zip"`
}

type FulfillmentOrderConnection struct {
	Edges    []*FulfillmentOrderEdge `json:"edges"`
	Nodes    []*FulfillmentOrder     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type FulfillmentOrderDestination struct {
	Address1    *string      `json:"address1"`
	Address2    *string      `json:"address2"`
	City        *string      `json:"city"`
	Company     *string      `json:"company"`
	CountryCode *CountryCode `json:"countryCode"`
	Email       *string      `json:"email"`
	FirstName   *string      `json:"firstName"`
	ID          string       `json:"id"`
	LastName    *string      `json:"lastName"`
	Phone       *string      `json:"phone"`
	Province    *string      `json:"province"`
	Zip         *string      `json:"zip"`
}

func (FulfillmentOrderDestination) IsNode()            {}
func (this FulfillmentOrderDestination) GetID() string { return this.ID }

type FulfillmentOrderEdge struct {
	Cursor string            `json:"cursor"`
	Node   *FulfillmentOrder `json:"node"`
}

type FulfillmentOrderInternationalDuties struct {
	Incoterm string `json:"incoterm"`
}

type FulfillmentOrderLineItem struct {
	ID                string                             `json:"id"`
	LineItem          *LineItem                          `json:"lineItem"`
	RemainingQuantity int                                `json:"remainingQuantity"`
	TotalQuantity     int                                `json:"totalQuantity"`
	Warnings          []*FulfillmentOrderLineItemWarning `json:"warnings"`
}

func (FulfillmentOrderLineItem) IsNode()            {}
func (this FulfillmentOrderLineItem) GetID() string { return this.ID }

type FulfillmentOrderLineItemConnection struct {
	Edges    []*FulfillmentOrderLineItemEdge `json:"edges"`
	Nodes    []*FulfillmentOrderLineItem     `json:"nodes"`
	PageInfo *PageInfo                       `json:"pageInfo"`
}

type FulfillmentOrderLineItemEdge struct {
	Cursor string                    `json:"cursor"`
	Node   *FulfillmentOrderLineItem `json:"node"`
}

type FulfillmentOrderLineItemWarning struct {
	Description *string `json:"description"`
	Title       *string `json:"title"`
}

type FulfillmentOrderLocationForMove struct {
	Location *Location `json:"location"`
	Message  *string   `json:"message"`
	Movable  bool      `json:"movable"`
}

type FulfillmentOrderLocationForMoveConnection struct {
	Edges    []*FulfillmentOrderLocationForMoveEdge `json:"edges"`
	Nodes    []*FulfillmentOrderLocationForMove     `json:"nodes"`
	PageInfo *PageInfo                              `json:"pageInfo"`
}

type FulfillmentOrderLocationForMoveEdge struct {
	Cursor string                           `json:"cursor"`
	Node   *FulfillmentOrderLocationForMove `json:"node"`
}

type FulfillmentOrderMerchantRequest struct {
	ID             string                              `json:"id"`
	Kind           FulfillmentOrderMerchantRequestKind `json:"kind"`
	Message        *string                             `json:"message"`
	RequestOptions *string                             `json:"requestOptions"`
	ResponseData   *string                             `json:"responseData"`
	SentAt         string                              `json:"sentAt"`
}

func (FulfillmentOrderMerchantRequest) IsNode()            {}
func (this FulfillmentOrderMerchantRequest) GetID() string { return this.ID }

type FulfillmentOrderMerchantRequestConnection struct {
	Edges    []*FulfillmentOrderMerchantRequestEdge `json:"edges"`
	Nodes    []*FulfillmentOrderMerchantRequest     `json:"nodes"`
	PageInfo *PageInfo                              `json:"pageInfo"`
}

type FulfillmentOrderMerchantRequestEdge struct {
	Cursor string                           `json:"cursor"`
	Node   *FulfillmentOrderMerchantRequest `json:"node"`
}

type FulfillmentOrderSupportedAction struct {
	Action      FulfillmentOrderAction `json:"action"`
	ExternalURL *string                `json:"externalUrl"`
}

type FulfillmentOriginAddress struct {
	Address1     *string `json:"address1"`
	Address2     *string `json:"address2"`
	City         *string `json:"city"`
	CountryCode  string  `json:"countryCode"`
	ProvinceCode *string `json:"provinceCode"`
	Zip          *string `json:"zip"`
}

type FulfillmentService struct {
	ID string `json:"id"`
}

func (FulfillmentService) IsEntity() {}

type FulfillmentTrackingInfo struct {
	Company *string `json:"company"`
	Number  *string `json:"number"`
	URL     *string `json:"url"`
}

type GenericFile struct {
	Alt              *string            `json:"alt"`
	CreatedAt        string             `json:"createdAt"`
	FileErrors       []*FileError       `json:"fileErrors"`
	FileStatus       FileStatus         `json:"fileStatus"`
	ID               string             `json:"id"`
	MimeType         *string            `json:"mimeType"`
	OriginalFileSize *int               `json:"originalFileSize"`
	Preview          *MediaPreviewImage `json:"preview"`
	URL              *string            `json:"url"`
}

func (GenericFile) IsFile()                   {}
func (this GenericFile) GetAlt() *string      { return this.Alt }
func (this GenericFile) GetCreatedAt() string { return this.CreatedAt }
func (this GenericFile) GetFileErrors() []*FileError {
	if this.FileErrors == nil {
		return nil
	}
	interfaceSlice := make([]*FileError, 0, len(this.FileErrors))
	for _, concrete := range this.FileErrors {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this GenericFile) GetFileStatus() FileStatus      { return this.FileStatus }
func (this GenericFile) GetPreview() *MediaPreviewImage { return this.Preview }

func (GenericFile) IsNode()            {}
func (this GenericFile) GetID() string { return this.ID }

func (GenericFile) IsMetafieldReference() {}

type Image struct {
	AltText           *string                     `json:"altText"`
	Height            *int                        `json:"height"`
	ID                *string                     `json:"id"`
	Metafield         *Metafield                  `json:"metafield"`
	Metafields        *MetafieldConnection        `json:"metafields"`
	PrivateMetafield  *PrivateMetafield           `json:"privateMetafield"`
	PrivateMetafields *PrivateMetafieldConnection `json:"privateMetafields"`
	URL               string                      `json:"url"`
	Width             *int                        `json:"width"`
}

func (Image) IsHasMetafields()                                       {}
func (this Image) GetMetafield() *Metafield                          { return this.Metafield }
func (this Image) GetMetafields() *MetafieldConnection               { return this.Metafields }
func (this Image) GetPrivateMetafield() *PrivateMetafield            { return this.PrivateMetafield }
func (this Image) GetPrivateMetafields() *PrivateMetafieldConnection { return this.PrivateMetafields }

type ImageConnection struct {
	Edges    []*ImageEdge `json:"edges"`
	Nodes    []*Image     `json:"nodes"`
	PageInfo *PageInfo    `json:"pageInfo"`
}

type ImageEdge struct {
	Cursor string `json:"cursor"`
	Node   *Image `json:"node"`
}

type ImageTransformInput struct {
	Crop                 *CropRegion       `json:"crop"`
	MaxWidth             *int              `json:"maxWidth"`
	MaxHeight            *int              `json:"maxHeight"`
	Scale                *int              `json:"scale"`
	PreferredContentType *ImageContentType `json:"preferredContentType"`
}

type InventoryItem struct {
	CountryCodeOfOrigin          *CountryCode                           `json:"countryCodeOfOrigin"`
	CountryHarmonizedSystemCodes *CountryHarmonizedSystemCodeConnection `json:"countryHarmonizedSystemCodes"`
	CreatedAt                    string                                 `json:"createdAt"`
	DuplicateSkuCount            int                                    `json:"duplicateSkuCount"`
	HarmonizedSystemCode         *string                                `json:"harmonizedSystemCode"`
	ID                           string                                 `json:"id"`
	InventoryHistoryURL          *string                                `json:"inventoryHistoryUrl"`
	InventoryLevel               *InventoryLevel                        `json:"inventoryLevel"`
	InventoryLevels              *InventoryLevelConnection              `json:"inventoryLevels"`
	LegacyResourceID             string                                 `json:"legacyResourceId"`
	LocationsCount               int                                    `json:"locationsCount"`
	ProvinceCodeOfOrigin         *string                                `json:"provinceCodeOfOrigin"`
	RequiresShipping             bool                                   `json:"requiresShipping"`
	Sku                          *string                                `json:"sku"`
	Tracked                      bool                                   `json:"tracked"`
	TrackedEditable              *EditableProperty                      `json:"trackedEditable"`
	UnitCost                     *MoneyV2                               `json:"unitCost"`
	UpdatedAt                    string                                 `json:"updatedAt"`
	Variant                      *ProductVariant                        `json:"variant"`
}

func (InventoryItem) IsLegacyInteroperability()        {}
func (this InventoryItem) GetLegacyResourceID() string { return this.LegacyResourceID }

func (InventoryItem) IsNode()            {}
func (this InventoryItem) GetID() string { return this.ID }

type InventoryLevel struct {
	ID string `json:"id"`
}

func (InventoryLevel) IsEntity() {}

type InventoryLevelConnection struct {
	Edges    []*InventoryLevelEdge `json:"edges"`
	Nodes    []*InventoryLevel     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type InventoryLevelEdge struct {
	Cursor string          `json:"cursor"`
	Node   *InventoryLevel `json:"node"`
}

type LimitedPendingOrderCount struct {
	AtMax bool `json:"atMax"`
	Count int  `json:"count"`
}

type LineItem struct {
	Contract                      *SubscriptionContract `json:"contract"`
	CurrentQuantity               int                   `json:"currentQuantity"`
	CustomAttributes              []*Attribute          `json:"customAttributes"`
	DiscountAllocations           []*DiscountAllocation `json:"discountAllocations"`
	DiscountedTotalSet            *MoneyBag             `json:"discountedTotalSet"`
	DiscountedUnitPriceSet        *MoneyBag             `json:"discountedUnitPriceSet"`
	Duties                        []*Duty               `json:"duties"`
	ID                            string                `json:"id"`
	Image                         *Image                `json:"image"`
	MerchantEditable              bool                  `json:"merchantEditable"`
	Name                          string                `json:"name"`
	NonFulfillableQuantity        int                   `json:"nonFulfillableQuantity"`
	OriginalTotalSet              *MoneyBag             `json:"originalTotalSet"`
	OriginalUnitPriceSet          *MoneyBag             `json:"originalUnitPriceSet"`
	Product                       *Product              `json:"product"`
	Quantity                      int                   `json:"quantity"`
	RefundableQuantity            int                   `json:"refundableQuantity"`
	RequiresShipping              bool                  `json:"requiresShipping"`
	Restockable                   bool                  `json:"restockable"`
	SellingPlan                   *LineItemSellingPlan  `json:"sellingPlan"`
	Sku                           *string               `json:"sku"`
	StaffMember                   *StaffMember          `json:"staffMember"`
	TaxLines                      []*TaxLine            `json:"taxLines"`
	Taxable                       bool                  `json:"taxable"`
	Title                         string                `json:"title"`
	TotalDiscountSet              *MoneyBag             `json:"totalDiscountSet"`
	UnfulfilledDiscountedTotalSet *MoneyBag             `json:"unfulfilledDiscountedTotalSet"`
	UnfulfilledOriginalTotalSet   *MoneyBag             `json:"unfulfilledOriginalTotalSet"`
	UnfulfilledQuantity           int                   `json:"unfulfilledQuantity"`
	Variant                       *ProductVariant       `json:"variant"`
	VariantTitle                  *string               `json:"variantTitle"`
	Vendor                        *string               `json:"vendor"`
}

func (LineItem) IsNode()            {}
func (this LineItem) GetID() string { return this.ID }

type LineItemConnection struct {
	Edges    []*LineItemEdge `json:"edges"`
	Nodes    []*LineItem     `json:"nodes"`
	PageInfo *PageInfo       `json:"pageInfo"`
}

type LineItemEdge struct {
	Cursor string    `json:"cursor"`
	Node   *LineItem `json:"node"`
}

type LineItemSellingPlan struct {
	Name          string  `json:"name"`
	SellingPlanID *string `json:"sellingPlanId"`
}

type Link struct {
	Label        string                  `json:"label"`
	Translations []*PublishedTranslation `json:"translations"`
	URL          string                  `json:"url"`
}

func (Link) IsHasPublishedTranslations() {}
func (this Link) GetTranslations() []*PublishedTranslation {
	if this.Translations == nil {
		return nil
	}
	interfaceSlice := make([]*PublishedTranslation, 0, len(this.Translations))
	for _, concrete := range this.Translations {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

type LocalizationExtension struct {
	CountryCode CountryCode                  `json:"countryCode"`
	Key         LocalizationExtensionKey     `json:"key"`
	Purpose     LocalizationExtensionPurpose `json:"purpose"`
	Title       string                       `json:"title"`
	Value       string                       `json:"value"`
}

type LocalizationExtensionConnection struct {
	Edges    []*LocalizationExtensionEdge `json:"edges"`
	Nodes    []*LocalizationExtension     `json:"nodes"`
	PageInfo *PageInfo                    `json:"pageInfo"`
}

type LocalizationExtensionEdge struct {
	Cursor string                 `json:"cursor"`
	Node   *LocalizationExtension `json:"node"`
}

type Location struct {
	Activatable          bool                           `json:"activatable"`
	Address              *LocationAddress               `json:"address"`
	AddressVerified      bool                           `json:"addressVerified"`
	Deactivatable        bool                           `json:"deactivatable"`
	DeactivatedAt        *string                        `json:"deactivatedAt"`
	Deletable            bool                           `json:"deletable"`
	FulfillmentService   *FulfillmentService            `json:"fulfillmentService"`
	FulfillsOnlineOrders bool                           `json:"fulfillsOnlineOrders"`
	HasActiveInventory   bool                           `json:"hasActiveInventory"`
	HasUnfulfilledOrders bool                           `json:"hasUnfulfilledOrders"`
	ID                   string                         `json:"id"`
	InventoryLevel       *InventoryLevel                `json:"inventoryLevel"`
	InventoryLevels      *InventoryLevelConnection      `json:"inventoryLevels"`
	IsActive             bool                           `json:"isActive"`
	LegacyResourceID     string                         `json:"legacyResourceId"`
	Metafield            *Metafield                     `json:"metafield"`
	MetafieldDefinitions *MetafieldDefinitionConnection `json:"metafieldDefinitions"`
	Metafields           *MetafieldConnection           `json:"metafields"`
	Name                 string                         `json:"name"`
	PrivateMetafield     *PrivateMetafield              `json:"privateMetafield"`
	PrivateMetafields    *PrivateMetafieldConnection    `json:"privateMetafields"`
	ShipsInventory       bool                           `json:"shipsInventory"`
	SuggestedAddresses   []*LocationSuggestedAddress    `json:"suggestedAddresses"`
}

func (Location) IsHasMetafieldDefinitions() {}
func (this Location) GetMetafieldDefinitions() *MetafieldDefinitionConnection {
	return this.MetafieldDefinitions
}

func (Location) IsHasMetafields()                            {}
func (this Location) GetMetafield() *Metafield               { return this.Metafield }
func (this Location) GetMetafields() *MetafieldConnection    { return this.Metafields }
func (this Location) GetPrivateMetafield() *PrivateMetafield { return this.PrivateMetafield }
func (this Location) GetPrivateMetafields() *PrivateMetafieldConnection {
	return this.PrivateMetafields
}

func (Location) IsLegacyInteroperability()        {}
func (this Location) GetLegacyResourceID() string { return this.LegacyResourceID }

func (Location) IsNode()            {}
func (this Location) GetID() string { return this.ID }

type LocationAddress struct {
	Address1     *string  `json:"address1"`
	Address2     *string  `json:"address2"`
	City         *string  `json:"city"`
	Country      *string  `json:"country"`
	CountryCode  *string  `json:"countryCode"`
	Formatted    []string `json:"formatted"`
	Latitude     *float64 `json:"latitude"`
	Longitude    *float64 `json:"longitude"`
	Phone        *string  `json:"phone"`
	Province     *string  `json:"province"`
	ProvinceCode *string  `json:"provinceCode"`
	Zip          *string  `json:"zip"`
}

type LocationConnection struct {
	Edges    []*LocationEdge `json:"edges"`
	Nodes    []*Location     `json:"nodes"`
	PageInfo *PageInfo       `json:"pageInfo"`
}

type LocationEdge struct {
	Cursor string    `json:"cursor"`
	Node   *Location `json:"node"`
}

type LocationSuggestedAddress struct {
	Address1     *string      `json:"address1"`
	Address2     *string      `json:"address2"`
	City         *string      `json:"city"`
	Country      *string      `json:"country"`
	CountryCode  *CountryCode `json:"countryCode"`
	Formatted    []string     `json:"formatted"`
	Province     *string      `json:"province"`
	ProvinceCode *string      `json:"provinceCode"`
	Zip          *string      `json:"zip"`
}

type MailingAddress struct {
	Address1             *string      `json:"address1"`
	Address2             *string      `json:"address2"`
	City                 *string      `json:"city"`
	Company              *string      `json:"company"`
	CoordinatesValidated bool         `json:"coordinatesValidated"`
	Country              *string      `json:"country"`
	CountryCodeV2        *CountryCode `json:"countryCodeV2"`
	FirstName            *string      `json:"firstName"`
	FormattedArea        *string      `json:"formattedArea"`
	ID                   string       `json:"id"`
	LastName             *string      `json:"lastName"`
	Latitude             *float64     `json:"latitude"`
	Longitude            *float64     `json:"longitude"`
	Name                 *string      `json:"name"`
	Phone                *string      `json:"phone"`
	Province             *string      `json:"province"`
	ProvinceCode         *string      `json:"provinceCode"`
	Zip                  *string      `json:"zip"`
}

func (MailingAddress) IsNode()            {}
func (this MailingAddress) GetID() string { return this.ID }

type MailingAddressInput struct {
	Address1     *string      `json:"address1"`
	Address2     *string      `json:"address2"`
	City         *string      `json:"city"`
	Company      *string      `json:"company"`
	CountryCode  *CountryCode `json:"countryCode"`
	FirstName    *string      `json:"firstName"`
	LastName     *string      `json:"lastName"`
	Phone        *string      `json:"phone"`
	ProvinceCode *string      `json:"provinceCode"`
	Zip          *string      `json:"zip"`
}

type ManualDiscountApplication struct {
	AllocationMethod DiscountApplicationAllocationMethod `json:"allocationMethod"`
	Description      *string                             `json:"description"`
	Index            int                                 `json:"index"`
	TargetSelection  DiscountApplicationTargetSelection  `json:"targetSelection"`
	TargetType       DiscountApplicationTargetType       `json:"targetType"`
	Title            string                              `json:"title"`
	Value            PricingValue                        `json:"value"`
}

func (ManualDiscountApplication) IsDiscountApplication() {}
func (this ManualDiscountApplication) GetAllocationMethod() DiscountApplicationAllocationMethod {
	return this.AllocationMethod
}
func (this ManualDiscountApplication) GetIndex() int { return this.Index }
func (this ManualDiscountApplication) GetTargetSelection() DiscountApplicationTargetSelection {
	return this.TargetSelection
}
func (this ManualDiscountApplication) GetTargetType() DiscountApplicationTargetType {
	return this.TargetType
}
func (this ManualDiscountApplication) GetValue() PricingValue { return this.Value }

type Market struct {
	ID string `json:"id"`
}

func (Market) IsEntity() {}

type MarketCurrencySettings struct {
	BaseCurrency    *CurrencySetting `json:"baseCurrency"`
	LocalCurrencies bool             `json:"localCurrencies"`
}

type MarketRegionConnection struct {
	Edges    []*MarketRegionEdge `json:"edges"`
	Nodes    []MarketRegion      `json:"nodes"`
	PageInfo *PageInfo           `json:"pageInfo"`
}

type MarketRegionEdge struct {
	Cursor string       `json:"cursor"`
	Node   MarketRegion `json:"node"`
}

type MarketWebPresence struct {
	ID string `json:"id"`
}

func (MarketWebPresence) IsEntity() {}

type MarketWebPresenceRootURL struct {
	Locale string `json:"locale"`
	URL    string `json:"url"`
}

type MarketingEvent struct {
	App              *App              `json:"app"`
	Channel          *MarketingChannel `json:"channel"`
	Description      *string           `json:"description"`
	EndedAt          *string           `json:"endedAt"`
	ID               string            `json:"id"`
	LegacyResourceID string            `json:"legacyResourceId"`
	ManageURL        *string           `json:"manageUrl"`
	PreviewURL       *string           `json:"previewUrl"`
	RemoteID         *string           `json:"remoteId"`
	ScheduledToEndAt *string           `json:"scheduledToEndAt"`
	SourceAndMedium  string            `json:"sourceAndMedium"`
	StartedAt        string            `json:"startedAt"`
	Type             MarketingTactic   `json:"type"`
	UtmCampaign      *string           `json:"utmCampaign"`
	UtmMedium        *string           `json:"utmMedium"`
	UtmSource        *string           `json:"utmSource"`
}

func (MarketingEvent) IsLegacyInteroperability()        {}
func (this MarketingEvent) GetLegacyResourceID() string { return this.LegacyResourceID }

func (MarketingEvent) IsNode()            {}
func (this MarketingEvent) GetID() string { return this.ID }

type MediaConnection struct {
	Edges    []*MediaEdge `json:"edges"`
	Nodes    []Media      `json:"nodes"`
	PageInfo *PageInfo    `json:"pageInfo"`
}

type MediaEdge struct {
	Cursor string `json:"cursor"`
	Node   Media  `json:"node"`
}

type MediaError struct {
	Code    MediaErrorCode `json:"code"`
	Details *string        `json:"details"`
	Message string         `json:"message"`
}

type MediaImage struct {
	Alt              *string                   `json:"alt"`
	CreatedAt        string                    `json:"createdAt"`
	FileErrors       []*FileError              `json:"fileErrors"`
	FileStatus       FileStatus                `json:"fileStatus"`
	ID               string                    `json:"id"`
	Image            *Image                    `json:"image"`
	MediaContentType MediaContentType          `json:"mediaContentType"`
	MediaErrors      []*MediaError             `json:"mediaErrors"`
	MediaWarnings    []*MediaWarning           `json:"mediaWarnings"`
	MimeType         *string                   `json:"mimeType"`
	OriginalSource   *MediaImageOriginalSource `json:"originalSource"`
	Preview          *MediaPreviewImage        `json:"preview"`
	Status           MediaStatus               `json:"status"`
}

func (MediaImage) IsFile()                   {}
func (this MediaImage) GetAlt() *string      { return this.Alt }
func (this MediaImage) GetCreatedAt() string { return this.CreatedAt }
func (this MediaImage) GetFileErrors() []*FileError {
	if this.FileErrors == nil {
		return nil
	}
	interfaceSlice := make([]*FileError, 0, len(this.FileErrors))
	for _, concrete := range this.FileErrors {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this MediaImage) GetFileStatus() FileStatus      { return this.FileStatus }
func (this MediaImage) GetPreview() *MediaPreviewImage { return this.Preview }

func (MediaImage) IsMedia() {}

func (this MediaImage) GetMediaContentType() MediaContentType { return this.MediaContentType }
func (this MediaImage) GetMediaErrors() []*MediaError {
	if this.MediaErrors == nil {
		return nil
	}
	interfaceSlice := make([]*MediaError, 0, len(this.MediaErrors))
	for _, concrete := range this.MediaErrors {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this MediaImage) GetMediaWarnings() []*MediaWarning {
	if this.MediaWarnings == nil {
		return nil
	}
	interfaceSlice := make([]*MediaWarning, 0, len(this.MediaWarnings))
	for _, concrete := range this.MediaWarnings {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (this MediaImage) GetStatus() MediaStatus { return this.Status }

func (MediaImage) IsNode()            {}
func (this MediaImage) GetID() string { return this.ID }

func (MediaImage) IsMetafieldReference() {}

type MediaImageOriginalSource struct {
	FileSize *int `json:"fileSize"`
}

type MediaPreviewImage struct {
	Image  *Image                  `json:"image"`
	Status MediaPreviewImageStatus `json:"status"`
}

type MediaUserError struct {
	Code    *MediaUserErrorCode `json:"code"`
	Field   []string            `json:"field"`
	Message string              `json:"message"`
}

func (MediaUserError) IsDisplayableError() {}
func (this MediaUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this MediaUserError) GetMessage() string { return this.Message }

type MediaWarning struct {
	Code    MediaWarningCode `json:"code"`
	Message *string          `json:"message"`
}

type MerchantApprovalSignals struct {
	IdentityVerified  bool `json:"identityVerified"`
	VerifiedByShopify bool `json:"verifiedByShopify"`
}

type Metafield struct {
	CreatedAt        string                        `json:"createdAt"`
	Definition       *MetafieldDefinition          `json:"definition"`
	Description      *string                       `json:"description"`
	ID               string                        `json:"id"`
	Key              string                        `json:"key"`
	LegacyResourceID string                        `json:"legacyResourceId"`
	Namespace        string                        `json:"namespace"`
	Owner            HasMetafields                 `json:"owner"`
	OwnerType        MetafieldOwnerType            `json:"ownerType"`
	Reference        MetafieldReference            `json:"reference"`
	References       *MetafieldReferenceConnection `json:"references"`
	Type             string                        `json:"type"`
	UpdatedAt        string                        `json:"updatedAt"`
	Value            string                        `json:"value"`
}

func (Metafield) IsLegacyInteroperability()        {}
func (this Metafield) GetLegacyResourceID() string { return this.LegacyResourceID }

func (Metafield) IsNode()            {}
func (this Metafield) GetID() string { return this.ID }

type MetafieldConnection struct {
	Edges    []*MetafieldEdge `json:"edges"`
	Nodes    []*Metafield     `json:"nodes"`
	PageInfo *PageInfo        `json:"pageInfo"`
}

type MetafieldDefinition struct {
	Description            *string                              `json:"description"`
	ID                     string                               `json:"id"`
	Key                    string                               `json:"key"`
	Metafields             *MetafieldConnection                 `json:"metafields"`
	MetafieldsCount        int                                  `json:"metafieldsCount"`
	Name                   string                               `json:"name"`
	Namespace              string                               `json:"namespace"`
	OwnerType              MetafieldOwnerType                   `json:"ownerType"`
	PinnedPosition         *int                                 `json:"pinnedPosition"`
	StandardTemplate       *StandardMetafieldDefinitionTemplate `json:"standardTemplate"`
	Type                   *MetafieldDefinitionType             `json:"type"`
	ValidationStatus       MetafieldDefinitionValidationStatus  `json:"validationStatus"`
	Validations            []*MetafieldDefinitionValidation     `json:"validations"`
	VisibleToStorefrontAPI bool                                 `json:"visibleToStorefrontApi"`
}

func (MetafieldDefinition) IsNode()            {}
func (this MetafieldDefinition) GetID() string { return this.ID }

type MetafieldDefinitionConnection struct {
	Edges    []*MetafieldDefinitionEdge `json:"edges"`
	Nodes    []*MetafieldDefinition     `json:"nodes"`
	PageInfo *PageInfo                  `json:"pageInfo"`
}

type MetafieldDefinitionEdge struct {
	Cursor string               `json:"cursor"`
	Node   *MetafieldDefinition `json:"node"`
}

type MetafieldDefinitionSupportedValidation struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

type MetafieldDefinitionType struct {
	Category                     string                                    `json:"category"`
	Name                         string                                    `json:"name"`
	SupportedValidations         []*MetafieldDefinitionSupportedValidation `json:"supportedValidations"`
	SupportsDefinitionMigrations bool                                      `json:"supportsDefinitionMigrations"`
}

type MetafieldDefinitionValidation struct {
	Name  string  `json:"name"`
	Type  string  `json:"type"`
	Value *string `json:"value"`
}

type MetafieldEdge struct {
	Cursor string     `json:"cursor"`
	Node   *Metafield `json:"node"`
}

type MetafieldInput struct {
	Description *string `json:"description"`
	ID          *string `json:"id"`
	Namespace   *string `json:"namespace"`
	Key         *string `json:"key"`
	Value       *string `json:"value"`
	Type        *string `json:"type"`
}

type MetafieldReferenceConnection struct {
	Edges    []*MetafieldReferenceEdge `json:"edges"`
	Nodes    []MetafieldReference      `json:"nodes"`
	PageInfo *PageInfo                 `json:"pageInfo"`
}

type MetafieldReferenceEdge struct {
	Cursor string             `json:"cursor"`
	Node   MetafieldReference `json:"node"`
}

type MoneyBag struct {
	PresentmentMoney *MoneyV2 `json:"presentmentMoney"`
	ShopMoney        *MoneyV2 `json:"shopMoney"`
}

type MoneyV2 struct {
	Amount       string       `json:"amount"`
	CurrencyCode CurrencyCode `json:"currencyCode"`
}

func (MoneyV2) IsPricingValue() {}

func (MoneyV2) IsDeliveryConditionCriteria() {}

func (MoneyV2) IsSellingPlanCheckoutChargeValue() {}

func (MoneyV2) IsSellingPlanPricingPolicyAdjustmentValue() {}

type NavigationItem struct {
	ID    string `json:"id"`
	Title string `json:"title"`
	URL   string `json:"url"`
}

type OnlineStorePage struct {
	DefaultCursor string                  `json:"defaultCursor"`
	ID            string                  `json:"id"`
	Translations  []*PublishedTranslation `json:"translations"`
}

func (OnlineStorePage) IsHasPublishedTranslations() {}
func (this OnlineStorePage) GetTranslations() []*PublishedTranslation {
	if this.Translations == nil {
		return nil
	}
	interfaceSlice := make([]*PublishedTranslation, 0, len(this.Translations))
	for _, concrete := range this.Translations {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (OnlineStorePage) IsNavigable()                  {}
func (this OnlineStorePage) GetDefaultCursor() string { return this.DefaultCursor }

func (OnlineStorePage) IsNode()            {}
func (this OnlineStorePage) GetID() string { return this.ID }

func (OnlineStorePage) IsMetafieldReference() {}

type Order struct {
	Agreements                           *SalesAgreementConnection        `json:"agreements"`
	Alerts                               []*ResourceAlert                 `json:"alerts"`
	App                                  *OrderApp                        `json:"app"`
	BillingAddress                       *MailingAddress                  `json:"billingAddress"`
	BillingAddressMatchesShippingAddress bool                             `json:"billingAddressMatchesShippingAddress"`
	CanMarkAsPaid                        bool                             `json:"canMarkAsPaid"`
	CanNotifyCustomer                    bool                             `json:"canNotifyCustomer"`
	CancelReason                         *OrderCancelReason               `json:"cancelReason"`
	CancelledAt                          *string                          `json:"cancelledAt"`
	Capturable                           bool                             `json:"capturable"`
	CartDiscountAmountSet                *MoneyBag                        `json:"cartDiscountAmountSet"`
	ChannelInformation                   *ChannelInformation              `json:"channelInformation"`
	ClientIP                             *string                          `json:"clientIp"`
	Closed                               bool                             `json:"closed"`
	ClosedAt                             *string                          `json:"closedAt"`
	Confirmed                            bool                             `json:"confirmed"`
	CreatedAt                            string                           `json:"createdAt"`
	CurrencyCode                         CurrencyCode                     `json:"currencyCode"`
	CurrentCartDiscountAmountSet         *MoneyBag                        `json:"currentCartDiscountAmountSet"`
	CurrentSubtotalLineItemsQuantity     int                              `json:"currentSubtotalLineItemsQuantity"`
	CurrentSubtotalPriceSet              *MoneyBag                        `json:"currentSubtotalPriceSet"`
	CurrentTaxLines                      []*TaxLine                       `json:"currentTaxLines"`
	CurrentTotalDiscountsSet             *MoneyBag                        `json:"currentTotalDiscountsSet"`
	CurrentTotalDutiesSet                *MoneyBag                        `json:"currentTotalDutiesSet"`
	CurrentTotalPriceSet                 *MoneyBag                        `json:"currentTotalPriceSet"`
	CurrentTotalTaxSet                   *MoneyBag                        `json:"currentTotalTaxSet"`
	CurrentTotalWeight                   string                           `json:"currentTotalWeight"`
	CustomAttributes                     []*Attribute                     `json:"customAttributes"`
	Customer                             *Customer                        `json:"customer"`
	CustomerAcceptsMarketing             bool                             `json:"customerAcceptsMarketing"`
	CustomerJourneySummary               *CustomerJourneySummary          `json:"customerJourneySummary"`
	CustomerLocale                       *string                          `json:"customerLocale"`
	DiscountApplications                 *DiscountApplicationConnection   `json:"discountApplications"`
	DiscountCode                         *string                          `json:"discountCode"`
	DiscountCodes                        []string                         `json:"discountCodes"`
	DisplayAddress                       *MailingAddress                  `json:"displayAddress"`
	DisplayFinancialStatus               *OrderDisplayFinancialStatus     `json:"displayFinancialStatus"`
	DisplayFulfillmentStatus             OrderDisplayFulfillmentStatus    `json:"displayFulfillmentStatus"`
	Disputes                             []*OrderDisputeSummary           `json:"disputes"`
	Edited                               bool                             `json:"edited"`
	Email                                *string                          `json:"email"`
	EstimatedTaxes                       bool                             `json:"estimatedTaxes"`
	Events                               *EventConnection                 `json:"events"`
	Fulfillable                          bool                             `json:"fulfillable"`
	FulfillmentOrders                    *FulfillmentOrderConnection      `json:"fulfillmentOrders"`
	Fulfillments                         []*Fulfillment                   `json:"fulfillments"`
	FullyPaid                            bool                             `json:"fullyPaid"`
	HasTimelineComment                   bool                             `json:"hasTimelineComment"`
	ID                                   string                           `json:"id"`
	LegacyResourceID                     string                           `json:"legacyResourceId"`
	LineItems                            *LineItemConnection              `json:"lineItems"`
	LocalizationExtensions               *LocalizationExtensionConnection `json:"localizationExtensions"`
	MerchantEditable                     bool                             `json:"merchantEditable"`
	MerchantEditableErrors               []string                         `json:"merchantEditableErrors"`
	MerchantOfRecordApp                  *OrderApp                        `json:"merchantOfRecordApp"`
	Metafield                            *Metafield                       `json:"metafield"`
	MetafieldDefinitions                 *MetafieldDefinitionConnection   `json:"metafieldDefinitions"`
	Metafields                           *MetafieldConnection             `json:"metafields"`
	Name                                 string                           `json:"name"`
	NetPaymentSet                        *MoneyBag                        `json:"netPaymentSet"`
	NonFulfillableLineItems              *LineItemConnection              `json:"nonFulfillableLineItems"`
	Note                                 *string                          `json:"note"`
	OriginalTotalDutiesSet               *MoneyBag                        `json:"originalTotalDutiesSet"`
	OriginalTotalPriceSet                *MoneyBag                        `json:"originalTotalPriceSet"`
	PaymentCollectionDetails             *OrderPaymentCollectionDetails   `json:"paymentCollectionDetails"`
	PaymentGatewayNames                  []string                         `json:"paymentGatewayNames"`
	PaymentTerms                         *PaymentTerms                    `json:"paymentTerms"`
	Phone                                *string                          `json:"phone"`
	PhysicalLocation                     *Location                        `json:"physicalLocation"`
	PresentmentCurrencyCode              CurrencyCode                     `json:"presentmentCurrencyCode"`
	PrivateMetafield                     *PrivateMetafield                `json:"privateMetafield"`
	PrivateMetafields                    *PrivateMetafieldConnection      `json:"privateMetafields"`
	ProcessedAt                          string                           `json:"processedAt"`
	Publication                          *Publication                     `json:"publication"`
	PurchasingEntity                     PurchasingEntity                 `json:"purchasingEntity"`
	RefundDiscrepancySet                 *MoneyBag                        `json:"refundDiscrepancySet"`
	Refundable                           bool                             `json:"refundable"`
	Refunds                              []*Refund                        `json:"refunds"`
	RegisteredSourceURL                  *string                          `json:"registeredSourceUrl"`
	RequiresShipping                     bool                             `json:"requiresShipping"`
	Restockable                          bool                             `json:"restockable"`
	RiskLevel                            OrderRiskLevel                   `json:"riskLevel"`
	Risks                                []*OrderRisk                     `json:"risks"`
	ShippingAddress                      *MailingAddress                  `json:"shippingAddress"`
	ShippingLine                         *ShippingLine                    `json:"shippingLine"`
	ShippingLines                        *ShippingLineConnection          `json:"shippingLines"`
	SourceIdentifier                     *string                          `json:"sourceIdentifier"`
	SubtotalLineItemsQuantity            int                              `json:"subtotalLineItemsQuantity"`
	SubtotalPriceSet                     *MoneyBag                        `json:"subtotalPriceSet"`
	SuggestedRefund                      *SuggestedRefund                 `json:"suggestedRefund"`
	Tags                                 []string                         `json:"tags"`
	TaxLines                             []*TaxLine                       `json:"taxLines"`
	TaxesIncluded                        bool                             `json:"taxesIncluded"`
	Test                                 bool                             `json:"test"`
	TotalCapturableSet                   *MoneyBag                        `json:"totalCapturableSet"`
	TotalDiscountsSet                    *MoneyBag                        `json:"totalDiscountsSet"`
	TotalOutstandingSet                  *MoneyBag                        `json:"totalOutstandingSet"`
	TotalPriceSet                        *MoneyBag                        `json:"totalPriceSet"`
	TotalReceivedSet                     *MoneyBag                        `json:"totalReceivedSet"`
	TotalRefundedSet                     *MoneyBag                        `json:"totalRefundedSet"`
	TotalRefundedShippingSet             *MoneyBag                        `json:"totalRefundedShippingSet"`
	TotalShippingPriceSet                *MoneyBag                        `json:"totalShippingPriceSet"`
	TotalTaxSet                          *MoneyBag                        `json:"totalTaxSet"`
	TotalTipReceivedSet                  *MoneyBag                        `json:"totalTipReceivedSet"`
	TotalWeight                          *string                          `json:"totalWeight"`
	Transactions                         []*OrderTransaction              `json:"transactions"`
	Unpaid                               bool                             `json:"unpaid"`
	UpdatedAt                            string                           `json:"updatedAt"`
}

func (Order) IsCommentEventSubject()           {}
func (this Order) GetID() string               { return this.ID }
func (this Order) GetHasTimelineComment() bool { return this.HasTimelineComment }

func (Order) IsHasEvents()                     {}
func (this Order) GetEvents() *EventConnection { return this.Events }

func (Order) IsHasLocalizationExtensions() {}
func (this Order) GetLocalizationExtensions() *LocalizationExtensionConnection {
	return this.LocalizationExtensions
}

func (Order) IsHasMetafieldDefinitions() {}
func (this Order) GetMetafieldDefinitions() *MetafieldDefinitionConnection {
	return this.MetafieldDefinitions
}

func (Order) IsHasMetafields()                                       {}
func (this Order) GetMetafield() *Metafield                          { return this.Metafield }
func (this Order) GetMetafields() *MetafieldConnection               { return this.Metafields }
func (this Order) GetPrivateMetafield() *PrivateMetafield            { return this.PrivateMetafield }
func (this Order) GetPrivateMetafields() *PrivateMetafieldConnection { return this.PrivateMetafields }

func (Order) IsLegacyInteroperability()        {}
func (this Order) GetLegacyResourceID() string { return this.LegacyResourceID }

func (Order) IsNode() {}

func (Order) IsCommentEventEmbed() {}

func (Order) IsEntity() {}

type OrderApp struct {
	Icon *Image `json:"icon"`
	ID   string `json:"id"`
	Name string `json:"name"`
}

type OrderConnection struct {
	Edges    []*OrderEdge `json:"edges"`
	Nodes    []*Order     `json:"nodes"`
	PageInfo *PageInfo    `json:"pageInfo"`
}

type OrderDisputeSummary struct {
	ID          string        `json:"id"`
	InitiatedAs DisputeType   `json:"initiatedAs"`
	Status      DisputeStatus `json:"status"`
}

func (OrderDisputeSummary) IsNode()            {}
func (this OrderDisputeSummary) GetID() string { return this.ID }

type OrderEdge struct {
	Cursor string `json:"cursor"`
	Node   *Order `json:"node"`
}

type OrderPaymentCollectionDetails struct {
	AdditionalPaymentCollectionURL *string           `json:"additionalPaymentCollectionUrl"`
	VaultedPaymentMethods          []*PaymentMandate `json:"vaultedPaymentMethods"`
}

type OrderRisk struct {
	Display bool            `json:"display"`
	Level   *OrderRiskLevel `json:"level"`
	Message *string         `json:"message"`
}

type OrderTransaction struct {
	AccountNumber          *string                        `json:"accountNumber"`
	AmountSet              *MoneyBag                      `json:"amountSet"`
	AuthorizationCode      *string                        `json:"authorizationCode"`
	AuthorizationExpiresAt *string                        `json:"authorizationExpiresAt"`
	CreatedAt              string                         `json:"createdAt"`
	ErrorCode              *OrderTransactionErrorCode     `json:"errorCode"`
	Fees                   []*TransactionFee              `json:"fees"`
	FormattedGateway       *string                        `json:"formattedGateway"`
	Gateway                *string                        `json:"gateway"`
	ID                     string                         `json:"id"`
	Kind                   OrderTransactionKind           `json:"kind"`
	ManuallyCapturable     bool                           `json:"manuallyCapturable"`
	MaximumRefundableV2    *MoneyV2                       `json:"maximumRefundableV2"`
	Order                  *Order                         `json:"order"`
	ParentTransaction      *OrderTransaction              `json:"parentTransaction"`
	PaymentIcon            *Image                         `json:"paymentIcon"`
	ProcessedAt            *string                        `json:"processedAt"`
	ReceiptJSON            *string                        `json:"receiptJson"`
	SettlementCurrency     *CurrencyCode                  `json:"settlementCurrency"`
	SettlementCurrencyRate *string                        `json:"settlementCurrencyRate"`
	ShopifyPaymentsSet     *ShopifyPaymentsTransactionSet `json:"shopifyPaymentsSet"`
	Status                 OrderTransactionStatus         `json:"status"`
	Test                   bool                           `json:"test"`
	TotalUnsettledSet      *MoneyBag                      `json:"totalUnsettledSet"`
	User                   *StaffMember                   `json:"user"`
}

func (OrderTransaction) IsNode()            {}
func (this OrderTransaction) GetID() string { return this.ID }

type OrderTransactionConnection struct {
	Edges    []*OrderTransactionEdge `json:"edges"`
	Nodes    []*OrderTransaction     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type OrderTransactionEdge struct {
	Cursor string            `json:"cursor"`
	Node   *OrderTransaction `json:"node"`
}

type PageInfo struct {
	EndCursor       *string `json:"endCursor"`
	HasNextPage     bool    `json:"hasNextPage"`
	HasPreviousPage bool    `json:"hasPreviousPage"`
	StartCursor     *string `json:"startCursor"`
}

type PaymentMandate struct {
	ID                string            `json:"id"`
	PaymentInstrument PaymentInstrument `json:"paymentInstrument"`
}

func (PaymentMandate) IsNode()            {}
func (this PaymentMandate) GetID() string { return this.ID }

type PaymentSchedule struct {
	Amount      *MoneyV2 `json:"amount"`
	CompletedAt *string  `json:"completedAt"`
	DueAt       *string  `json:"dueAt"`
	ID          string   `json:"id"`
	IssuedAt    *string  `json:"issuedAt"`
}

func (PaymentSchedule) IsNode()            {}
func (this PaymentSchedule) GetID() string { return this.ID }

type PaymentScheduleConnection struct {
	Edges    []*PaymentScheduleEdge `json:"edges"`
	Nodes    []*PaymentSchedule     `json:"nodes"`
	PageInfo *PageInfo              `json:"pageInfo"`
}

type PaymentScheduleEdge struct {
	Cursor string           `json:"cursor"`
	Node   *PaymentSchedule `json:"node"`
}

type PaymentSettings struct {
	SupportedDigitalWallets []DigitalWallet `json:"supportedDigitalWallets"`
}

type PaymentTerms struct {
	DueInDays        *int                       `json:"dueInDays"`
	ID               string                     `json:"id"`
	Overdue          bool                       `json:"overdue"`
	PaymentSchedules *PaymentScheduleConnection `json:"paymentSchedules"`
	PaymentTermsName string                     `json:"paymentTermsName"`
	PaymentTermsType PaymentTermsType           `json:"paymentTermsType"`
	TranslatedName   string                     `json:"translatedName"`
}

func (PaymentTerms) IsNode()            {}
func (this PaymentTerms) GetID() string { return this.ID }

type PaymentTermsTemplate struct {
	Description      string           `json:"description"`
	DueInDays        *int             `json:"dueInDays"`
	ID               string           `json:"id"`
	Name             string           `json:"name"`
	PaymentTermsType PaymentTermsType `json:"paymentTermsType"`
	TranslatedName   string           `json:"translatedName"`
}

func (PaymentTermsTemplate) IsNode()            {}
func (this PaymentTermsTemplate) GetID() string { return this.ID }

type PriceList struct {
	ContextRule *PriceListContextRule     `json:"contextRule"`
	Currency    CurrencyCode              `json:"currency"`
	ID          string                    `json:"id"`
	Name        string                    `json:"name"`
	Parent      *PriceListParent          `json:"parent"`
	Prices      *PriceListPriceConnection `json:"prices"`
}

func (PriceList) IsNode()            {}
func (this PriceList) GetID() string { return this.ID }

type PriceListAdjustment struct {
	Type  PriceListAdjustmentType `json:"type"`
	Value float64                 `json:"value"`
}

type PriceListContextRule struct {
	Countries []CountryCode `json:"countries"`
	Market    *Market       `json:"market"`
}

type PriceListParent struct {
	Adjustment *PriceListAdjustment `json:"adjustment"`
}

type PriceListPrice struct {
	CompareAtPrice *MoneyV2                 `json:"compareAtPrice"`
	OriginType     PriceListPriceOriginType `json:"originType"`
	Price          *MoneyV2                 `json:"price"`
	Variant        *ProductVariant          `json:"variant"`
}

type PriceListPriceConnection struct {
	Edges    []*PriceListPriceEdge `json:"edges"`
	Nodes    []*PriceListPrice     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type PriceListPriceEdge struct {
	Cursor string          `json:"cursor"`
	Node   *PriceListPrice `json:"node"`
}

type PricingPercentageValue struct {
	Percentage float64 `json:"percentage"`
}

func (PricingPercentageValue) IsPricingValue() {}

type PrivateMetafield struct {
	CreatedAt string                    `json:"createdAt"`
	ID        string                    `json:"id"`
	Key       string                    `json:"key"`
	Namespace string                    `json:"namespace"`
	UpdatedAt string                    `json:"updatedAt"`
	Value     string                    `json:"value"`
	ValueType PrivateMetafieldValueType `json:"valueType"`
}

func (PrivateMetafield) IsNode()            {}
func (this PrivateMetafield) GetID() string { return this.ID }

type PrivateMetafieldConnection struct {
	Edges    []*PrivateMetafieldEdge `json:"edges"`
	Nodes    []*PrivateMetafield     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type PrivateMetafieldEdge struct {
	Cursor string            `json:"cursor"`
	Node   *PrivateMetafield `json:"node"`
}

type PrivateMetafieldInput struct {
	Owner      *string                     `json:"owner"`
	Namespace  string                      `json:"namespace"`
	Key        string                      `json:"key"`
	ValueInput *PrivateMetafieldValueInput `json:"valueInput"`
}

type PrivateMetafieldValueInput struct {
	Value     string                    `json:"value"`
	ValueType PrivateMetafieldValueType `json:"valueType"`
}

type Product struct {
	ID string `json:"id"`
}

func (Product) IsCommentEventEmbed() {}

func (Product) IsMetafieldReference() {}

func (Product) IsEntity() {}

type ProductCategory struct {
	ProductTaxonomyNode *ProductTaxonomyNode `json:"productTaxonomyNode"`
}

type ProductChangeStatusUserError struct {
	Code    *ProductChangeStatusUserErrorCode `json:"code"`
	Field   []string                          `json:"field"`
	Message string                            `json:"message"`
}

func (ProductChangeStatusUserError) IsDisplayableError() {}
func (this ProductChangeStatusUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this ProductChangeStatusUserError) GetMessage() string { return this.Message }

type ProductConnection struct {
	Edges    []*ProductEdge `json:"edges"`
	Nodes    []*Product     `json:"nodes"`
	PageInfo *PageInfo      `json:"pageInfo"`
}

type ProductContextualPricing struct {
	MaxVariantPricing *ProductVariantContextualPricing `json:"maxVariantPricing"`
	MinVariantPricing *ProductVariantContextualPricing `json:"minVariantPricing"`
	PriceRange        *ProductPriceRangeV2             `json:"priceRange"`
}

type ProductEdge struct {
	Cursor string   `json:"cursor"`
	Node   *Product `json:"node"`
}

type ProductPriceRangeV2 struct {
	MaxVariantPrice *MoneyV2 `json:"maxVariantPrice"`
	MinVariantPrice *MoneyV2 `json:"minVariantPrice"`
}

type ProductTaxonomyNode struct {
	FullName string `json:"fullName"`
	ID       string `json:"id"`
	IsLeaf   bool   `json:"isLeaf"`
	IsRoot   bool   `json:"isRoot"`
	Name     string `json:"name"`
}

func (ProductTaxonomyNode) IsNode()            {}
func (this ProductTaxonomyNode) GetID() string { return this.ID }

type ProductVariant struct {
	ID string `json:"id"`
}

func (ProductVariant) IsCommentEventEmbed() {}

func (ProductVariant) IsMetafieldReference() {}

func (ProductVariant) IsEntity() {}

type ProductVariantConnection struct {
	Edges    []*ProductVariantEdge `json:"edges"`
	Nodes    []*ProductVariant     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type ProductVariantContextualPricing struct {
	CompareAtPrice *MoneyV2 `json:"compareAtPrice"`
	Price          *MoneyV2 `json:"price"`
}

type ProductVariantEdge struct {
	Cursor string          `json:"cursor"`
	Node   *ProductVariant `json:"node"`
}

type ProductVariantsBulkCreateUserError struct {
	Code    *ProductVariantsBulkCreateUserErrorCode `json:"code"`
	Field   []string                                `json:"field"`
	Message string                                  `json:"message"`
}

func (ProductVariantsBulkCreateUserError) IsDisplayableError() {}
func (this ProductVariantsBulkCreateUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this ProductVariantsBulkCreateUserError) GetMessage() string { return this.Message }

type ProductVariantsBulkDeleteUserError struct {
	Code    *ProductVariantsBulkDeleteUserErrorCode `json:"code"`
	Field   []string                                `json:"field"`
	Message string                                  `json:"message"`
}

func (ProductVariantsBulkDeleteUserError) IsDisplayableError() {}
func (this ProductVariantsBulkDeleteUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this ProductVariantsBulkDeleteUserError) GetMessage() string { return this.Message }

type ProductVariantsBulkReorderUserError struct {
	Code    *ProductVariantsBulkReorderUserErrorCode `json:"code"`
	Field   []string                                 `json:"field"`
	Message string                                   `json:"message"`
}

func (ProductVariantsBulkReorderUserError) IsDisplayableError() {}
func (this ProductVariantsBulkReorderUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this ProductVariantsBulkReorderUserError) GetMessage() string { return this.Message }

type ProductVariantsBulkUpdateUserError struct {
	Code    *ProductVariantsBulkUpdateUserErrorCode `json:"code"`
	Field   []string                                `json:"field"`
	Message string                                  `json:"message"`
}

func (ProductVariantsBulkUpdateUserError) IsDisplayableError() {}
func (this ProductVariantsBulkUpdateUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this ProductVariantsBulkUpdateUserError) GetMessage() string { return this.Message }

type Publication struct {
	App                      *App                           `json:"app"`
	CollectionPublicationsV3 *ResourcePublicationConnection `json:"collectionPublicationsV3"`
	Collections              *CollectionConnection          `json:"collections"`
	HasCollection            bool                           `json:"hasCollection"`
	ID                       string                         `json:"id"`
	Name                     string                         `json:"name"`
	ProductPublicationsV3    *ResourcePublicationConnection `json:"productPublicationsV3"`
	Products                 *ProductConnection             `json:"products"`
	SupportsFuturePublishing bool                           `json:"supportsFuturePublishing"`
}

func (Publication) IsNode()            {}
func (this Publication) GetID() string { return this.ID }

type PublicationConnection struct {
	Edges    []*PublicationEdge `json:"edges"`
	Nodes    []*Publication     `json:"nodes"`
	PageInfo *PageInfo          `json:"pageInfo"`
}

type PublicationEdge struct {
	Cursor string       `json:"cursor"`
	Node   *Publication `json:"node"`
}

type PublishedTranslation struct {
	Key      string  `json:"key"`
	Locale   string  `json:"locale"`
	MarketID *string `json:"marketId"`
	Value    *string `json:"value"`
}

type PurchasingCompany struct {
	Company  *Company         `json:"company"`
	Contact  *CompanyContact  `json:"contact"`
	Location *CompanyLocation `json:"location"`
}

func (PurchasingCompany) IsPurchasingEntity() {}

type Refund struct {
	CreatedAt        *string                     `json:"createdAt"`
	Duties           []*RefundDuty               `json:"duties"`
	ID               string                      `json:"id"`
	LegacyResourceID string                      `json:"legacyResourceId"`
	Note             *string                     `json:"note"`
	Order            *Order                      `json:"order"`
	RefundLineItems  *RefundLineItemConnection   `json:"refundLineItems"`
	StaffMember      *StaffMember                `json:"staffMember"`
	TotalRefundedSet *MoneyBag                   `json:"totalRefundedSet"`
	Transactions     *OrderTransactionConnection `json:"transactions"`
	UpdatedAt        string                      `json:"updatedAt"`
}

func (Refund) IsLegacyInteroperability()        {}
func (this Refund) GetLegacyResourceID() string { return this.LegacyResourceID }

func (Refund) IsNode()            {}
func (this Refund) GetID() string { return this.ID }

type RefundDuty struct {
	AmountSet    *MoneyBag `json:"amountSet"`
	OriginalDuty *Duty     `json:"originalDuty"`
}

type RefundDutyInput struct {
	DutyID     string                `json:"dutyId"`
	RefundType *RefundDutyRefundType `json:"refundType"`
}

type RefundLineItem struct {
	LineItem    *LineItem                 `json:"lineItem"`
	Location    *Location                 `json:"location"`
	PriceSet    *MoneyBag                 `json:"priceSet"`
	Quantity    int                       `json:"quantity"`
	RestockType RefundLineItemRestockType `json:"restockType"`
	Restocked   bool                      `json:"restocked"`
	SubtotalSet *MoneyBag                 `json:"subtotalSet"`
	TotalTaxSet *MoneyBag                 `json:"totalTaxSet"`
}

type RefundLineItemConnection struct {
	Edges    []*RefundLineItemEdge `json:"edges"`
	Nodes    []*RefundLineItem     `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type RefundLineItemEdge struct {
	Cursor string          `json:"cursor"`
	Node   *RefundLineItem `json:"node"`
}

type RefundLineItemInput struct {
	LineItemID  string                     `json:"lineItemId"`
	Quantity    int                        `json:"quantity"`
	RestockType *RefundLineItemRestockType `json:"restockType"`
	LocationID  *string                    `json:"locationId"`
}

type ResourceAlert struct {
	Actions           []*ResourceAlertAction `json:"actions"`
	Content           string                 `json:"content"`
	DismissibleHandle *string                `json:"dismissibleHandle"`
	Icon              *ResourceAlertIcon     `json:"icon"`
	Severity          ResourceAlertSeverity  `json:"severity"`
	Title             string                 `json:"title"`
}

type ResourceAlertAction struct {
	Primary bool    `json:"primary"`
	Show    *string `json:"show"`
	Title   string  `json:"title"`
	URL     string  `json:"url"`
}

type ResourceFeedback struct {
	Details []*AppFeedback `json:"details"`
	Summary string         `json:"summary"`
}

type ResourceLimit struct {
	Available         bool `json:"available"`
	QuantityAvailable *int `json:"quantityAvailable"`
	QuantityLimit     *int `json:"quantityLimit"`
	QuantityUsed      *int `json:"quantityUsed"`
}

type ResourcePublication struct {
	IsPublished bool         `json:"isPublished"`
	Publication *Publication `json:"publication"`
	PublishDate string       `json:"publishDate"`
	Publishable Publishable  `json:"publishable"`
}

type ResourcePublicationConnection struct {
	Edges    []*ResourcePublicationEdge `json:"edges"`
	Nodes    []*ResourcePublication     `json:"nodes"`
	PageInfo *PageInfo                  `json:"pageInfo"`
}

type ResourcePublicationEdge struct {
	Cursor string               `json:"cursor"`
	Node   *ResourcePublication `json:"node"`
}

type ResourcePublicationV2 struct {
	IsPublished bool         `json:"isPublished"`
	Publication *Publication `json:"publication"`
	PublishDate *string      `json:"publishDate"`
	Publishable Publishable  `json:"publishable"`
}

type ResourcePublicationV2Connection struct {
	Edges    []*ResourcePublicationV2Edge `json:"edges"`
	Nodes    []*ResourcePublicationV2     `json:"nodes"`
	PageInfo *PageInfo                    `json:"pageInfo"`
}

type ResourcePublicationV2Edge struct {
	Cursor string                 `json:"cursor"`
	Node   *ResourcePublicationV2 `json:"node"`
}

type Seo struct {
	Description *string `json:"description"`
	Title       *string `json:"title"`
}

type SEOInput struct {
	Title       *string `json:"title"`
	Description *string `json:"description"`
}

type SaleConnection struct {
	Edges    []*SaleEdge `json:"edges"`
	Nodes    []Sale      `json:"nodes"`
	PageInfo *PageInfo   `json:"pageInfo"`
}

type SaleEdge struct {
	Cursor string `json:"cursor"`
	Node   Sale   `json:"node"`
}

type SaleTax struct {
	Amount  *MoneyBag `json:"amount"`
	ID      string    `json:"id"`
	TaxLine *TaxLine  `json:"taxLine"`
}

type SalesAgreementConnection struct {
	Edges    []*SalesAgreementEdge `json:"edges"`
	Nodes    []SalesAgreement      `json:"nodes"`
	PageInfo *PageInfo             `json:"pageInfo"`
}

type SalesAgreementEdge struct {
	Cursor string         `json:"cursor"`
	Node   SalesAgreement `json:"node"`
}

type SavedSearch struct {
	Filters          []*SearchFilter  `json:"filters"`
	ID               string           `json:"id"`
	LegacyResourceID string           `json:"legacyResourceId"`
	Name             string           `json:"name"`
	Query            string           `json:"query"`
	ResourceType     SearchResultType `json:"resourceType"`
	SearchTerms      string           `json:"searchTerms"`
}

func (SavedSearch) IsLegacyInteroperability()        {}
func (this SavedSearch) GetLegacyResourceID() string { return this.LegacyResourceID }

func (SavedSearch) IsNode()            {}
func (this SavedSearch) GetID() string { return this.ID }

type SavedSearchConnection struct {
	Edges    []*SavedSearchEdge `json:"edges"`
	Nodes    []*SavedSearch     `json:"nodes"`
	PageInfo *PageInfo          `json:"pageInfo"`
}

type SavedSearchEdge struct {
	Cursor string       `json:"cursor"`
	Node   *SavedSearch `json:"node"`
}

type ScriptDiscountApplication struct {
	AllocationMethod DiscountApplicationAllocationMethod `json:"allocationMethod"`
	Index            int                                 `json:"index"`
	TargetSelection  DiscountApplicationTargetSelection  `json:"targetSelection"`
	TargetType       DiscountApplicationTargetType       `json:"targetType"`
	Title            string                              `json:"title"`
	Value            PricingValue                        `json:"value"`
}

func (ScriptDiscountApplication) IsDiscountApplication() {}
func (this ScriptDiscountApplication) GetAllocationMethod() DiscountApplicationAllocationMethod {
	return this.AllocationMethod
}
func (this ScriptDiscountApplication) GetIndex() int { return this.Index }
func (this ScriptDiscountApplication) GetTargetSelection() DiscountApplicationTargetSelection {
	return this.TargetSelection
}
func (this ScriptDiscountApplication) GetTargetType() DiscountApplicationTargetType {
	return this.TargetType
}
func (this ScriptDiscountApplication) GetValue() PricingValue { return this.Value }

type SearchFilter struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type SearchFilterOptions struct {
	ProductAvailability []*FilterOption `json:"productAvailability"`
}

type SearchResult struct {
	Description *string `json:"description"`
	Image       *Image  `json:"image"`
	Reference   Node    `json:"reference"`
	Title       string  `json:"title"`
	URL         string  `json:"url"`
}

type SearchResultConnection struct {
	Edges    []*SearchResultEdge `json:"edges"`
	PageInfo *PageInfo           `json:"pageInfo"`
}

type SearchResultEdge struct {
	Cursor string        `json:"cursor"`
	Node   *SearchResult `json:"node"`
}

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

type SellingPlan struct {
	BillingPolicy   SellingPlanBillingPolicy    `json:"billingPolicy"`
	Category        *SellingPlanCategory        `json:"category"`
	CreatedAt       string                      `json:"createdAt"`
	DeliveryPolicy  SellingPlanDeliveryPolicy   `json:"deliveryPolicy"`
	Description     *string                     `json:"description"`
	ID              string                      `json:"id"`
	InventoryPolicy *SellingPlanInventoryPolicy `json:"inventoryPolicy"`
	Name            string                      `json:"name"`
	Options         []string                    `json:"options"`
	Position        *int                        `json:"position"`
	PricingPolicies []SellingPlanPricingPolicy  `json:"pricingPolicies"`
}

func (SellingPlan) IsNode()            {}
func (this SellingPlan) GetID() string { return this.ID }

type SellingPlanAnchor struct {
	CutoffDay *int                  `json:"cutoffDay"`
	Day       int                   `json:"day"`
	Month     *int                  `json:"month"`
	Type      SellingPlanAnchorType `json:"type"`
}

type SellingPlanCheckoutCharge struct {
	Type  SellingPlanCheckoutChargeType  `json:"type"`
	Value SellingPlanCheckoutChargeValue `json:"value"`
}

type SellingPlanCheckoutChargePercentageValue struct {
	Percentage float64 `json:"percentage"`
}

func (SellingPlanCheckoutChargePercentageValue) IsSellingPlanCheckoutChargeValue() {}

type SellingPlanConnection struct {
	Edges    []*SellingPlanEdge `json:"edges"`
	Nodes    []*SellingPlan     `json:"nodes"`
	PageInfo *PageInfo          `json:"pageInfo"`
}

type SellingPlanEdge struct {
	Cursor string       `json:"cursor"`
	Node   *SellingPlan `json:"node"`
}

type SellingPlanFixedBillingPolicy struct {
	CheckoutCharge                          *SellingPlanCheckoutCharge               `json:"checkoutCharge"`
	RemainingBalanceChargeExactTime         *string                                  `json:"remainingBalanceChargeExactTime"`
	RemainingBalanceChargeTimeAfterCheckout *string                                  `json:"remainingBalanceChargeTimeAfterCheckout"`
	RemainingBalanceChargeTrigger           SellingPlanRemainingBalanceChargeTrigger `json:"remainingBalanceChargeTrigger"`
}

func (SellingPlanFixedBillingPolicy) IsSellingPlanBillingPolicy() {}

type SellingPlanFixedDeliveryPolicy struct {
	Anchors              []*SellingPlanAnchor                            `json:"anchors"`
	Cutoff               *int                                            `json:"cutoff"`
	FulfillmentExactTime *string                                         `json:"fulfillmentExactTime"`
	FulfillmentTrigger   SellingPlanFulfillmentTrigger                   `json:"fulfillmentTrigger"`
	Intent               SellingPlanFixedDeliveryPolicyIntent            `json:"intent"`
	PreAnchorBehavior    SellingPlanFixedDeliveryPolicyPreAnchorBehavior `json:"preAnchorBehavior"`
}

func (SellingPlanFixedDeliveryPolicy) IsSellingPlanDeliveryPolicy() {}

type SellingPlanFixedPricingPolicy struct {
	AdjustmentType  SellingPlanPricingPolicyAdjustmentType  `json:"adjustmentType"`
	AdjustmentValue SellingPlanPricingPolicyAdjustmentValue `json:"adjustmentValue"`
	CreatedAt       string                                  `json:"createdAt"`
}

func (SellingPlanFixedPricingPolicy) IsSellingPlanPricingPolicyBase() {}
func (this SellingPlanFixedPricingPolicy) GetAdjustmentType() SellingPlanPricingPolicyAdjustmentType {
	return this.AdjustmentType
}
func (this SellingPlanFixedPricingPolicy) GetAdjustmentValue() SellingPlanPricingPolicyAdjustmentValue {
	return this.AdjustmentValue
}

func (SellingPlanFixedPricingPolicy) IsSellingPlanPricingPolicy() {}

type SellingPlanGroup struct {
	AppID                    *string                   `json:"appId"`
	AppliesToProduct         bool                      `json:"appliesToProduct"`
	AppliesToProductVariant  bool                      `json:"appliesToProductVariant"`
	AppliesToProductVariants bool                      `json:"appliesToProductVariants"`
	CreatedAt                string                    `json:"createdAt"`
	Description              *string                   `json:"description"`
	ID                       string                    `json:"id"`
	MerchantCode             string                    `json:"merchantCode"`
	Name                     string                    `json:"name"`
	Options                  []string                  `json:"options"`
	Position                 *int                      `json:"position"`
	ProductCount             int                       `json:"productCount"`
	ProductVariantCount      int                       `json:"productVariantCount"`
	ProductVariants          *ProductVariantConnection `json:"productVariants"`
	Products                 *ProductConnection        `json:"products"`
	SellingPlans             *SellingPlanConnection    `json:"sellingPlans"`
	Summary                  *string                   `json:"summary"`
}

func (SellingPlanGroup) IsNode()            {}
func (this SellingPlanGroup) GetID() string { return this.ID }

type SellingPlanGroupConnection struct {
	Edges    []*SellingPlanGroupEdge `json:"edges"`
	Nodes    []*SellingPlanGroup     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type SellingPlanGroupEdge struct {
	Cursor string            `json:"cursor"`
	Node   *SellingPlanGroup `json:"node"`
}

type SellingPlanGroupUserError struct {
	Code    *SellingPlanGroupUserErrorCode `json:"code"`
	Field   []string                       `json:"field"`
	Message string                         `json:"message"`
}

func (SellingPlanGroupUserError) IsDisplayableError() {}
func (this SellingPlanGroupUserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this SellingPlanGroupUserError) GetMessage() string { return this.Message }

type SellingPlanInventoryPolicy struct {
	Reserve SellingPlanReserve `json:"reserve"`
}

type SellingPlanPricingPolicyPercentageValue struct {
	Percentage float64 `json:"percentage"`
}

func (SellingPlanPricingPolicyPercentageValue) IsSellingPlanPricingPolicyAdjustmentValue() {}

type SellingPlanRecurringBillingPolicy struct {
	Anchors       []*SellingPlanAnchor `json:"anchors"`
	CreatedAt     string               `json:"createdAt"`
	Interval      SellingPlanInterval  `json:"interval"`
	IntervalCount int                  `json:"intervalCount"`
	MaxCycles     *int                 `json:"maxCycles"`
	MinCycles     *int                 `json:"minCycles"`
}

func (SellingPlanRecurringBillingPolicy) IsSellingPlanBillingPolicy() {}

type SellingPlanRecurringDeliveryPolicy struct {
	Anchors           []*SellingPlanAnchor                                `json:"anchors"`
	CreatedAt         string                                              `json:"createdAt"`
	Cutoff            *int                                                `json:"cutoff"`
	Intent            SellingPlanRecurringDeliveryPolicyIntent            `json:"intent"`
	Interval          SellingPlanInterval                                 `json:"interval"`
	IntervalCount     int                                                 `json:"intervalCount"`
	PreAnchorBehavior SellingPlanRecurringDeliveryPolicyPreAnchorBehavior `json:"preAnchorBehavior"`
}

func (SellingPlanRecurringDeliveryPolicy) IsSellingPlanDeliveryPolicy() {}

type SellingPlanRecurringPricingPolicy struct {
	AdjustmentType  SellingPlanPricingPolicyAdjustmentType  `json:"adjustmentType"`
	AdjustmentValue SellingPlanPricingPolicyAdjustmentValue `json:"adjustmentValue"`
	AfterCycle      *int                                    `json:"afterCycle"`
	CreatedAt       string                                  `json:"createdAt"`
}

func (SellingPlanRecurringPricingPolicy) IsSellingPlanPricingPolicyBase() {}
func (this SellingPlanRecurringPricingPolicy) GetAdjustmentType() SellingPlanPricingPolicyAdjustmentType {
	return this.AdjustmentType
}
func (this SellingPlanRecurringPricingPolicy) GetAdjustmentValue() SellingPlanPricingPolicyAdjustmentValue {
	return this.AdjustmentValue
}

func (SellingPlanRecurringPricingPolicy) IsSellingPlanPricingPolicy() {}

type ShippingLine struct {
	CarrierIdentifier           *string               `json:"carrierIdentifier"`
	Code                        *string               `json:"code"`
	Custom                      bool                  `json:"custom"`
	DeliveryCategory            *string               `json:"deliveryCategory"`
	DiscountAllocations         []*DiscountAllocation `json:"discountAllocations"`
	DiscountedPriceSet          *MoneyBag             `json:"discountedPriceSet"`
	ID                          *string               `json:"id"`
	OriginalPriceSet            *MoneyBag             `json:"originalPriceSet"`
	Phone                       *string               `json:"phone"`
	RequestedFulfillmentService *FulfillmentService   `json:"requestedFulfillmentService"`
	ShippingRateHandle          *string               `json:"shippingRateHandle"`
	Source                      *string               `json:"source"`
	TaxLines                    []*TaxLine            `json:"taxLines"`
	Title                       string                `json:"title"`
}

type ShippingLineConnection struct {
	Edges    []*ShippingLineEdge `json:"edges"`
	Nodes    []*ShippingLine     `json:"nodes"`
	PageInfo *PageInfo           `json:"pageInfo"`
}

type ShippingLineEdge struct {
	Cursor string        `json:"cursor"`
	Node   *ShippingLine `json:"node"`
}

type ShippingRefund struct {
	AmountSet            *MoneyBag `json:"amountSet"`
	MaximumRefundableSet *MoneyBag `json:"maximumRefundableSet"`
	TaxSet               *MoneyBag `json:"taxSet"`
}

type ShopAlert struct {
	Action      *ShopAlertAction `json:"action"`
	Description string           `json:"description"`
}

type ShopAlertAction struct {
	Title string `json:"title"`
	URL   string `json:"url"`
}

type ShopFeatures struct {
	AvalaraAvatax                          bool                                    `json:"avalaraAvatax"`
	Branding                               ShopBranding                            `json:"branding"`
	Captcha                                bool                                    `json:"captcha"`
	CaptchaExternalDomains                 bool                                    `json:"captchaExternalDomains"`
	DynamicRemarketing                     bool                                    `json:"dynamicRemarketing"`
	EligibleForSubscriptionMigration       bool                                    `json:"eligibleForSubscriptionMigration"`
	EligibleForSubscriptions               bool                                    `json:"eligibleForSubscriptions"`
	GiftCards                              bool                                    `json:"giftCards"`
	HarmonizedSystemCode                   bool                                    `json:"harmonizedSystemCode"`
	InternationalDomains                   bool                                    `json:"internationalDomains"`
	InternationalPriceOverrides            bool                                    `json:"internationalPriceOverrides"`
	InternationalPriceRules                bool                                    `json:"internationalPriceRules"`
	LegacySubscriptionGatewayEnabled       bool                                    `json:"legacySubscriptionGatewayEnabled"`
	LiveView                               bool                                    `json:"liveView"`
	OnboardingVisual                       bool                                    `json:"onboardingVisual"`
	PaypalExpressSubscriptionGatewayStatus PaypalExpressSubscriptionsGatewayStatus `json:"paypalExpressSubscriptionGatewayStatus"`
	Reports                                bool                                    `json:"reports"`
	SellsSubscriptions                     bool                                    `json:"sellsSubscriptions"`
	ShowMetrics                            bool                                    `json:"showMetrics"`
	Storefront                             bool                                    `json:"storefront"`
	UsingShopifyBalance                    bool                                    `json:"usingShopifyBalance"`
}

type ShopPlan struct {
	DisplayName        string `json:"displayName"`
	PartnerDevelopment bool   `json:"partnerDevelopment"`
	ShopifyPlus        bool   `json:"shopifyPlus"`
}

type ShopPolicy struct {
	Body         string                  `json:"body"`
	ID           string                  `json:"id"`
	Translations []*PublishedTranslation `json:"translations"`
	Type         ShopPolicyType          `json:"type"`
	URL          string                  `json:"url"`
}

func (ShopPolicy) IsHasPublishedTranslations() {}
func (this ShopPolicy) GetTranslations() []*PublishedTranslation {
	if this.Translations == nil {
		return nil
	}
	interfaceSlice := make([]*PublishedTranslation, 0, len(this.Translations))
	for _, concrete := range this.Translations {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (ShopPolicy) IsNode()            {}
func (this ShopPolicy) GetID() string { return this.ID }

type ShopResourceLimits struct {
	LocationLimit        int            `json:"locationLimit"`
	MaxProductOptions    int            `json:"maxProductOptions"`
	MaxProductVariants   int            `json:"maxProductVariants"`
	RedirectLimitReached bool           `json:"redirectLimitReached"`
	SkuResourceLimits    *ResourceLimit `json:"skuResourceLimits"`
}

type ShopifyPaymentsExtendedAuthorization struct {
	ExtendedAuthorizationExpiresAt string `json:"extendedAuthorizationExpiresAt"`
	StandardAuthorizationExpiresAt string `json:"standardAuthorizationExpiresAt"`
}

type ShopifyPaymentsRefundSet struct {
	AcquirerReferenceNumber *string `json:"acquirerReferenceNumber"`
}

type ShopifyPaymentsTransactionSet struct {
	ExtendedAuthorizationSet *ShopifyPaymentsExtendedAuthorization `json:"extendedAuthorizationSet"`
	RefundSet                *ShopifyPaymentsRefundSet             `json:"refundSet"`
}

type StaffMember struct {
	Active      bool                    `json:"active"`
	Avatar      *Image                  `json:"avatar"`
	Email       string                  `json:"email"`
	Exists      bool                    `json:"exists"`
	FirstName   *string                 `json:"firstName"`
	ID          string                  `json:"id"`
	Initials    []string                `json:"initials"`
	IsShopOwner bool                    `json:"isShopOwner"`
	LastName    *string                 `json:"lastName"`
	Locale      string                  `json:"locale"`
	Name        string                  `json:"name"`
	Phone       *string                 `json:"phone"`
	PrivateData *StaffMemberPrivateData `json:"privateData"`
}

func (StaffMember) IsNode()            {}
func (this StaffMember) GetID() string { return this.ID }

type StaffMemberConnection struct {
	Edges    []*StaffMemberEdge `json:"edges"`
	Nodes    []*StaffMember     `json:"nodes"`
	PageInfo *PageInfo          `json:"pageInfo"`
}

type StaffMemberEdge struct {
	Cursor string       `json:"cursor"`
	Node   *StaffMember `json:"node"`
}

type StaffMemberPrivateData struct {
	AccountSettingsURL string `json:"accountSettingsUrl"`
	CreatedAt          string `json:"createdAt"`
}

type StandardMetafieldDefinitionTemplate struct {
	Description            *string                          `json:"description"`
	ID                     string                           `json:"id"`
	Key                    string                           `json:"key"`
	Name                   string                           `json:"name"`
	Namespace              string                           `json:"namespace"`
	OwnerTypes             []MetafieldOwnerType             `json:"ownerTypes"`
	Type                   *MetafieldDefinitionType         `json:"type"`
	Validations            []*MetafieldDefinitionValidation `json:"validations"`
	VisibleToStorefrontAPI bool                             `json:"visibleToStorefrontApi"`
}

func (StandardMetafieldDefinitionTemplate) IsNode()            {}
func (this StandardMetafieldDefinitionTemplate) GetID() string { return this.ID }

type StorefrontAccessToken struct {
	AccessScopes []*AccessScope `json:"accessScopes"`
	AccessToken  string         `json:"accessToken"`
	CreatedAt    string         `json:"createdAt"`
	ID           string         `json:"id"`
	Title        string         `json:"title"`
	UpdatedAt    string         `json:"updatedAt"`
}

func (StorefrontAccessToken) IsNode()            {}
func (this StorefrontAccessToken) GetID() string { return this.ID }

type StorefrontAccessTokenConnection struct {
	Edges    []*StorefrontAccessTokenEdge `json:"edges"`
	Nodes    []*StorefrontAccessToken     `json:"nodes"`
	PageInfo *PageInfo                    `json:"pageInfo"`
}

type StorefrontAccessTokenEdge struct {
	Cursor string                 `json:"cursor"`
	Node   *StorefrontAccessToken `json:"node"`
}

type StringConnection struct {
	Edges    []*StringEdge `json:"edges"`
	PageInfo *PageInfo     `json:"pageInfo"`
}

type StringEdge struct {
	Cursor string `json:"cursor"`
	Node   string `json:"node"`
}

type SubscriptionAppliedCodeDiscount struct {
	ID              string                               `json:"id"`
	RedeemCode      string                               `json:"redeemCode"`
	RejectionReason *SubscriptionDiscountRejectionReason `json:"rejectionReason"`
}

func (SubscriptionAppliedCodeDiscount) IsSubscriptionDiscount() {}

type SubscriptionBillingAttempt struct {
	CompletedAt          *string                              `json:"completedAt"`
	CreatedAt            string                               `json:"createdAt"`
	ErrorCode            *SubscriptionBillingAttemptErrorCode `json:"errorCode"`
	ErrorMessage         *string                              `json:"errorMessage"`
	ID                   string                               `json:"id"`
	IdempotencyKey       string                               `json:"idempotencyKey"`
	NextActionURL        *string                              `json:"nextActionUrl"`
	Order                *Order                               `json:"order"`
	OriginTime           *string                              `json:"originTime"`
	Ready                bool                                 `json:"ready"`
	SubscriptionContract *SubscriptionContract                `json:"subscriptionContract"`
}

func (SubscriptionBillingAttempt) IsNode()            {}
func (this SubscriptionBillingAttempt) GetID() string { return this.ID }

type SubscriptionBillingAttemptConnection struct {
	Edges    []*SubscriptionBillingAttemptEdge `json:"edges"`
	Nodes    []*SubscriptionBillingAttempt     `json:"nodes"`
	PageInfo *PageInfo                         `json:"pageInfo"`
}

type SubscriptionBillingAttemptEdge struct {
	Cursor string                      `json:"cursor"`
	Node   *SubscriptionBillingAttempt `json:"node"`
}

type SubscriptionBillingPolicy struct {
	Anchors       []*SellingPlanAnchor `json:"anchors"`
	Interval      SellingPlanInterval  `json:"interval"`
	IntervalCount int                  `json:"intervalCount"`
	MaxCycles     *int                 `json:"maxCycles"`
	MinCycles     *int                 `json:"minCycles"`
}

type SubscriptionContract struct {
	App                   *App                                   `json:"app"`
	AppAdminURL           *string                                `json:"appAdminUrl"`
	BillingAttempts       *SubscriptionBillingAttemptConnection  `json:"billingAttempts"`
	BillingPolicy         *SubscriptionBillingPolicy             `json:"billingPolicy"`
	CreatedAt             string                                 `json:"createdAt"`
	CurrencyCode          CurrencyCode                           `json:"currencyCode"`
	CustomAttributes      []*Attribute                           `json:"customAttributes"`
	Customer              *Customer                              `json:"customer"`
	CustomerPaymentMethod *CustomerPaymentMethod                 `json:"customerPaymentMethod"`
	DeliveryMethod        SubscriptionDeliveryMethod             `json:"deliveryMethod"`
	DeliveryPolicy        *SubscriptionDeliveryPolicy            `json:"deliveryPolicy"`
	DeliveryPrice         *MoneyV2                               `json:"deliveryPrice"`
	Discounts             *SubscriptionManualDiscountConnection  `json:"discounts"`
	ID                    string                                 `json:"id"`
	LastPaymentStatus     *SubscriptionContractLastPaymentStatus `json:"lastPaymentStatus"`
	LineCount             int                                    `json:"lineCount"`
	Lines                 *SubscriptionLineConnection            `json:"lines"`
	NextBillingDate       *string                                `json:"nextBillingDate"`
	Note                  *string                                `json:"note"`
	Orders                *OrderConnection                       `json:"orders"`
	OriginOrder           *Order                                 `json:"originOrder"`
	Status                SubscriptionContractSubscriptionStatus `json:"status"`
	UpdatedAt             string                                 `json:"updatedAt"`
}

func (SubscriptionContract) IsNode()            {}
func (this SubscriptionContract) GetID() string { return this.ID }

func (SubscriptionContract) IsSubscriptionContractBase()        {}
func (this SubscriptionContract) GetApp() *App                  { return this.App }
func (this SubscriptionContract) GetAppAdminURL() *string       { return this.AppAdminURL }
func (this SubscriptionContract) GetCurrencyCode() CurrencyCode { return this.CurrencyCode }
func (this SubscriptionContract) GetCustomAttributes() []*Attribute {
	if this.CustomAttributes == nil {
		return nil
	}
	interfaceSlice := make([]*Attribute, 0, len(this.CustomAttributes))
	for _, concrete := range this.CustomAttributes {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this SubscriptionContract) GetCustomer() *Customer { return this.Customer }
func (this SubscriptionContract) GetCustomerPaymentMethod() *CustomerPaymentMethod {
	return this.CustomerPaymentMethod
}
func (this SubscriptionContract) GetDeliveryMethod() SubscriptionDeliveryMethod {
	return this.DeliveryMethod
}
func (this SubscriptionContract) GetDeliveryPrice() *MoneyV2 { return this.DeliveryPrice }
func (this SubscriptionContract) GetDiscounts() *SubscriptionManualDiscountConnection {
	return this.Discounts
}
func (this SubscriptionContract) GetLineCount() int                     { return this.LineCount }
func (this SubscriptionContract) GetLines() *SubscriptionLineConnection { return this.Lines }
func (this SubscriptionContract) GetNote() *string                      { return this.Note }
func (this SubscriptionContract) GetOrders() *OrderConnection           { return this.Orders }
func (this SubscriptionContract) GetUpdatedAt() string                  { return this.UpdatedAt }

type SubscriptionContractConnection struct {
	Edges    []*SubscriptionContractEdge `json:"edges"`
	Nodes    []*SubscriptionContract     `json:"nodes"`
	PageInfo *PageInfo                   `json:"pageInfo"`
}

type SubscriptionContractEdge struct {
	Cursor string                `json:"cursor"`
	Node   *SubscriptionContract `json:"node"`
}

type SubscriptionCyclePriceAdjustment struct {
	AdjustmentType  SellingPlanPricingPolicyAdjustmentType  `json:"adjustmentType"`
	AdjustmentValue SellingPlanPricingPolicyAdjustmentValue `json:"adjustmentValue"`
	AfterCycle      int                                     `json:"afterCycle"`
	ComputedPrice   *MoneyV2                                `json:"computedPrice"`
}

type SubscriptionDeliveryMethodLocalDelivery struct {
	Address             *SubscriptionMailingAddress                    `json:"address"`
	LocalDeliveryOption *SubscriptionDeliveryMethodLocalDeliveryOption `json:"localDeliveryOption"`
}

func (SubscriptionDeliveryMethodLocalDelivery) IsSubscriptionDeliveryMethod() {}

type SubscriptionDeliveryMethodLocalDeliveryOption struct {
	Code             *string `json:"code"`
	Description      *string `json:"description"`
	Instructions     *string `json:"instructions"`
	Phone            string  `json:"phone"`
	PresentmentTitle *string `json:"presentmentTitle"`
	Title            *string `json:"title"`
}

type SubscriptionDeliveryMethodPickup struct {
	PickupOption *SubscriptionDeliveryMethodPickupOption `json:"pickupOption"`
}

func (SubscriptionDeliveryMethodPickup) IsSubscriptionDeliveryMethod() {}

type SubscriptionDeliveryMethodPickupOption struct {
	Code             *string   `json:"code"`
	Description      *string   `json:"description"`
	Location         *Location `json:"location"`
	PresentmentTitle *string   `json:"presentmentTitle"`
	Title            *string   `json:"title"`
}

type SubscriptionDeliveryMethodShipping struct {
	Address        *SubscriptionMailingAddress               `json:"address"`
	ShippingOption *SubscriptionDeliveryMethodShippingOption `json:"shippingOption"`
}

func (SubscriptionDeliveryMethodShipping) IsSubscriptionDeliveryMethod() {}

type SubscriptionDeliveryMethodShippingOption struct {
	CarrierService   *DeliveryCarrierService `json:"carrierService"`
	Code             *string                 `json:"code"`
	Description      *string                 `json:"description"`
	PresentmentTitle *string                 `json:"presentmentTitle"`
	Title            *string                 `json:"title"`
}

type SubscriptionDeliveryPolicy struct {
	Anchors       []*SellingPlanAnchor `json:"anchors"`
	Interval      SellingPlanInterval  `json:"interval"`
	IntervalCount int                  `json:"intervalCount"`
}

type SubscriptionDiscountAllocation struct {
	Amount   *MoneyV2             `json:"amount"`
	Discount SubscriptionDiscount `json:"discount"`
}

type SubscriptionDiscountEntitledLines struct {
	All   bool                        `json:"all"`
	Lines *SubscriptionLineConnection `json:"lines"`
}

type SubscriptionDiscountFixedAmountValue struct {
	Amount            *MoneyV2 `json:"amount"`
	AppliesOnEachItem bool     `json:"appliesOnEachItem"`
}

func (SubscriptionDiscountFixedAmountValue) IsSubscriptionDiscountValue() {}

type SubscriptionDiscountPercentageValue struct {
	Percentage int `json:"percentage"`
}

func (SubscriptionDiscountPercentageValue) IsSubscriptionDiscountValue() {}

type SubscriptionLine struct {
	CurrentPrice        *MoneyV2                          `json:"currentPrice"`
	CustomAttributes    []*Attribute                      `json:"customAttributes"`
	DiscountAllocations []*SubscriptionDiscountAllocation `json:"discountAllocations"`
	ID                  string                            `json:"id"`
	LineDiscountedPrice *MoneyV2                          `json:"lineDiscountedPrice"`
	PricingPolicy       *SubscriptionPricingPolicy        `json:"pricingPolicy"`
	ProductID           *string                           `json:"productId"`
	Quantity            int                               `json:"quantity"`
	RequiresShipping    bool                              `json:"requiresShipping"`
	SellingPlanID       *string                           `json:"sellingPlanId"`
	SellingPlanName     *string                           `json:"sellingPlanName"`
	Sku                 *string                           `json:"sku"`
	Taxable             bool                              `json:"taxable"`
	Title               string                            `json:"title"`
	VariantID           *string                           `json:"variantId"`
	VariantImage        *Image                            `json:"variantImage"`
	VariantTitle        *string                           `json:"variantTitle"`
}

type SubscriptionLineConnection struct {
	Edges    []*SubscriptionLineEdge `json:"edges"`
	Nodes    []*SubscriptionLine     `json:"nodes"`
	PageInfo *PageInfo               `json:"pageInfo"`
}

type SubscriptionLineEdge struct {
	Cursor string            `json:"cursor"`
	Node   *SubscriptionLine `json:"node"`
}

type SubscriptionMailingAddress struct {
	Address1     *string      `json:"address1"`
	Address2     *string      `json:"address2"`
	City         *string      `json:"city"`
	Company      *string      `json:"company"`
	Country      *string      `json:"country"`
	CountryCode  *CountryCode `json:"countryCode"`
	FirstName    *string      `json:"firstName"`
	LastName     *string      `json:"lastName"`
	Name         *string      `json:"name"`
	Phone        *string      `json:"phone"`
	Province     *string      `json:"province"`
	ProvinceCode *string      `json:"provinceCode"`
	Zip          *string      `json:"zip"`
}

type SubscriptionManualDiscount struct {
	EntitledLines       *SubscriptionDiscountEntitledLines   `json:"entitledLines"`
	ID                  string                               `json:"id"`
	RecurringCycleLimit *int                                 `json:"recurringCycleLimit"`
	RejectionReason     *SubscriptionDiscountRejectionReason `json:"rejectionReason"`
	TargetType          DiscountTargetType                   `json:"targetType"`
	Title               *string                              `json:"title"`
	Type                DiscountType                         `json:"type"`
	UsageCount          int                                  `json:"usageCount"`
	Value               SubscriptionDiscountValue            `json:"value"`
}

func (SubscriptionManualDiscount) IsSubscriptionDiscount() {}

type SubscriptionManualDiscountConnection struct {
	Edges    []*SubscriptionManualDiscountEdge `json:"edges"`
	Nodes    []*SubscriptionManualDiscount     `json:"nodes"`
	PageInfo *PageInfo                         `json:"pageInfo"`
}

type SubscriptionManualDiscountEdge struct {
	Cursor string                      `json:"cursor"`
	Node   *SubscriptionManualDiscount `json:"node"`
}

type SubscriptionPricingPolicy struct {
	BasePrice      *MoneyV2                            `json:"basePrice"`
	CycleDiscounts []*SubscriptionCyclePriceAdjustment `json:"cycleDiscounts"`
}

type SuggestedOrderTransaction struct {
	AccountNumber        *string                       `json:"accountNumber"`
	AmountSet            *MoneyBag                     `json:"amountSet"`
	FormattedGateway     *string                       `json:"formattedGateway"`
	Gateway              *string                       `json:"gateway"`
	Kind                 SuggestedOrderTransactionKind `json:"kind"`
	MaximumRefundableSet *MoneyBag                     `json:"maximumRefundableSet"`
	ParentTransaction    *OrderTransaction             `json:"parentTransaction"`
}

type SuggestedRefund struct {
	AmountSet                  *MoneyBag                    `json:"amountSet"`
	DiscountedSubtotalSet      *MoneyBag                    `json:"discountedSubtotalSet"`
	MaximumRefundableSet       *MoneyBag                    `json:"maximumRefundableSet"`
	RefundDuties               []*RefundDuty                `json:"refundDuties"`
	RefundLineItems            []*RefundLineItem            `json:"refundLineItems"`
	Shipping                   *ShippingRefund              `json:"shipping"`
	SubtotalSet                *MoneyBag                    `json:"subtotalSet"`
	SuggestedTransactions      []*SuggestedOrderTransaction `json:"suggestedTransactions"`
	TotalCartDiscountAmountSet *MoneyBag                    `json:"totalCartDiscountAmountSet"`
	TotalDutiesSet             *MoneyBag                    `json:"totalDutiesSet"`
	TotalTaxSet                *MoneyBag                    `json:"totalTaxSet"`
}

type TaxLine struct {
	ChannelLiable  *bool     `json:"channelLiable"`
	PriceSet       *MoneyBag `json:"priceSet"`
	Rate           *float64  `json:"rate"`
	RatePercentage *float64  `json:"ratePercentage"`
	Title          string    `json:"title"`
}

type TransactionFee struct {
	Amount      *MoneyV2 `json:"amount"`
	FlatFee     *MoneyV2 `json:"flatFee"`
	FlatFeeName *string  `json:"flatFeeName"`
	ID          string   `json:"id"`
	Rate        string   `json:"rate"`
	RateName    *string  `json:"rateName"`
	TaxAmount   *MoneyV2 `json:"taxAmount"`
	Type        string   `json:"type"`
}

func (TransactionFee) IsNode()            {}
func (this TransactionFee) GetID() string { return this.ID }

type TypedAttribute struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type UTMParameters struct {
	Campaign *string `json:"campaign"`
	Content  *string `json:"content"`
	Medium   *string `json:"medium"`
	Source   *string `json:"source"`
	Term     *string `json:"term"`
}

type UserError struct {
	Field   []string `json:"field"`
	Message string   `json:"message"`
}

func (UserError) IsDisplayableError() {}
func (this UserError) GetField() []string {
	if this.Field == nil {
		return nil
	}
	interfaceSlice := make([]string, 0, len(this.Field))
	for _, concrete := range this.Field {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this UserError) GetMessage() string { return this.Message }

type VaultCreditCard struct {
	BillingAddress *CustomerCreditCardBillingAddress `json:"billingAddress"`
	Brand          string                            `json:"brand"`
	Expired        bool                              `json:"expired"`
	ExpiryMonth    int                               `json:"expiryMonth"`
	ExpiryYear     int                               `json:"expiryYear"`
	LastDigits     string                            `json:"lastDigits"`
	Name           string                            `json:"name"`
}

func (VaultCreditCard) IsPaymentInstrument() {}

type VaultPaypalBillingAgreement struct {
	Inactive           bool   `json:"inactive"`
	Name               string `json:"name"`
	PaypalAccountEmail string `json:"paypalAccountEmail"`
}

func (VaultPaypalBillingAgreement) IsPaymentInstrument() {}

type Video struct {
	Alt              *string            `json:"alt"`
	CreatedAt        string             `json:"createdAt"`
	Duration         *int               `json:"duration"`
	FileErrors       []*FileError       `json:"fileErrors"`
	FileStatus       FileStatus         `json:"fileStatus"`
	Filename         string             `json:"filename"`
	ID               string             `json:"id"`
	MediaContentType MediaContentType   `json:"mediaContentType"`
	MediaErrors      []*MediaError      `json:"mediaErrors"`
	MediaWarnings    []*MediaWarning    `json:"mediaWarnings"`
	OriginalSource   *VideoSource       `json:"originalSource"`
	Preview          *MediaPreviewImage `json:"preview"`
	Sources          []*VideoSource     `json:"sources"`
	Status           MediaStatus        `json:"status"`
}

func (Video) IsFile()                   {}
func (this Video) GetAlt() *string      { return this.Alt }
func (this Video) GetCreatedAt() string { return this.CreatedAt }
func (this Video) GetFileErrors() []*FileError {
	if this.FileErrors == nil {
		return nil
	}
	interfaceSlice := make([]*FileError, 0, len(this.FileErrors))
	for _, concrete := range this.FileErrors {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this Video) GetFileStatus() FileStatus      { return this.FileStatus }
func (this Video) GetPreview() *MediaPreviewImage { return this.Preview }

func (Video) IsMedia() {}

func (this Video) GetMediaContentType() MediaContentType { return this.MediaContentType }
func (this Video) GetMediaErrors() []*MediaError {
	if this.MediaErrors == nil {
		return nil
	}
	interfaceSlice := make([]*MediaError, 0, len(this.MediaErrors))
	for _, concrete := range this.MediaErrors {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}
func (this Video) GetMediaWarnings() []*MediaWarning {
	if this.MediaWarnings == nil {
		return nil
	}
	interfaceSlice := make([]*MediaWarning, 0, len(this.MediaWarnings))
	for _, concrete := range this.MediaWarnings {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (this Video) GetStatus() MediaStatus { return this.Status }

func (Video) IsNode()            {}
func (this Video) GetID() string { return this.ID }

func (Video) IsMetafieldReference() {}

type VideoSource struct {
	FileSize *int   `json:"fileSize"`
	Format   string `json:"format"`
	Height   int    `json:"height"`
	MimeType string `json:"mimeType"`
	URL      string `json:"url"`
	Width    int    `json:"width"`
}

type Weight struct {
	Unit  WeightUnit `json:"unit"`
	Value float64    `json:"value"`
}

func (Weight) IsDeliveryConditionCriteria() {}

type AppDeveloperType string

const (
	AppDeveloperTypeShopify  AppDeveloperType = "SHOPIFY"
	AppDeveloperTypePartner  AppDeveloperType = "PARTNER"
	AppDeveloperTypeMerchant AppDeveloperType = "MERCHANT"
	AppDeveloperTypeUnknown  AppDeveloperType = "UNKNOWN"
)

var AllAppDeveloperType = []AppDeveloperType{
	AppDeveloperTypeShopify,
	AppDeveloperTypePartner,
	AppDeveloperTypeMerchant,
	AppDeveloperTypeUnknown,
}

func (e AppDeveloperType) IsValid() bool {
	switch e {
	case AppDeveloperTypeShopify, AppDeveloperTypePartner, AppDeveloperTypeMerchant, AppDeveloperTypeUnknown:
		return true
	}
	return false
}

func (e AppDeveloperType) String() string {
	return string(e)
}

func (e *AppDeveloperType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppDeveloperType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppDeveloperType", str)
	}
	return nil
}

func (e AppDeveloperType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppPricingInterval string

const (
	AppPricingIntervalAnnual      AppPricingInterval = "ANNUAL"
	AppPricingIntervalEvery30Days AppPricingInterval = "EVERY_30_DAYS"
)

var AllAppPricingInterval = []AppPricingInterval{
	AppPricingIntervalAnnual,
	AppPricingIntervalEvery30Days,
}

func (e AppPricingInterval) IsValid() bool {
	switch e {
	case AppPricingIntervalAnnual, AppPricingIntervalEvery30Days:
		return true
	}
	return false
}

func (e AppPricingInterval) String() string {
	return string(e)
}

func (e *AppPricingInterval) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppPricingInterval(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppPricingInterval", str)
	}
	return nil
}

func (e AppPricingInterval) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppPublicCategory string

const (
	AppPublicCategoryPrivate AppPublicCategory = "PRIVATE"
	AppPublicCategoryPublic  AppPublicCategory = "PUBLIC"
	AppPublicCategoryCustom  AppPublicCategory = "CUSTOM"
	AppPublicCategoryOther   AppPublicCategory = "OTHER"
)

var AllAppPublicCategory = []AppPublicCategory{
	AppPublicCategoryPrivate,
	AppPublicCategoryPublic,
	AppPublicCategoryCustom,
	AppPublicCategoryOther,
}

func (e AppPublicCategory) IsValid() bool {
	switch e {
	case AppPublicCategoryPrivate, AppPublicCategoryPublic, AppPublicCategoryCustom, AppPublicCategoryOther:
		return true
	}
	return false
}

func (e AppPublicCategory) String() string {
	return string(e)
}

func (e *AppPublicCategory) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppPublicCategory(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppPublicCategory", str)
	}
	return nil
}

func (e AppPublicCategory) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppPurchaseStatus string

const (
	AppPurchaseStatusActive   AppPurchaseStatus = "ACTIVE"
	AppPurchaseStatusDeclined AppPurchaseStatus = "DECLINED"
	AppPurchaseStatusExpired  AppPurchaseStatus = "EXPIRED"
	AppPurchaseStatusPending  AppPurchaseStatus = "PENDING"
)

var AllAppPurchaseStatus = []AppPurchaseStatus{
	AppPurchaseStatusActive,
	AppPurchaseStatusDeclined,
	AppPurchaseStatusExpired,
	AppPurchaseStatusPending,
}

func (e AppPurchaseStatus) IsValid() bool {
	switch e {
	case AppPurchaseStatusActive, AppPurchaseStatusDeclined, AppPurchaseStatusExpired, AppPurchaseStatusPending:
		return true
	}
	return false
}

func (e AppPurchaseStatus) String() string {
	return string(e)
}

func (e *AppPurchaseStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppPurchaseStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppPurchaseStatus", str)
	}
	return nil
}

func (e AppPurchaseStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppRevenueAttributionRecordSortKeys string

const (
	AppRevenueAttributionRecordSortKeysCreatedAt AppRevenueAttributionRecordSortKeys = "CREATED_AT"
	AppRevenueAttributionRecordSortKeysID        AppRevenueAttributionRecordSortKeys = "ID"
	AppRevenueAttributionRecordSortKeysRelevance AppRevenueAttributionRecordSortKeys = "RELEVANCE"
)

var AllAppRevenueAttributionRecordSortKeys = []AppRevenueAttributionRecordSortKeys{
	AppRevenueAttributionRecordSortKeysCreatedAt,
	AppRevenueAttributionRecordSortKeysID,
	AppRevenueAttributionRecordSortKeysRelevance,
}

func (e AppRevenueAttributionRecordSortKeys) IsValid() bool {
	switch e {
	case AppRevenueAttributionRecordSortKeysCreatedAt, AppRevenueAttributionRecordSortKeysID, AppRevenueAttributionRecordSortKeysRelevance:
		return true
	}
	return false
}

func (e AppRevenueAttributionRecordSortKeys) String() string {
	return string(e)
}

func (e *AppRevenueAttributionRecordSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppRevenueAttributionRecordSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppRevenueAttributionRecordSortKeys", str)
	}
	return nil
}

func (e AppRevenueAttributionRecordSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppRevenueAttributionType string

const (
	AppRevenueAttributionTypeApplicationPurchase     AppRevenueAttributionType = "APPLICATION_PURCHASE"
	AppRevenueAttributionTypeApplicationSubscription AppRevenueAttributionType = "APPLICATION_SUBSCRIPTION"
	AppRevenueAttributionTypeApplicationUsage        AppRevenueAttributionType = "APPLICATION_USAGE"
	AppRevenueAttributionTypeOther                   AppRevenueAttributionType = "OTHER"
)

var AllAppRevenueAttributionType = []AppRevenueAttributionType{
	AppRevenueAttributionTypeApplicationPurchase,
	AppRevenueAttributionTypeApplicationSubscription,
	AppRevenueAttributionTypeApplicationUsage,
	AppRevenueAttributionTypeOther,
}

func (e AppRevenueAttributionType) IsValid() bool {
	switch e {
	case AppRevenueAttributionTypeApplicationPurchase, AppRevenueAttributionTypeApplicationSubscription, AppRevenueAttributionTypeApplicationUsage, AppRevenueAttributionTypeOther:
		return true
	}
	return false
}

func (e AppRevenueAttributionType) String() string {
	return string(e)
}

func (e *AppRevenueAttributionType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppRevenueAttributionType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppRevenueAttributionType", str)
	}
	return nil
}

func (e AppRevenueAttributionType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppSubscriptionSortKeys string

const (
	AppSubscriptionSortKeysCreatedAt AppSubscriptionSortKeys = "CREATED_AT"
	AppSubscriptionSortKeysID        AppSubscriptionSortKeys = "ID"
	AppSubscriptionSortKeysRelevance AppSubscriptionSortKeys = "RELEVANCE"
)

var AllAppSubscriptionSortKeys = []AppSubscriptionSortKeys{
	AppSubscriptionSortKeysCreatedAt,
	AppSubscriptionSortKeysID,
	AppSubscriptionSortKeysRelevance,
}

func (e AppSubscriptionSortKeys) IsValid() bool {
	switch e {
	case AppSubscriptionSortKeysCreatedAt, AppSubscriptionSortKeysID, AppSubscriptionSortKeysRelevance:
		return true
	}
	return false
}

func (e AppSubscriptionSortKeys) String() string {
	return string(e)
}

func (e *AppSubscriptionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppSubscriptionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppSubscriptionSortKeys", str)
	}
	return nil
}

func (e AppSubscriptionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppSubscriptionStatus string

const (
	AppSubscriptionStatusPending   AppSubscriptionStatus = "PENDING"
	AppSubscriptionStatusActive    AppSubscriptionStatus = "ACTIVE"
	AppSubscriptionStatusDeclined  AppSubscriptionStatus = "DECLINED"
	AppSubscriptionStatusExpired   AppSubscriptionStatus = "EXPIRED"
	AppSubscriptionStatusFrozen    AppSubscriptionStatus = "FROZEN"
	AppSubscriptionStatusCancelled AppSubscriptionStatus = "CANCELLED"
)

var AllAppSubscriptionStatus = []AppSubscriptionStatus{
	AppSubscriptionStatusPending,
	AppSubscriptionStatusActive,
	AppSubscriptionStatusDeclined,
	AppSubscriptionStatusExpired,
	AppSubscriptionStatusFrozen,
	AppSubscriptionStatusCancelled,
}

func (e AppSubscriptionStatus) IsValid() bool {
	switch e {
	case AppSubscriptionStatusPending, AppSubscriptionStatusActive, AppSubscriptionStatusDeclined, AppSubscriptionStatusExpired, AppSubscriptionStatusFrozen, AppSubscriptionStatusCancelled:
		return true
	}
	return false
}

func (e AppSubscriptionStatus) String() string {
	return string(e)
}

func (e *AppSubscriptionStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppSubscriptionStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppSubscriptionStatus", str)
	}
	return nil
}

func (e AppSubscriptionStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppTransactionSortKeys string

const (
	AppTransactionSortKeysCreatedAt AppTransactionSortKeys = "CREATED_AT"
	AppTransactionSortKeysID        AppTransactionSortKeys = "ID"
	AppTransactionSortKeysRelevance AppTransactionSortKeys = "RELEVANCE"
)

var AllAppTransactionSortKeys = []AppTransactionSortKeys{
	AppTransactionSortKeysCreatedAt,
	AppTransactionSortKeysID,
	AppTransactionSortKeysRelevance,
}

func (e AppTransactionSortKeys) IsValid() bool {
	switch e {
	case AppTransactionSortKeysCreatedAt, AppTransactionSortKeysID, AppTransactionSortKeysRelevance:
		return true
	}
	return false
}

func (e AppTransactionSortKeys) String() string {
	return string(e)
}

func (e *AppTransactionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppTransactionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppTransactionSortKeys", str)
	}
	return nil
}

func (e AppTransactionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type AppUsageRecordSortKeys string

const (
	AppUsageRecordSortKeysCreatedAt AppUsageRecordSortKeys = "CREATED_AT"
	AppUsageRecordSortKeysID        AppUsageRecordSortKeys = "ID"
	AppUsageRecordSortKeysRelevance AppUsageRecordSortKeys = "RELEVANCE"
)

var AllAppUsageRecordSortKeys = []AppUsageRecordSortKeys{
	AppUsageRecordSortKeysCreatedAt,
	AppUsageRecordSortKeysID,
	AppUsageRecordSortKeysRelevance,
}

func (e AppUsageRecordSortKeys) IsValid() bool {
	switch e {
	case AppUsageRecordSortKeysCreatedAt, AppUsageRecordSortKeysID, AppUsageRecordSortKeysRelevance:
		return true
	}
	return false
}

func (e AppUsageRecordSortKeys) String() string {
	return string(e)
}

func (e *AppUsageRecordSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = AppUsageRecordSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid AppUsageRecordSortKeys", str)
	}
	return nil
}

func (e AppUsageRecordSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CollectionSortKeys string

const (
	CollectionSortKeysTitle     CollectionSortKeys = "TITLE"
	CollectionSortKeysUpdatedAt CollectionSortKeys = "UPDATED_AT"
	CollectionSortKeysID        CollectionSortKeys = "ID"
	CollectionSortKeysRelevance CollectionSortKeys = "RELEVANCE"
)

var AllCollectionSortKeys = []CollectionSortKeys{
	CollectionSortKeysTitle,
	CollectionSortKeysUpdatedAt,
	CollectionSortKeysID,
	CollectionSortKeysRelevance,
}

func (e CollectionSortKeys) IsValid() bool {
	switch e {
	case CollectionSortKeysTitle, CollectionSortKeysUpdatedAt, CollectionSortKeysID, CollectionSortKeysRelevance:
		return true
	}
	return false
}

func (e CollectionSortKeys) String() string {
	return string(e)
}

func (e *CollectionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CollectionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CollectionSortKeys", str)
	}
	return nil
}

func (e CollectionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CollectionSortOrder string

const (
	CollectionSortOrderAlphaAsc    CollectionSortOrder = "ALPHA_ASC"
	CollectionSortOrderAlphaDesc   CollectionSortOrder = "ALPHA_DESC"
	CollectionSortOrderBestSelling CollectionSortOrder = "BEST_SELLING"
	CollectionSortOrderCreated     CollectionSortOrder = "CREATED"
	CollectionSortOrderCreatedDesc CollectionSortOrder = "CREATED_DESC"
	CollectionSortOrderManual      CollectionSortOrder = "MANUAL"
	CollectionSortOrderPriceAsc    CollectionSortOrder = "PRICE_ASC"
	CollectionSortOrderPriceDesc   CollectionSortOrder = "PRICE_DESC"
)

var AllCollectionSortOrder = []CollectionSortOrder{
	CollectionSortOrderAlphaAsc,
	CollectionSortOrderAlphaDesc,
	CollectionSortOrderBestSelling,
	CollectionSortOrderCreated,
	CollectionSortOrderCreatedDesc,
	CollectionSortOrderManual,
	CollectionSortOrderPriceAsc,
	CollectionSortOrderPriceDesc,
}

func (e CollectionSortOrder) IsValid() bool {
	switch e {
	case CollectionSortOrderAlphaAsc, CollectionSortOrderAlphaDesc, CollectionSortOrderBestSelling, CollectionSortOrderCreated, CollectionSortOrderCreatedDesc, CollectionSortOrderManual, CollectionSortOrderPriceAsc, CollectionSortOrderPriceDesc:
		return true
	}
	return false
}

func (e CollectionSortOrder) String() string {
	return string(e)
}

func (e *CollectionSortOrder) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CollectionSortOrder(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CollectionSortOrder", str)
	}
	return nil
}

func (e CollectionSortOrder) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CompanyContactRoleAssignmentSortKeys string

const (
	CompanyContactRoleAssignmentSortKeysCreatedAt    CompanyContactRoleAssignmentSortKeys = "CREATED_AT"
	CompanyContactRoleAssignmentSortKeysUpdatedAt    CompanyContactRoleAssignmentSortKeys = "UPDATED_AT"
	CompanyContactRoleAssignmentSortKeysLocationName CompanyContactRoleAssignmentSortKeys = "LOCATION_NAME"
	CompanyContactRoleAssignmentSortKeysID           CompanyContactRoleAssignmentSortKeys = "ID"
	CompanyContactRoleAssignmentSortKeysRelevance    CompanyContactRoleAssignmentSortKeys = "RELEVANCE"
)

var AllCompanyContactRoleAssignmentSortKeys = []CompanyContactRoleAssignmentSortKeys{
	CompanyContactRoleAssignmentSortKeysCreatedAt,
	CompanyContactRoleAssignmentSortKeysUpdatedAt,
	CompanyContactRoleAssignmentSortKeysLocationName,
	CompanyContactRoleAssignmentSortKeysID,
	CompanyContactRoleAssignmentSortKeysRelevance,
}

func (e CompanyContactRoleAssignmentSortKeys) IsValid() bool {
	switch e {
	case CompanyContactRoleAssignmentSortKeysCreatedAt, CompanyContactRoleAssignmentSortKeysUpdatedAt, CompanyContactRoleAssignmentSortKeysLocationName, CompanyContactRoleAssignmentSortKeysID, CompanyContactRoleAssignmentSortKeysRelevance:
		return true
	}
	return false
}

func (e CompanyContactRoleAssignmentSortKeys) String() string {
	return string(e)
}

func (e *CompanyContactRoleAssignmentSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CompanyContactRoleAssignmentSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CompanyContactRoleAssignmentSortKeys", str)
	}
	return nil
}

func (e CompanyContactRoleAssignmentSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CompanyContactRoleSortKeys string

const (
	CompanyContactRoleSortKeysCreatedAt CompanyContactRoleSortKeys = "CREATED_AT"
	CompanyContactRoleSortKeysUpdatedAt CompanyContactRoleSortKeys = "UPDATED_AT"
	CompanyContactRoleSortKeysID        CompanyContactRoleSortKeys = "ID"
	CompanyContactRoleSortKeysRelevance CompanyContactRoleSortKeys = "RELEVANCE"
)

var AllCompanyContactRoleSortKeys = []CompanyContactRoleSortKeys{
	CompanyContactRoleSortKeysCreatedAt,
	CompanyContactRoleSortKeysUpdatedAt,
	CompanyContactRoleSortKeysID,
	CompanyContactRoleSortKeysRelevance,
}

func (e CompanyContactRoleSortKeys) IsValid() bool {
	switch e {
	case CompanyContactRoleSortKeysCreatedAt, CompanyContactRoleSortKeysUpdatedAt, CompanyContactRoleSortKeysID, CompanyContactRoleSortKeysRelevance:
		return true
	}
	return false
}

func (e CompanyContactRoleSortKeys) String() string {
	return string(e)
}

func (e *CompanyContactRoleSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CompanyContactRoleSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CompanyContactRoleSortKeys", str)
	}
	return nil
}

func (e CompanyContactRoleSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CompanyContactSortKeys string

const (
	CompanyContactSortKeysCreatedAt CompanyContactSortKeys = "CREATED_AT"
	CompanyContactSortKeysUpdatedAt CompanyContactSortKeys = "UPDATED_AT"
	CompanyContactSortKeysTitle     CompanyContactSortKeys = "TITLE"
	CompanyContactSortKeysCompanyID CompanyContactSortKeys = "COMPANY_ID"
	CompanyContactSortKeysName      CompanyContactSortKeys = "NAME"
	CompanyContactSortKeysEmail     CompanyContactSortKeys = "EMAIL"
	CompanyContactSortKeysNameEmail CompanyContactSortKeys = "NAME_EMAIL"
	CompanyContactSortKeysID        CompanyContactSortKeys = "ID"
	CompanyContactSortKeysRelevance CompanyContactSortKeys = "RELEVANCE"
)

var AllCompanyContactSortKeys = []CompanyContactSortKeys{
	CompanyContactSortKeysCreatedAt,
	CompanyContactSortKeysUpdatedAt,
	CompanyContactSortKeysTitle,
	CompanyContactSortKeysCompanyID,
	CompanyContactSortKeysName,
	CompanyContactSortKeysEmail,
	CompanyContactSortKeysNameEmail,
	CompanyContactSortKeysID,
	CompanyContactSortKeysRelevance,
}

func (e CompanyContactSortKeys) IsValid() bool {
	switch e {
	case CompanyContactSortKeysCreatedAt, CompanyContactSortKeysUpdatedAt, CompanyContactSortKeysTitle, CompanyContactSortKeysCompanyID, CompanyContactSortKeysName, CompanyContactSortKeysEmail, CompanyContactSortKeysNameEmail, CompanyContactSortKeysID, CompanyContactSortKeysRelevance:
		return true
	}
	return false
}

func (e CompanyContactSortKeys) String() string {
	return string(e)
}

func (e *CompanyContactSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CompanyContactSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CompanyContactSortKeys", str)
	}
	return nil
}

func (e CompanyContactSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CompanyLocationSortKeys string

const (
	CompanyLocationSortKeysCreatedAt              CompanyLocationSortKeys = "CREATED_AT"
	CompanyLocationSortKeysUpdatedAt              CompanyLocationSortKeys = "UPDATED_AT"
	CompanyLocationSortKeysName                   CompanyLocationSortKeys = "NAME"
	CompanyLocationSortKeysCompanyID              CompanyLocationSortKeys = "COMPANY_ID"
	CompanyLocationSortKeysCompanyAndLocationName CompanyLocationSortKeys = "COMPANY_AND_LOCATION_NAME"
	CompanyLocationSortKeysID                     CompanyLocationSortKeys = "ID"
	CompanyLocationSortKeysRelevance              CompanyLocationSortKeys = "RELEVANCE"
)

var AllCompanyLocationSortKeys = []CompanyLocationSortKeys{
	CompanyLocationSortKeysCreatedAt,
	CompanyLocationSortKeysUpdatedAt,
	CompanyLocationSortKeysName,
	CompanyLocationSortKeysCompanyID,
	CompanyLocationSortKeysCompanyAndLocationName,
	CompanyLocationSortKeysID,
	CompanyLocationSortKeysRelevance,
}

func (e CompanyLocationSortKeys) IsValid() bool {
	switch e {
	case CompanyLocationSortKeysCreatedAt, CompanyLocationSortKeysUpdatedAt, CompanyLocationSortKeysName, CompanyLocationSortKeysCompanyID, CompanyLocationSortKeysCompanyAndLocationName, CompanyLocationSortKeysID, CompanyLocationSortKeysRelevance:
		return true
	}
	return false
}

func (e CompanyLocationSortKeys) String() string {
	return string(e)
}

func (e *CompanyLocationSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CompanyLocationSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CompanyLocationSortKeys", str)
	}
	return nil
}

func (e CompanyLocationSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CountryCode string

const (
	CountryCodeAf CountryCode = "AF"
	CountryCodeAx CountryCode = "AX"
	CountryCodeAl CountryCode = "AL"
	CountryCodeDz CountryCode = "DZ"
	CountryCodeAd CountryCode = "AD"
	CountryCodeAo CountryCode = "AO"
	CountryCodeAi CountryCode = "AI"
	CountryCodeAg CountryCode = "AG"
	CountryCodeAr CountryCode = "AR"
	CountryCodeAm CountryCode = "AM"
	CountryCodeAw CountryCode = "AW"
	CountryCodeAc CountryCode = "AC"
	CountryCodeAu CountryCode = "AU"
	CountryCodeAt CountryCode = "AT"
	CountryCodeAz CountryCode = "AZ"
	CountryCodeBs CountryCode = "BS"
	CountryCodeBh CountryCode = "BH"
	CountryCodeBd CountryCode = "BD"
	CountryCodeBb CountryCode = "BB"
	CountryCodeBy CountryCode = "BY"
	CountryCodeBe CountryCode = "BE"
	CountryCodeBz CountryCode = "BZ"
	CountryCodeBj CountryCode = "BJ"
	CountryCodeBm CountryCode = "BM"
	CountryCodeBt CountryCode = "BT"
	CountryCodeBo CountryCode = "BO"
	CountryCodeBa CountryCode = "BA"
	CountryCodeBw CountryCode = "BW"
	CountryCodeBv CountryCode = "BV"
	CountryCodeBr CountryCode = "BR"
	CountryCodeIo CountryCode = "IO"
	CountryCodeBn CountryCode = "BN"
	CountryCodeBg CountryCode = "BG"
	CountryCodeBf CountryCode = "BF"
	CountryCodeBi CountryCode = "BI"
	CountryCodeKh CountryCode = "KH"
	CountryCodeCa CountryCode = "CA"
	CountryCodeCv CountryCode = "CV"
	CountryCodeBq CountryCode = "BQ"
	CountryCodeKy CountryCode = "KY"
	CountryCodeCf CountryCode = "CF"
	CountryCodeTd CountryCode = "TD"
	CountryCodeCl CountryCode = "CL"
	CountryCodeCn CountryCode = "CN"
	CountryCodeCx CountryCode = "CX"
	CountryCodeCc CountryCode = "CC"
	CountryCodeCo CountryCode = "CO"
	CountryCodeKm CountryCode = "KM"
	CountryCodeCg CountryCode = "CG"
	CountryCodeCd CountryCode = "CD"
	CountryCodeCk CountryCode = "CK"
	CountryCodeCr CountryCode = "CR"
	CountryCodeHr CountryCode = "HR"
	CountryCodeCu CountryCode = "CU"
	CountryCodeCw CountryCode = "CW"
	CountryCodeCy CountryCode = "CY"
	CountryCodeCz CountryCode = "CZ"
	CountryCodeCi CountryCode = "CI"
	CountryCodeDk CountryCode = "DK"
	CountryCodeDj CountryCode = "DJ"
	CountryCodeDm CountryCode = "DM"
	CountryCodeDo CountryCode = "DO"
	CountryCodeEc CountryCode = "EC"
	CountryCodeEg CountryCode = "EG"
	CountryCodeSv CountryCode = "SV"
	CountryCodeGq CountryCode = "GQ"
	CountryCodeEr CountryCode = "ER"
	CountryCodeEe CountryCode = "EE"
	CountryCodeSz CountryCode = "SZ"
	CountryCodeEt CountryCode = "ET"
	CountryCodeFk CountryCode = "FK"
	CountryCodeFo CountryCode = "FO"
	CountryCodeFj CountryCode = "FJ"
	CountryCodeFi CountryCode = "FI"
	CountryCodeFr CountryCode = "FR"
	CountryCodeGf CountryCode = "GF"
	CountryCodePf CountryCode = "PF"
	CountryCodeTf CountryCode = "TF"
	CountryCodeGa CountryCode = "GA"
	CountryCodeGm CountryCode = "GM"
	CountryCodeGe CountryCode = "GE"
	CountryCodeDe CountryCode = "DE"
	CountryCodeGh CountryCode = "GH"
	CountryCodeGi CountryCode = "GI"
	CountryCodeGr CountryCode = "GR"
	CountryCodeGl CountryCode = "GL"
	CountryCodeGd CountryCode = "GD"
	CountryCodeGp CountryCode = "GP"
	CountryCodeGt CountryCode = "GT"
	CountryCodeGg CountryCode = "GG"
	CountryCodeGn CountryCode = "GN"
	CountryCodeGw CountryCode = "GW"
	CountryCodeGy CountryCode = "GY"
	CountryCodeHt CountryCode = "HT"
	CountryCodeHm CountryCode = "HM"
	CountryCodeVa CountryCode = "VA"
	CountryCodeHn CountryCode = "HN"
	CountryCodeHk CountryCode = "HK"
	CountryCodeHu CountryCode = "HU"
	CountryCodeIs CountryCode = "IS"
	CountryCodeIn CountryCode = "IN"
	CountryCodeID CountryCode = "ID"
	CountryCodeIr CountryCode = "IR"
	CountryCodeIq CountryCode = "IQ"
	CountryCodeIe CountryCode = "IE"
	CountryCodeIm CountryCode = "IM"
	CountryCodeIl CountryCode = "IL"
	CountryCodeIt CountryCode = "IT"
	CountryCodeJm CountryCode = "JM"
	CountryCodeJp CountryCode = "JP"
	CountryCodeJe CountryCode = "JE"
	CountryCodeJo CountryCode = "JO"
	CountryCodeKz CountryCode = "KZ"
	CountryCodeKe CountryCode = "KE"
	CountryCodeKi CountryCode = "KI"
	CountryCodeKp CountryCode = "KP"
	CountryCodeXk CountryCode = "XK"
	CountryCodeKw CountryCode = "KW"
	CountryCodeKg CountryCode = "KG"
	CountryCodeLa CountryCode = "LA"
	CountryCodeLv CountryCode = "LV"
	CountryCodeLb CountryCode = "LB"
	CountryCodeLs CountryCode = "LS"
	CountryCodeLr CountryCode = "LR"
	CountryCodeLy CountryCode = "LY"
	CountryCodeLi CountryCode = "LI"
	CountryCodeLt CountryCode = "LT"
	CountryCodeLu CountryCode = "LU"
	CountryCodeMo CountryCode = "MO"
	CountryCodeMg CountryCode = "MG"
	CountryCodeMw CountryCode = "MW"
	CountryCodeMy CountryCode = "MY"
	CountryCodeMv CountryCode = "MV"
	CountryCodeMl CountryCode = "ML"
	CountryCodeMt CountryCode = "MT"
	CountryCodeMq CountryCode = "MQ"
	CountryCodeMr CountryCode = "MR"
	CountryCodeMu CountryCode = "MU"
	CountryCodeYt CountryCode = "YT"
	CountryCodeMx CountryCode = "MX"
	CountryCodeMd CountryCode = "MD"
	CountryCodeMc CountryCode = "MC"
	CountryCodeMn CountryCode = "MN"
	CountryCodeMe CountryCode = "ME"
	CountryCodeMs CountryCode = "MS"
	CountryCodeMa CountryCode = "MA"
	CountryCodeMz CountryCode = "MZ"
	CountryCodeMm CountryCode = "MM"
	CountryCodeNa CountryCode = "NA"
	CountryCodeNr CountryCode = "NR"
	CountryCodeNp CountryCode = "NP"
	CountryCodeNl CountryCode = "NL"
	CountryCodeAn CountryCode = "AN"
	CountryCodeNc CountryCode = "NC"
	CountryCodeNz CountryCode = "NZ"
	CountryCodeNi CountryCode = "NI"
	CountryCodeNe CountryCode = "NE"
	CountryCodeNg CountryCode = "NG"
	CountryCodeNu CountryCode = "NU"
	CountryCodeNf CountryCode = "NF"
	CountryCodeMk CountryCode = "MK"
	CountryCodeNo CountryCode = "NO"
	CountryCodeOm CountryCode = "OM"
	CountryCodePk CountryCode = "PK"
	CountryCodePs CountryCode = "PS"
	CountryCodePa CountryCode = "PA"
	CountryCodePg CountryCode = "PG"
	CountryCodePy CountryCode = "PY"
	CountryCodePe CountryCode = "PE"
	CountryCodePh CountryCode = "PH"
	CountryCodePn CountryCode = "PN"
	CountryCodePl CountryCode = "PL"
	CountryCodePt CountryCode = "PT"
	CountryCodeQa CountryCode = "QA"
	CountryCodeCm CountryCode = "CM"
	CountryCodeRe CountryCode = "RE"
	CountryCodeRo CountryCode = "RO"
	CountryCodeRu CountryCode = "RU"
	CountryCodeRw CountryCode = "RW"
	CountryCodeBl CountryCode = "BL"
	CountryCodeSh CountryCode = "SH"
	CountryCodeKn CountryCode = "KN"
	CountryCodeLc CountryCode = "LC"
	CountryCodeMf CountryCode = "MF"
	CountryCodePm CountryCode = "PM"
	CountryCodeWs CountryCode = "WS"
	CountryCodeSm CountryCode = "SM"
	CountryCodeSt CountryCode = "ST"
	CountryCodeSa CountryCode = "SA"
	CountryCodeSn CountryCode = "SN"
	CountryCodeRs CountryCode = "RS"
	CountryCodeSc CountryCode = "SC"
	CountryCodeSl CountryCode = "SL"
	CountryCodeSg CountryCode = "SG"
	CountryCodeSx CountryCode = "SX"
	CountryCodeSk CountryCode = "SK"
	CountryCodeSi CountryCode = "SI"
	CountryCodeSb CountryCode = "SB"
	CountryCodeSo CountryCode = "SO"
	CountryCodeZa CountryCode = "ZA"
	CountryCodeGs CountryCode = "GS"
	CountryCodeKr CountryCode = "KR"
	CountryCodeSs CountryCode = "SS"
	CountryCodeEs CountryCode = "ES"
	CountryCodeLk CountryCode = "LK"
	CountryCodeVc CountryCode = "VC"
	CountryCodeSd CountryCode = "SD"
	CountryCodeSr CountryCode = "SR"
	CountryCodeSj CountryCode = "SJ"
	CountryCodeSe CountryCode = "SE"
	CountryCodeCh CountryCode = "CH"
	CountryCodeSy CountryCode = "SY"
	CountryCodeTw CountryCode = "TW"
	CountryCodeTj CountryCode = "TJ"
	CountryCodeTz CountryCode = "TZ"
	CountryCodeTh CountryCode = "TH"
	CountryCodeTl CountryCode = "TL"
	CountryCodeTg CountryCode = "TG"
	CountryCodeTk CountryCode = "TK"
	CountryCodeTo CountryCode = "TO"
	CountryCodeTt CountryCode = "TT"
	CountryCodeTa CountryCode = "TA"
	CountryCodeTn CountryCode = "TN"
	CountryCodeTr CountryCode = "TR"
	CountryCodeTm CountryCode = "TM"
	CountryCodeTc CountryCode = "TC"
	CountryCodeTv CountryCode = "TV"
	CountryCodeUg CountryCode = "UG"
	CountryCodeUa CountryCode = "UA"
	CountryCodeAe CountryCode = "AE"
	CountryCodeGb CountryCode = "GB"
	CountryCodeUs CountryCode = "US"
	CountryCodeUm CountryCode = "UM"
	CountryCodeUy CountryCode = "UY"
	CountryCodeUz CountryCode = "UZ"
	CountryCodeVu CountryCode = "VU"
	CountryCodeVe CountryCode = "VE"
	CountryCodeVn CountryCode = "VN"
	CountryCodeVg CountryCode = "VG"
	CountryCodeWf CountryCode = "WF"
	CountryCodeEh CountryCode = "EH"
	CountryCodeYe CountryCode = "YE"
	CountryCodeZm CountryCode = "ZM"
	CountryCodeZw CountryCode = "ZW"
	CountryCodeZz CountryCode = "ZZ"
)

var AllCountryCode = []CountryCode{
	CountryCodeAf,
	CountryCodeAx,
	CountryCodeAl,
	CountryCodeDz,
	CountryCodeAd,
	CountryCodeAo,
	CountryCodeAi,
	CountryCodeAg,
	CountryCodeAr,
	CountryCodeAm,
	CountryCodeAw,
	CountryCodeAc,
	CountryCodeAu,
	CountryCodeAt,
	CountryCodeAz,
	CountryCodeBs,
	CountryCodeBh,
	CountryCodeBd,
	CountryCodeBb,
	CountryCodeBy,
	CountryCodeBe,
	CountryCodeBz,
	CountryCodeBj,
	CountryCodeBm,
	CountryCodeBt,
	CountryCodeBo,
	CountryCodeBa,
	CountryCodeBw,
	CountryCodeBv,
	CountryCodeBr,
	CountryCodeIo,
	CountryCodeBn,
	CountryCodeBg,
	CountryCodeBf,
	CountryCodeBi,
	CountryCodeKh,
	CountryCodeCa,
	CountryCodeCv,
	CountryCodeBq,
	CountryCodeKy,
	CountryCodeCf,
	CountryCodeTd,
	CountryCodeCl,
	CountryCodeCn,
	CountryCodeCx,
	CountryCodeCc,
	CountryCodeCo,
	CountryCodeKm,
	CountryCodeCg,
	CountryCodeCd,
	CountryCodeCk,
	CountryCodeCr,
	CountryCodeHr,
	CountryCodeCu,
	CountryCodeCw,
	CountryCodeCy,
	CountryCodeCz,
	CountryCodeCi,
	CountryCodeDk,
	CountryCodeDj,
	CountryCodeDm,
	CountryCodeDo,
	CountryCodeEc,
	CountryCodeEg,
	CountryCodeSv,
	CountryCodeGq,
	CountryCodeEr,
	CountryCodeEe,
	CountryCodeSz,
	CountryCodeEt,
	CountryCodeFk,
	CountryCodeFo,
	CountryCodeFj,
	CountryCodeFi,
	CountryCodeFr,
	CountryCodeGf,
	CountryCodePf,
	CountryCodeTf,
	CountryCodeGa,
	CountryCodeGm,
	CountryCodeGe,
	CountryCodeDe,
	CountryCodeGh,
	CountryCodeGi,
	CountryCodeGr,
	CountryCodeGl,
	CountryCodeGd,
	CountryCodeGp,
	CountryCodeGt,
	CountryCodeGg,
	CountryCodeGn,
	CountryCodeGw,
	CountryCodeGy,
	CountryCodeHt,
	CountryCodeHm,
	CountryCodeVa,
	CountryCodeHn,
	CountryCodeHk,
	CountryCodeHu,
	CountryCodeIs,
	CountryCodeIn,
	CountryCodeID,
	CountryCodeIr,
	CountryCodeIq,
	CountryCodeIe,
	CountryCodeIm,
	CountryCodeIl,
	CountryCodeIt,
	CountryCodeJm,
	CountryCodeJp,
	CountryCodeJe,
	CountryCodeJo,
	CountryCodeKz,
	CountryCodeKe,
	CountryCodeKi,
	CountryCodeKp,
	CountryCodeXk,
	CountryCodeKw,
	CountryCodeKg,
	CountryCodeLa,
	CountryCodeLv,
	CountryCodeLb,
	CountryCodeLs,
	CountryCodeLr,
	CountryCodeLy,
	CountryCodeLi,
	CountryCodeLt,
	CountryCodeLu,
	CountryCodeMo,
	CountryCodeMg,
	CountryCodeMw,
	CountryCodeMy,
	CountryCodeMv,
	CountryCodeMl,
	CountryCodeMt,
	CountryCodeMq,
	CountryCodeMr,
	CountryCodeMu,
	CountryCodeYt,
	CountryCodeMx,
	CountryCodeMd,
	CountryCodeMc,
	CountryCodeMn,
	CountryCodeMe,
	CountryCodeMs,
	CountryCodeMa,
	CountryCodeMz,
	CountryCodeMm,
	CountryCodeNa,
	CountryCodeNr,
	CountryCodeNp,
	CountryCodeNl,
	CountryCodeAn,
	CountryCodeNc,
	CountryCodeNz,
	CountryCodeNi,
	CountryCodeNe,
	CountryCodeNg,
	CountryCodeNu,
	CountryCodeNf,
	CountryCodeMk,
	CountryCodeNo,
	CountryCodeOm,
	CountryCodePk,
	CountryCodePs,
	CountryCodePa,
	CountryCodePg,
	CountryCodePy,
	CountryCodePe,
	CountryCodePh,
	CountryCodePn,
	CountryCodePl,
	CountryCodePt,
	CountryCodeQa,
	CountryCodeCm,
	CountryCodeRe,
	CountryCodeRo,
	CountryCodeRu,
	CountryCodeRw,
	CountryCodeBl,
	CountryCodeSh,
	CountryCodeKn,
	CountryCodeLc,
	CountryCodeMf,
	CountryCodePm,
	CountryCodeWs,
	CountryCodeSm,
	CountryCodeSt,
	CountryCodeSa,
	CountryCodeSn,
	CountryCodeRs,
	CountryCodeSc,
	CountryCodeSl,
	CountryCodeSg,
	CountryCodeSx,
	CountryCodeSk,
	CountryCodeSi,
	CountryCodeSb,
	CountryCodeSo,
	CountryCodeZa,
	CountryCodeGs,
	CountryCodeKr,
	CountryCodeSs,
	CountryCodeEs,
	CountryCodeLk,
	CountryCodeVc,
	CountryCodeSd,
	CountryCodeSr,
	CountryCodeSj,
	CountryCodeSe,
	CountryCodeCh,
	CountryCodeSy,
	CountryCodeTw,
	CountryCodeTj,
	CountryCodeTz,
	CountryCodeTh,
	CountryCodeTl,
	CountryCodeTg,
	CountryCodeTk,
	CountryCodeTo,
	CountryCodeTt,
	CountryCodeTa,
	CountryCodeTn,
	CountryCodeTr,
	CountryCodeTm,
	CountryCodeTc,
	CountryCodeTv,
	CountryCodeUg,
	CountryCodeUa,
	CountryCodeAe,
	CountryCodeGb,
	CountryCodeUs,
	CountryCodeUm,
	CountryCodeUy,
	CountryCodeUz,
	CountryCodeVu,
	CountryCodeVe,
	CountryCodeVn,
	CountryCodeVg,
	CountryCodeWf,
	CountryCodeEh,
	CountryCodeYe,
	CountryCodeZm,
	CountryCodeZw,
	CountryCodeZz,
}

func (e CountryCode) IsValid() bool {
	switch e {
	case CountryCodeAf, CountryCodeAx, CountryCodeAl, CountryCodeDz, CountryCodeAd, CountryCodeAo, CountryCodeAi, CountryCodeAg, CountryCodeAr, CountryCodeAm, CountryCodeAw, CountryCodeAc, CountryCodeAu, CountryCodeAt, CountryCodeAz, CountryCodeBs, CountryCodeBh, CountryCodeBd, CountryCodeBb, CountryCodeBy, CountryCodeBe, CountryCodeBz, CountryCodeBj, CountryCodeBm, CountryCodeBt, CountryCodeBo, CountryCodeBa, CountryCodeBw, CountryCodeBv, CountryCodeBr, CountryCodeIo, CountryCodeBn, CountryCodeBg, CountryCodeBf, CountryCodeBi, CountryCodeKh, CountryCodeCa, CountryCodeCv, CountryCodeBq, CountryCodeKy, CountryCodeCf, CountryCodeTd, CountryCodeCl, CountryCodeCn, CountryCodeCx, CountryCodeCc, CountryCodeCo, CountryCodeKm, CountryCodeCg, CountryCodeCd, CountryCodeCk, CountryCodeCr, CountryCodeHr, CountryCodeCu, CountryCodeCw, CountryCodeCy, CountryCodeCz, CountryCodeCi, CountryCodeDk, CountryCodeDj, CountryCodeDm, CountryCodeDo, CountryCodeEc, CountryCodeEg, CountryCodeSv, CountryCodeGq, CountryCodeEr, CountryCodeEe, CountryCodeSz, CountryCodeEt, CountryCodeFk, CountryCodeFo, CountryCodeFj, CountryCodeFi, CountryCodeFr, CountryCodeGf, CountryCodePf, CountryCodeTf, CountryCodeGa, CountryCodeGm, CountryCodeGe, CountryCodeDe, CountryCodeGh, CountryCodeGi, CountryCodeGr, CountryCodeGl, CountryCodeGd, CountryCodeGp, CountryCodeGt, CountryCodeGg, CountryCodeGn, CountryCodeGw, CountryCodeGy, CountryCodeHt, CountryCodeHm, CountryCodeVa, CountryCodeHn, CountryCodeHk, CountryCodeHu, CountryCodeIs, CountryCodeIn, CountryCodeID, CountryCodeIr, CountryCodeIq, CountryCodeIe, CountryCodeIm, CountryCodeIl, CountryCodeIt, CountryCodeJm, CountryCodeJp, CountryCodeJe, CountryCodeJo, CountryCodeKz, CountryCodeKe, CountryCodeKi, CountryCodeKp, CountryCodeXk, CountryCodeKw, CountryCodeKg, CountryCodeLa, CountryCodeLv, CountryCodeLb, CountryCodeLs, CountryCodeLr, CountryCodeLy, CountryCodeLi, CountryCodeLt, CountryCodeLu, CountryCodeMo, CountryCodeMg, CountryCodeMw, CountryCodeMy, CountryCodeMv, CountryCodeMl, CountryCodeMt, CountryCodeMq, CountryCodeMr, CountryCodeMu, CountryCodeYt, CountryCodeMx, CountryCodeMd, CountryCodeMc, CountryCodeMn, CountryCodeMe, CountryCodeMs, CountryCodeMa, CountryCodeMz, CountryCodeMm, CountryCodeNa, CountryCodeNr, CountryCodeNp, CountryCodeNl, CountryCodeAn, CountryCodeNc, CountryCodeNz, CountryCodeNi, CountryCodeNe, CountryCodeNg, CountryCodeNu, CountryCodeNf, CountryCodeMk, CountryCodeNo, CountryCodeOm, CountryCodePk, CountryCodePs, CountryCodePa, CountryCodePg, CountryCodePy, CountryCodePe, CountryCodePh, CountryCodePn, CountryCodePl, CountryCodePt, CountryCodeQa, CountryCodeCm, CountryCodeRe, CountryCodeRo, CountryCodeRu, CountryCodeRw, CountryCodeBl, CountryCodeSh, CountryCodeKn, CountryCodeLc, CountryCodeMf, CountryCodePm, CountryCodeWs, CountryCodeSm, CountryCodeSt, CountryCodeSa, CountryCodeSn, CountryCodeRs, CountryCodeSc, CountryCodeSl, CountryCodeSg, CountryCodeSx, CountryCodeSk, CountryCodeSi, CountryCodeSb, CountryCodeSo, CountryCodeZa, CountryCodeGs, CountryCodeKr, CountryCodeSs, CountryCodeEs, CountryCodeLk, CountryCodeVc, CountryCodeSd, CountryCodeSr, CountryCodeSj, CountryCodeSe, CountryCodeCh, CountryCodeSy, CountryCodeTw, CountryCodeTj, CountryCodeTz, CountryCodeTh, CountryCodeTl, CountryCodeTg, CountryCodeTk, CountryCodeTo, CountryCodeTt, CountryCodeTa, CountryCodeTn, CountryCodeTr, CountryCodeTm, CountryCodeTc, CountryCodeTv, CountryCodeUg, CountryCodeUa, CountryCodeAe, CountryCodeGb, CountryCodeUs, CountryCodeUm, CountryCodeUy, CountryCodeUz, CountryCodeVu, CountryCodeVe, CountryCodeVn, CountryCodeVg, CountryCodeWf, CountryCodeEh, CountryCodeYe, CountryCodeZm, CountryCodeZw, CountryCodeZz:
		return true
	}
	return false
}

func (e CountryCode) String() string {
	return string(e)
}

func (e *CountryCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CountryCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CountryCode", str)
	}
	return nil
}

func (e CountryCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CropRegion string

const (
	CropRegionCenter CropRegion = "CENTER"
	CropRegionTop    CropRegion = "TOP"
	CropRegionBottom CropRegion = "BOTTOM"
	CropRegionLeft   CropRegion = "LEFT"
	CropRegionRight  CropRegion = "RIGHT"
)

var AllCropRegion = []CropRegion{
	CropRegionCenter,
	CropRegionTop,
	CropRegionBottom,
	CropRegionLeft,
	CropRegionRight,
}

func (e CropRegion) IsValid() bool {
	switch e {
	case CropRegionCenter, CropRegionTop, CropRegionBottom, CropRegionLeft, CropRegionRight:
		return true
	}
	return false
}

func (e CropRegion) String() string {
	return string(e)
}

func (e *CropRegion) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CropRegion(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CropRegion", str)
	}
	return nil
}

func (e CropRegion) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CurrencyCode string

const (
	CurrencyCodeAed CurrencyCode = "AED"
	CurrencyCodeAfn CurrencyCode = "AFN"
	CurrencyCodeAll CurrencyCode = "ALL"
	CurrencyCodeAmd CurrencyCode = "AMD"
	CurrencyCodeAng CurrencyCode = "ANG"
	CurrencyCodeAoa CurrencyCode = "AOA"
	CurrencyCodeArs CurrencyCode = "ARS"
	CurrencyCodeAud CurrencyCode = "AUD"
	CurrencyCodeAwg CurrencyCode = "AWG"
	CurrencyCodeAzn CurrencyCode = "AZN"
	CurrencyCodeBam CurrencyCode = "BAM"
	CurrencyCodeBbd CurrencyCode = "BBD"
	CurrencyCodeBdt CurrencyCode = "BDT"
	CurrencyCodeBgn CurrencyCode = "BGN"
	CurrencyCodeBhd CurrencyCode = "BHD"
	CurrencyCodeBif CurrencyCode = "BIF"
	CurrencyCodeBmd CurrencyCode = "BMD"
	CurrencyCodeBnd CurrencyCode = "BND"
	CurrencyCodeBob CurrencyCode = "BOB"
	CurrencyCodeBrl CurrencyCode = "BRL"
	CurrencyCodeBsd CurrencyCode = "BSD"
	CurrencyCodeBtn CurrencyCode = "BTN"
	CurrencyCodeBwp CurrencyCode = "BWP"
	CurrencyCodeByn CurrencyCode = "BYN"
	CurrencyCodeBzd CurrencyCode = "BZD"
	CurrencyCodeCad CurrencyCode = "CAD"
	CurrencyCodeCdf CurrencyCode = "CDF"
	CurrencyCodeChf CurrencyCode = "CHF"
	CurrencyCodeClp CurrencyCode = "CLP"
	CurrencyCodeCny CurrencyCode = "CNY"
	CurrencyCodeCop CurrencyCode = "COP"
	CurrencyCodeCrc CurrencyCode = "CRC"
	CurrencyCodeCve CurrencyCode = "CVE"
	CurrencyCodeCzk CurrencyCode = "CZK"
	CurrencyCodeDjf CurrencyCode = "DJF"
	CurrencyCodeDkk CurrencyCode = "DKK"
	CurrencyCodeDop CurrencyCode = "DOP"
	CurrencyCodeDzd CurrencyCode = "DZD"
	CurrencyCodeEgp CurrencyCode = "EGP"
	CurrencyCodeErn CurrencyCode = "ERN"
	CurrencyCodeEtb CurrencyCode = "ETB"
	CurrencyCodeEur CurrencyCode = "EUR"
	CurrencyCodeFjd CurrencyCode = "FJD"
	CurrencyCodeFkp CurrencyCode = "FKP"
	CurrencyCodeGbp CurrencyCode = "GBP"
	CurrencyCodeGel CurrencyCode = "GEL"
	CurrencyCodeGhs CurrencyCode = "GHS"
	CurrencyCodeGip CurrencyCode = "GIP"
	CurrencyCodeGmd CurrencyCode = "GMD"
	CurrencyCodeGnf CurrencyCode = "GNF"
	CurrencyCodeGtq CurrencyCode = "GTQ"
	CurrencyCodeGyd CurrencyCode = "GYD"
	CurrencyCodeHkd CurrencyCode = "HKD"
	CurrencyCodeHnl CurrencyCode = "HNL"
	CurrencyCodeHrk CurrencyCode = "HRK"
	CurrencyCodeHtg CurrencyCode = "HTG"
	CurrencyCodeHuf CurrencyCode = "HUF"
	CurrencyCodeIDR CurrencyCode = "IDR"
	CurrencyCodeIls CurrencyCode = "ILS"
	CurrencyCodeInr CurrencyCode = "INR"
	CurrencyCodeIqd CurrencyCode = "IQD"
	CurrencyCodeIrr CurrencyCode = "IRR"
	CurrencyCodeIsk CurrencyCode = "ISK"
	CurrencyCodeJep CurrencyCode = "JEP"
	CurrencyCodeJmd CurrencyCode = "JMD"
	CurrencyCodeJod CurrencyCode = "JOD"
	CurrencyCodeJpy CurrencyCode = "JPY"
	CurrencyCodeKes CurrencyCode = "KES"
	CurrencyCodeKgs CurrencyCode = "KGS"
	CurrencyCodeKhr CurrencyCode = "KHR"
	CurrencyCodeKid CurrencyCode = "KID"
	CurrencyCodeKmf CurrencyCode = "KMF"
	CurrencyCodeKrw CurrencyCode = "KRW"
	CurrencyCodeKwd CurrencyCode = "KWD"
	CurrencyCodeKyd CurrencyCode = "KYD"
	CurrencyCodeKzt CurrencyCode = "KZT"
	CurrencyCodeLak CurrencyCode = "LAK"
	CurrencyCodeLbp CurrencyCode = "LBP"
	CurrencyCodeLkr CurrencyCode = "LKR"
	CurrencyCodeLrd CurrencyCode = "LRD"
	CurrencyCodeLsl CurrencyCode = "LSL"
	CurrencyCodeLtl CurrencyCode = "LTL"
	CurrencyCodeLvl CurrencyCode = "LVL"
	CurrencyCodeLyd CurrencyCode = "LYD"
	CurrencyCodeMad CurrencyCode = "MAD"
	CurrencyCodeMdl CurrencyCode = "MDL"
	CurrencyCodeMga CurrencyCode = "MGA"
	CurrencyCodeMkd CurrencyCode = "MKD"
	CurrencyCodeMmk CurrencyCode = "MMK"
	CurrencyCodeMnt CurrencyCode = "MNT"
	CurrencyCodeMop CurrencyCode = "MOP"
	CurrencyCodeMru CurrencyCode = "MRU"
	CurrencyCodeMur CurrencyCode = "MUR"
	CurrencyCodeMvr CurrencyCode = "MVR"
	CurrencyCodeMwk CurrencyCode = "MWK"
	CurrencyCodeMxn CurrencyCode = "MXN"
	CurrencyCodeMyr CurrencyCode = "MYR"
	CurrencyCodeMzn CurrencyCode = "MZN"
	CurrencyCodeNad CurrencyCode = "NAD"
	CurrencyCodeNgn CurrencyCode = "NGN"
	CurrencyCodeNio CurrencyCode = "NIO"
	CurrencyCodeNok CurrencyCode = "NOK"
	CurrencyCodeNpr CurrencyCode = "NPR"
	CurrencyCodeNzd CurrencyCode = "NZD"
	CurrencyCodeOmr CurrencyCode = "OMR"
	CurrencyCodePab CurrencyCode = "PAB"
	CurrencyCodePen CurrencyCode = "PEN"
	CurrencyCodePgk CurrencyCode = "PGK"
	CurrencyCodePhp CurrencyCode = "PHP"
	CurrencyCodePkr CurrencyCode = "PKR"
	CurrencyCodePln CurrencyCode = "PLN"
	CurrencyCodePyg CurrencyCode = "PYG"
	CurrencyCodeQar CurrencyCode = "QAR"
	CurrencyCodeRon CurrencyCode = "RON"
	CurrencyCodeRsd CurrencyCode = "RSD"
	CurrencyCodeRub CurrencyCode = "RUB"
	CurrencyCodeRwf CurrencyCode = "RWF"
	CurrencyCodeSar CurrencyCode = "SAR"
	CurrencyCodeSbd CurrencyCode = "SBD"
	CurrencyCodeScr CurrencyCode = "SCR"
	CurrencyCodeSdg CurrencyCode = "SDG"
	CurrencyCodeSek CurrencyCode = "SEK"
	CurrencyCodeSgd CurrencyCode = "SGD"
	CurrencyCodeShp CurrencyCode = "SHP"
	CurrencyCodeSll CurrencyCode = "SLL"
	CurrencyCodeSos CurrencyCode = "SOS"
	CurrencyCodeSrd CurrencyCode = "SRD"
	CurrencyCodeSsp CurrencyCode = "SSP"
	CurrencyCodeStn CurrencyCode = "STN"
	CurrencyCodeSyp CurrencyCode = "SYP"
	CurrencyCodeSzl CurrencyCode = "SZL"
	CurrencyCodeThb CurrencyCode = "THB"
	CurrencyCodeTjs CurrencyCode = "TJS"
	CurrencyCodeTmt CurrencyCode = "TMT"
	CurrencyCodeTnd CurrencyCode = "TND"
	CurrencyCodeTop CurrencyCode = "TOP"
	CurrencyCodeTry CurrencyCode = "TRY"
	CurrencyCodeTtd CurrencyCode = "TTD"
	CurrencyCodeTwd CurrencyCode = "TWD"
	CurrencyCodeTzs CurrencyCode = "TZS"
	CurrencyCodeUah CurrencyCode = "UAH"
	CurrencyCodeUgx CurrencyCode = "UGX"
	CurrencyCodeUsd CurrencyCode = "USD"
	CurrencyCodeUyu CurrencyCode = "UYU"
	CurrencyCodeUzs CurrencyCode = "UZS"
	CurrencyCodeVed CurrencyCode = "VED"
	CurrencyCodeVes CurrencyCode = "VES"
	CurrencyCodeVnd CurrencyCode = "VND"
	CurrencyCodeVuv CurrencyCode = "VUV"
	CurrencyCodeWst CurrencyCode = "WST"
	CurrencyCodeXaf CurrencyCode = "XAF"
	CurrencyCodeXcd CurrencyCode = "XCD"
	CurrencyCodeXof CurrencyCode = "XOF"
	CurrencyCodeXpf CurrencyCode = "XPF"
	CurrencyCodeXxx CurrencyCode = "XXX"
	CurrencyCodeYer CurrencyCode = "YER"
	CurrencyCodeZar CurrencyCode = "ZAR"
	CurrencyCodeZmw CurrencyCode = "ZMW"
	CurrencyCodeByr CurrencyCode = "BYR"
)

var AllCurrencyCode = []CurrencyCode{
	CurrencyCodeAed,
	CurrencyCodeAfn,
	CurrencyCodeAll,
	CurrencyCodeAmd,
	CurrencyCodeAng,
	CurrencyCodeAoa,
	CurrencyCodeArs,
	CurrencyCodeAud,
	CurrencyCodeAwg,
	CurrencyCodeAzn,
	CurrencyCodeBam,
	CurrencyCodeBbd,
	CurrencyCodeBdt,
	CurrencyCodeBgn,
	CurrencyCodeBhd,
	CurrencyCodeBif,
	CurrencyCodeBmd,
	CurrencyCodeBnd,
	CurrencyCodeBob,
	CurrencyCodeBrl,
	CurrencyCodeBsd,
	CurrencyCodeBtn,
	CurrencyCodeBwp,
	CurrencyCodeByn,
	CurrencyCodeBzd,
	CurrencyCodeCad,
	CurrencyCodeCdf,
	CurrencyCodeChf,
	CurrencyCodeClp,
	CurrencyCodeCny,
	CurrencyCodeCop,
	CurrencyCodeCrc,
	CurrencyCodeCve,
	CurrencyCodeCzk,
	CurrencyCodeDjf,
	CurrencyCodeDkk,
	CurrencyCodeDop,
	CurrencyCodeDzd,
	CurrencyCodeEgp,
	CurrencyCodeErn,
	CurrencyCodeEtb,
	CurrencyCodeEur,
	CurrencyCodeFjd,
	CurrencyCodeFkp,
	CurrencyCodeGbp,
	CurrencyCodeGel,
	CurrencyCodeGhs,
	CurrencyCodeGip,
	CurrencyCodeGmd,
	CurrencyCodeGnf,
	CurrencyCodeGtq,
	CurrencyCodeGyd,
	CurrencyCodeHkd,
	CurrencyCodeHnl,
	CurrencyCodeHrk,
	CurrencyCodeHtg,
	CurrencyCodeHuf,
	CurrencyCodeIDR,
	CurrencyCodeIls,
	CurrencyCodeInr,
	CurrencyCodeIqd,
	CurrencyCodeIrr,
	CurrencyCodeIsk,
	CurrencyCodeJep,
	CurrencyCodeJmd,
	CurrencyCodeJod,
	CurrencyCodeJpy,
	CurrencyCodeKes,
	CurrencyCodeKgs,
	CurrencyCodeKhr,
	CurrencyCodeKid,
	CurrencyCodeKmf,
	CurrencyCodeKrw,
	CurrencyCodeKwd,
	CurrencyCodeKyd,
	CurrencyCodeKzt,
	CurrencyCodeLak,
	CurrencyCodeLbp,
	CurrencyCodeLkr,
	CurrencyCodeLrd,
	CurrencyCodeLsl,
	CurrencyCodeLtl,
	CurrencyCodeLvl,
	CurrencyCodeLyd,
	CurrencyCodeMad,
	CurrencyCodeMdl,
	CurrencyCodeMga,
	CurrencyCodeMkd,
	CurrencyCodeMmk,
	CurrencyCodeMnt,
	CurrencyCodeMop,
	CurrencyCodeMru,
	CurrencyCodeMur,
	CurrencyCodeMvr,
	CurrencyCodeMwk,
	CurrencyCodeMxn,
	CurrencyCodeMyr,
	CurrencyCodeMzn,
	CurrencyCodeNad,
	CurrencyCodeNgn,
	CurrencyCodeNio,
	CurrencyCodeNok,
	CurrencyCodeNpr,
	CurrencyCodeNzd,
	CurrencyCodeOmr,
	CurrencyCodePab,
	CurrencyCodePen,
	CurrencyCodePgk,
	CurrencyCodePhp,
	CurrencyCodePkr,
	CurrencyCodePln,
	CurrencyCodePyg,
	CurrencyCodeQar,
	CurrencyCodeRon,
	CurrencyCodeRsd,
	CurrencyCodeRub,
	CurrencyCodeRwf,
	CurrencyCodeSar,
	CurrencyCodeSbd,
	CurrencyCodeScr,
	CurrencyCodeSdg,
	CurrencyCodeSek,
	CurrencyCodeSgd,
	CurrencyCodeShp,
	CurrencyCodeSll,
	CurrencyCodeSos,
	CurrencyCodeSrd,
	CurrencyCodeSsp,
	CurrencyCodeStn,
	CurrencyCodeSyp,
	CurrencyCodeSzl,
	CurrencyCodeThb,
	CurrencyCodeTjs,
	CurrencyCodeTmt,
	CurrencyCodeTnd,
	CurrencyCodeTop,
	CurrencyCodeTry,
	CurrencyCodeTtd,
	CurrencyCodeTwd,
	CurrencyCodeTzs,
	CurrencyCodeUah,
	CurrencyCodeUgx,
	CurrencyCodeUsd,
	CurrencyCodeUyu,
	CurrencyCodeUzs,
	CurrencyCodeVed,
	CurrencyCodeVes,
	CurrencyCodeVnd,
	CurrencyCodeVuv,
	CurrencyCodeWst,
	CurrencyCodeXaf,
	CurrencyCodeXcd,
	CurrencyCodeXof,
	CurrencyCodeXpf,
	CurrencyCodeXxx,
	CurrencyCodeYer,
	CurrencyCodeZar,
	CurrencyCodeZmw,
	CurrencyCodeByr,
}

func (e CurrencyCode) IsValid() bool {
	switch e {
	case CurrencyCodeAed, CurrencyCodeAfn, CurrencyCodeAll, CurrencyCodeAmd, CurrencyCodeAng, CurrencyCodeAoa, CurrencyCodeArs, CurrencyCodeAud, CurrencyCodeAwg, CurrencyCodeAzn, CurrencyCodeBam, CurrencyCodeBbd, CurrencyCodeBdt, CurrencyCodeBgn, CurrencyCodeBhd, CurrencyCodeBif, CurrencyCodeBmd, CurrencyCodeBnd, CurrencyCodeBob, CurrencyCodeBrl, CurrencyCodeBsd, CurrencyCodeBtn, CurrencyCodeBwp, CurrencyCodeByn, CurrencyCodeBzd, CurrencyCodeCad, CurrencyCodeCdf, CurrencyCodeChf, CurrencyCodeClp, CurrencyCodeCny, CurrencyCodeCop, CurrencyCodeCrc, CurrencyCodeCve, CurrencyCodeCzk, CurrencyCodeDjf, CurrencyCodeDkk, CurrencyCodeDop, CurrencyCodeDzd, CurrencyCodeEgp, CurrencyCodeErn, CurrencyCodeEtb, CurrencyCodeEur, CurrencyCodeFjd, CurrencyCodeFkp, CurrencyCodeGbp, CurrencyCodeGel, CurrencyCodeGhs, CurrencyCodeGip, CurrencyCodeGmd, CurrencyCodeGnf, CurrencyCodeGtq, CurrencyCodeGyd, CurrencyCodeHkd, CurrencyCodeHnl, CurrencyCodeHrk, CurrencyCodeHtg, CurrencyCodeHuf, CurrencyCodeIDR, CurrencyCodeIls, CurrencyCodeInr, CurrencyCodeIqd, CurrencyCodeIrr, CurrencyCodeIsk, CurrencyCodeJep, CurrencyCodeJmd, CurrencyCodeJod, CurrencyCodeJpy, CurrencyCodeKes, CurrencyCodeKgs, CurrencyCodeKhr, CurrencyCodeKid, CurrencyCodeKmf, CurrencyCodeKrw, CurrencyCodeKwd, CurrencyCodeKyd, CurrencyCodeKzt, CurrencyCodeLak, CurrencyCodeLbp, CurrencyCodeLkr, CurrencyCodeLrd, CurrencyCodeLsl, CurrencyCodeLtl, CurrencyCodeLvl, CurrencyCodeLyd, CurrencyCodeMad, CurrencyCodeMdl, CurrencyCodeMga, CurrencyCodeMkd, CurrencyCodeMmk, CurrencyCodeMnt, CurrencyCodeMop, CurrencyCodeMru, CurrencyCodeMur, CurrencyCodeMvr, CurrencyCodeMwk, CurrencyCodeMxn, CurrencyCodeMyr, CurrencyCodeMzn, CurrencyCodeNad, CurrencyCodeNgn, CurrencyCodeNio, CurrencyCodeNok, CurrencyCodeNpr, CurrencyCodeNzd, CurrencyCodeOmr, CurrencyCodePab, CurrencyCodePen, CurrencyCodePgk, CurrencyCodePhp, CurrencyCodePkr, CurrencyCodePln, CurrencyCodePyg, CurrencyCodeQar, CurrencyCodeRon, CurrencyCodeRsd, CurrencyCodeRub, CurrencyCodeRwf, CurrencyCodeSar, CurrencyCodeSbd, CurrencyCodeScr, CurrencyCodeSdg, CurrencyCodeSek, CurrencyCodeSgd, CurrencyCodeShp, CurrencyCodeSll, CurrencyCodeSos, CurrencyCodeSrd, CurrencyCodeSsp, CurrencyCodeStn, CurrencyCodeSyp, CurrencyCodeSzl, CurrencyCodeThb, CurrencyCodeTjs, CurrencyCodeTmt, CurrencyCodeTnd, CurrencyCodeTop, CurrencyCodeTry, CurrencyCodeTtd, CurrencyCodeTwd, CurrencyCodeTzs, CurrencyCodeUah, CurrencyCodeUgx, CurrencyCodeUsd, CurrencyCodeUyu, CurrencyCodeUzs, CurrencyCodeVed, CurrencyCodeVes, CurrencyCodeVnd, CurrencyCodeVuv, CurrencyCodeWst, CurrencyCodeXaf, CurrencyCodeXcd, CurrencyCodeXof, CurrencyCodeXpf, CurrencyCodeXxx, CurrencyCodeYer, CurrencyCodeZar, CurrencyCodeZmw, CurrencyCodeByr:
		return true
	}
	return false
}

func (e CurrencyCode) String() string {
	return string(e)
}

func (e *CurrencyCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CurrencyCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CurrencyCode", str)
	}
	return nil
}

func (e CurrencyCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerConsentCollectedFrom string

const (
	CustomerConsentCollectedFromShopify CustomerConsentCollectedFrom = "SHOPIFY"
	CustomerConsentCollectedFromOther   CustomerConsentCollectedFrom = "OTHER"
)

var AllCustomerConsentCollectedFrom = []CustomerConsentCollectedFrom{
	CustomerConsentCollectedFromShopify,
	CustomerConsentCollectedFromOther,
}

func (e CustomerConsentCollectedFrom) IsValid() bool {
	switch e {
	case CustomerConsentCollectedFromShopify, CustomerConsentCollectedFromOther:
		return true
	}
	return false
}

func (e CustomerConsentCollectedFrom) String() string {
	return string(e)
}

func (e *CustomerConsentCollectedFrom) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerConsentCollectedFrom(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerConsentCollectedFrom", str)
	}
	return nil
}

func (e CustomerConsentCollectedFrom) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerEmailMarketingState string

const (
	CustomerEmailMarketingStateNotSubscribed CustomerEmailMarketingState = "NOT_SUBSCRIBED"
	CustomerEmailMarketingStatePending       CustomerEmailMarketingState = "PENDING"
	CustomerEmailMarketingStateSubscribed    CustomerEmailMarketingState = "SUBSCRIBED"
	CustomerEmailMarketingStateUnsubscribed  CustomerEmailMarketingState = "UNSUBSCRIBED"
	CustomerEmailMarketingStateRedacted      CustomerEmailMarketingState = "REDACTED"
	CustomerEmailMarketingStateInvalid       CustomerEmailMarketingState = "INVALID"
)

var AllCustomerEmailMarketingState = []CustomerEmailMarketingState{
	CustomerEmailMarketingStateNotSubscribed,
	CustomerEmailMarketingStatePending,
	CustomerEmailMarketingStateSubscribed,
	CustomerEmailMarketingStateUnsubscribed,
	CustomerEmailMarketingStateRedacted,
	CustomerEmailMarketingStateInvalid,
}

func (e CustomerEmailMarketingState) IsValid() bool {
	switch e {
	case CustomerEmailMarketingStateNotSubscribed, CustomerEmailMarketingStatePending, CustomerEmailMarketingStateSubscribed, CustomerEmailMarketingStateUnsubscribed, CustomerEmailMarketingStateRedacted, CustomerEmailMarketingStateInvalid:
		return true
	}
	return false
}

func (e CustomerEmailMarketingState) String() string {
	return string(e)
}

func (e *CustomerEmailMarketingState) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerEmailMarketingState(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerEmailMarketingState", str)
	}
	return nil
}

func (e CustomerEmailMarketingState) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerMarketingOptInLevel string

const (
	CustomerMarketingOptInLevelSingleOptIn    CustomerMarketingOptInLevel = "SINGLE_OPT_IN"
	CustomerMarketingOptInLevelConfirmedOptIn CustomerMarketingOptInLevel = "CONFIRMED_OPT_IN"
	CustomerMarketingOptInLevelUnknown        CustomerMarketingOptInLevel = "UNKNOWN"
)

var AllCustomerMarketingOptInLevel = []CustomerMarketingOptInLevel{
	CustomerMarketingOptInLevelSingleOptIn,
	CustomerMarketingOptInLevelConfirmedOptIn,
	CustomerMarketingOptInLevelUnknown,
}

func (e CustomerMarketingOptInLevel) IsValid() bool {
	switch e {
	case CustomerMarketingOptInLevelSingleOptIn, CustomerMarketingOptInLevelConfirmedOptIn, CustomerMarketingOptInLevelUnknown:
		return true
	}
	return false
}

func (e CustomerMarketingOptInLevel) String() string {
	return string(e)
}

func (e *CustomerMarketingOptInLevel) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerMarketingOptInLevel(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerMarketingOptInLevel", str)
	}
	return nil
}

func (e CustomerMarketingOptInLevel) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerPaymentMethodRevocationReason string

const (
	CustomerPaymentMethodRevocationReasonAuthorizeNetGatewayNotEnabled       CustomerPaymentMethodRevocationReason = "AUTHORIZE_NET_GATEWAY_NOT_ENABLED"
	CustomerPaymentMethodRevocationReasonAuthorizeNetReturnedNoPaymentMethod CustomerPaymentMethodRevocationReason = "AUTHORIZE_NET_RETURNED_NO_PAYMENT_METHOD"
	CustomerPaymentMethodRevocationReasonFailedToUpdateCreditCard            CustomerPaymentMethodRevocationReason = "FAILED_TO_UPDATE_CREDIT_CARD"
	CustomerPaymentMethodRevocationReasonStripeAPIAuthenticationError        CustomerPaymentMethodRevocationReason = "STRIPE_API_AUTHENTICATION_ERROR"
	CustomerPaymentMethodRevocationReasonStripeAPIInvalidRequestError        CustomerPaymentMethodRevocationReason = "STRIPE_API_INVALID_REQUEST_ERROR"
	CustomerPaymentMethodRevocationReasonStripeGatewayNotEnabled             CustomerPaymentMethodRevocationReason = "STRIPE_GATEWAY_NOT_ENABLED"
	CustomerPaymentMethodRevocationReasonStripeReturnedNoPaymentMethod       CustomerPaymentMethodRevocationReason = "STRIPE_RETURNED_NO_PAYMENT_METHOD"
	CustomerPaymentMethodRevocationReasonStripePaymentMethodNotCard          CustomerPaymentMethodRevocationReason = "STRIPE_PAYMENT_METHOD_NOT_CARD"
	CustomerPaymentMethodRevocationReasonBraintreeAPIAuthenticationError     CustomerPaymentMethodRevocationReason = "BRAINTREE_API_AUTHENTICATION_ERROR"
	CustomerPaymentMethodRevocationReasonBraintreeGatewayNotEnabled          CustomerPaymentMethodRevocationReason = "BRAINTREE_GATEWAY_NOT_ENABLED"
	CustomerPaymentMethodRevocationReasonBraintreeReturnedNoPaymentMethod    CustomerPaymentMethodRevocationReason = "BRAINTREE_RETURNED_NO_PAYMENT_METHOD"
	CustomerPaymentMethodRevocationReasonBraintreePaymentMethodNotCard       CustomerPaymentMethodRevocationReason = "BRAINTREE_PAYMENT_METHOD_NOT_CARD"
	CustomerPaymentMethodRevocationReasonManuallyRevoked                     CustomerPaymentMethodRevocationReason = "MANUALLY_REVOKED"
	CustomerPaymentMethodRevocationReasonMerged                              CustomerPaymentMethodRevocationReason = "MERGED"
)

var AllCustomerPaymentMethodRevocationReason = []CustomerPaymentMethodRevocationReason{
	CustomerPaymentMethodRevocationReasonAuthorizeNetGatewayNotEnabled,
	CustomerPaymentMethodRevocationReasonAuthorizeNetReturnedNoPaymentMethod,
	CustomerPaymentMethodRevocationReasonFailedToUpdateCreditCard,
	CustomerPaymentMethodRevocationReasonStripeAPIAuthenticationError,
	CustomerPaymentMethodRevocationReasonStripeAPIInvalidRequestError,
	CustomerPaymentMethodRevocationReasonStripeGatewayNotEnabled,
	CustomerPaymentMethodRevocationReasonStripeReturnedNoPaymentMethod,
	CustomerPaymentMethodRevocationReasonStripePaymentMethodNotCard,
	CustomerPaymentMethodRevocationReasonBraintreeAPIAuthenticationError,
	CustomerPaymentMethodRevocationReasonBraintreeGatewayNotEnabled,
	CustomerPaymentMethodRevocationReasonBraintreeReturnedNoPaymentMethod,
	CustomerPaymentMethodRevocationReasonBraintreePaymentMethodNotCard,
	CustomerPaymentMethodRevocationReasonManuallyRevoked,
	CustomerPaymentMethodRevocationReasonMerged,
}

func (e CustomerPaymentMethodRevocationReason) IsValid() bool {
	switch e {
	case CustomerPaymentMethodRevocationReasonAuthorizeNetGatewayNotEnabled, CustomerPaymentMethodRevocationReasonAuthorizeNetReturnedNoPaymentMethod, CustomerPaymentMethodRevocationReasonFailedToUpdateCreditCard, CustomerPaymentMethodRevocationReasonStripeAPIAuthenticationError, CustomerPaymentMethodRevocationReasonStripeAPIInvalidRequestError, CustomerPaymentMethodRevocationReasonStripeGatewayNotEnabled, CustomerPaymentMethodRevocationReasonStripeReturnedNoPaymentMethod, CustomerPaymentMethodRevocationReasonStripePaymentMethodNotCard, CustomerPaymentMethodRevocationReasonBraintreeAPIAuthenticationError, CustomerPaymentMethodRevocationReasonBraintreeGatewayNotEnabled, CustomerPaymentMethodRevocationReasonBraintreeReturnedNoPaymentMethod, CustomerPaymentMethodRevocationReasonBraintreePaymentMethodNotCard, CustomerPaymentMethodRevocationReasonManuallyRevoked, CustomerPaymentMethodRevocationReasonMerged:
		return true
	}
	return false
}

func (e CustomerPaymentMethodRevocationReason) String() string {
	return string(e)
}

func (e *CustomerPaymentMethodRevocationReason) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerPaymentMethodRevocationReason(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerPaymentMethodRevocationReason", str)
	}
	return nil
}

func (e CustomerPaymentMethodRevocationReason) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerPredictedSpendTier string

const (
	CustomerPredictedSpendTierHigh   CustomerPredictedSpendTier = "HIGH"
	CustomerPredictedSpendTierMedium CustomerPredictedSpendTier = "MEDIUM"
	CustomerPredictedSpendTierLow    CustomerPredictedSpendTier = "LOW"
)

var AllCustomerPredictedSpendTier = []CustomerPredictedSpendTier{
	CustomerPredictedSpendTierHigh,
	CustomerPredictedSpendTierMedium,
	CustomerPredictedSpendTierLow,
}

func (e CustomerPredictedSpendTier) IsValid() bool {
	switch e {
	case CustomerPredictedSpendTierHigh, CustomerPredictedSpendTierMedium, CustomerPredictedSpendTierLow:
		return true
	}
	return false
}

func (e CustomerPredictedSpendTier) String() string {
	return string(e)
}

func (e *CustomerPredictedSpendTier) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerPredictedSpendTier(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerPredictedSpendTier", str)
	}
	return nil
}

func (e CustomerPredictedSpendTier) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerProductSubscriberStatus string

const (
	CustomerProductSubscriberStatusActive          CustomerProductSubscriberStatus = "ACTIVE"
	CustomerProductSubscriberStatusCancelled       CustomerProductSubscriberStatus = "CANCELLED"
	CustomerProductSubscriberStatusExpired         CustomerProductSubscriberStatus = "EXPIRED"
	CustomerProductSubscriberStatusFailed          CustomerProductSubscriberStatus = "FAILED"
	CustomerProductSubscriberStatusNeverSubscribed CustomerProductSubscriberStatus = "NEVER_SUBSCRIBED"
	CustomerProductSubscriberStatusPaused          CustomerProductSubscriberStatus = "PAUSED"
)

var AllCustomerProductSubscriberStatus = []CustomerProductSubscriberStatus{
	CustomerProductSubscriberStatusActive,
	CustomerProductSubscriberStatusCancelled,
	CustomerProductSubscriberStatusExpired,
	CustomerProductSubscriberStatusFailed,
	CustomerProductSubscriberStatusNeverSubscribed,
	CustomerProductSubscriberStatusPaused,
}

func (e CustomerProductSubscriberStatus) IsValid() bool {
	switch e {
	case CustomerProductSubscriberStatusActive, CustomerProductSubscriberStatusCancelled, CustomerProductSubscriberStatusExpired, CustomerProductSubscriberStatusFailed, CustomerProductSubscriberStatusNeverSubscribed, CustomerProductSubscriberStatusPaused:
		return true
	}
	return false
}

func (e CustomerProductSubscriberStatus) String() string {
	return string(e)
}

func (e *CustomerProductSubscriberStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerProductSubscriberStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerProductSubscriberStatus", str)
	}
	return nil
}

func (e CustomerProductSubscriberStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerSmsMarketingState string

const (
	CustomerSmsMarketingStateNotSubscribed CustomerSmsMarketingState = "NOT_SUBSCRIBED"
	CustomerSmsMarketingStatePending       CustomerSmsMarketingState = "PENDING"
	CustomerSmsMarketingStateSubscribed    CustomerSmsMarketingState = "SUBSCRIBED"
	CustomerSmsMarketingStateUnsubscribed  CustomerSmsMarketingState = "UNSUBSCRIBED"
	CustomerSmsMarketingStateRedacted      CustomerSmsMarketingState = "REDACTED"
)

var AllCustomerSmsMarketingState = []CustomerSmsMarketingState{
	CustomerSmsMarketingStateNotSubscribed,
	CustomerSmsMarketingStatePending,
	CustomerSmsMarketingStateSubscribed,
	CustomerSmsMarketingStateUnsubscribed,
	CustomerSmsMarketingStateRedacted,
}

func (e CustomerSmsMarketingState) IsValid() bool {
	switch e {
	case CustomerSmsMarketingStateNotSubscribed, CustomerSmsMarketingStatePending, CustomerSmsMarketingStateSubscribed, CustomerSmsMarketingStateUnsubscribed, CustomerSmsMarketingStateRedacted:
		return true
	}
	return false
}

func (e CustomerSmsMarketingState) String() string {
	return string(e)
}

func (e *CustomerSmsMarketingState) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerSmsMarketingState(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerSmsMarketingState", str)
	}
	return nil
}

func (e CustomerSmsMarketingState) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type CustomerState string

const (
	CustomerStateDeclined CustomerState = "DECLINED"
	CustomerStateDisabled CustomerState = "DISABLED"
	CustomerStateEnabled  CustomerState = "ENABLED"
	CustomerStateInvited  CustomerState = "INVITED"
)

var AllCustomerState = []CustomerState{
	CustomerStateDeclined,
	CustomerStateDisabled,
	CustomerStateEnabled,
	CustomerStateInvited,
}

func (e CustomerState) IsValid() bool {
	switch e {
	case CustomerStateDeclined, CustomerStateDisabled, CustomerStateEnabled, CustomerStateInvited:
		return true
	}
	return false
}

func (e CustomerState) String() string {
	return string(e)
}

func (e *CustomerState) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = CustomerState(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid CustomerState", str)
	}
	return nil
}

func (e CustomerState) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DeliveryConditionField string

const (
	DeliveryConditionFieldTotalWeight DeliveryConditionField = "TOTAL_WEIGHT"
	DeliveryConditionFieldTotalPrice  DeliveryConditionField = "TOTAL_PRICE"
)

var AllDeliveryConditionField = []DeliveryConditionField{
	DeliveryConditionFieldTotalWeight,
	DeliveryConditionFieldTotalPrice,
}

func (e DeliveryConditionField) IsValid() bool {
	switch e {
	case DeliveryConditionFieldTotalWeight, DeliveryConditionFieldTotalPrice:
		return true
	}
	return false
}

func (e DeliveryConditionField) String() string {
	return string(e)
}

func (e *DeliveryConditionField) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DeliveryConditionField(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DeliveryConditionField", str)
	}
	return nil
}

func (e DeliveryConditionField) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DeliveryConditionOperator string

const (
	DeliveryConditionOperatorGreaterThanOrEqualTo DeliveryConditionOperator = "GREATER_THAN_OR_EQUAL_TO"
	DeliveryConditionOperatorLessThanOrEqualTo    DeliveryConditionOperator = "LESS_THAN_OR_EQUAL_TO"
)

var AllDeliveryConditionOperator = []DeliveryConditionOperator{
	DeliveryConditionOperatorGreaterThanOrEqualTo,
	DeliveryConditionOperatorLessThanOrEqualTo,
}

func (e DeliveryConditionOperator) IsValid() bool {
	switch e {
	case DeliveryConditionOperatorGreaterThanOrEqualTo, DeliveryConditionOperatorLessThanOrEqualTo:
		return true
	}
	return false
}

func (e DeliveryConditionOperator) String() string {
	return string(e)
}

func (e *DeliveryConditionOperator) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DeliveryConditionOperator(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DeliveryConditionOperator", str)
	}
	return nil
}

func (e DeliveryConditionOperator) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DeliveryMethodDefinitionType string

const (
	DeliveryMethodDefinitionTypeMerchant    DeliveryMethodDefinitionType = "MERCHANT"
	DeliveryMethodDefinitionTypeParticipant DeliveryMethodDefinitionType = "PARTICIPANT"
)

var AllDeliveryMethodDefinitionType = []DeliveryMethodDefinitionType{
	DeliveryMethodDefinitionTypeMerchant,
	DeliveryMethodDefinitionTypeParticipant,
}

func (e DeliveryMethodDefinitionType) IsValid() bool {
	switch e {
	case DeliveryMethodDefinitionTypeMerchant, DeliveryMethodDefinitionTypeParticipant:
		return true
	}
	return false
}

func (e DeliveryMethodDefinitionType) String() string {
	return string(e)
}

func (e *DeliveryMethodDefinitionType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DeliveryMethodDefinitionType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DeliveryMethodDefinitionType", str)
	}
	return nil
}

func (e DeliveryMethodDefinitionType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DeliveryMethodType string

const (
	DeliveryMethodTypeShipping DeliveryMethodType = "SHIPPING"
	DeliveryMethodTypePickUp   DeliveryMethodType = "PICK_UP"
	DeliveryMethodTypeNone     DeliveryMethodType = "NONE"
	DeliveryMethodTypeRetail   DeliveryMethodType = "RETAIL"
	DeliveryMethodTypeLocal    DeliveryMethodType = "LOCAL"
)

var AllDeliveryMethodType = []DeliveryMethodType{
	DeliveryMethodTypeShipping,
	DeliveryMethodTypePickUp,
	DeliveryMethodTypeNone,
	DeliveryMethodTypeRetail,
	DeliveryMethodTypeLocal,
}

func (e DeliveryMethodType) IsValid() bool {
	switch e {
	case DeliveryMethodTypeShipping, DeliveryMethodTypePickUp, DeliveryMethodTypeNone, DeliveryMethodTypeRetail, DeliveryMethodTypeLocal:
		return true
	}
	return false
}

func (e DeliveryMethodType) String() string {
	return string(e)
}

func (e *DeliveryMethodType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DeliveryMethodType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DeliveryMethodType", str)
	}
	return nil
}

func (e DeliveryMethodType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DigitalWallet string

const (
	DigitalWalletApplePay   DigitalWallet = "APPLE_PAY"
	DigitalWalletAndroidPay DigitalWallet = "ANDROID_PAY"
	DigitalWalletGooglePay  DigitalWallet = "GOOGLE_PAY"
	DigitalWalletShopifyPay DigitalWallet = "SHOPIFY_PAY"
)

var AllDigitalWallet = []DigitalWallet{
	DigitalWalletApplePay,
	DigitalWalletAndroidPay,
	DigitalWalletGooglePay,
	DigitalWalletShopifyPay,
}

func (e DigitalWallet) IsValid() bool {
	switch e {
	case DigitalWalletApplePay, DigitalWalletAndroidPay, DigitalWalletGooglePay, DigitalWalletShopifyPay:
		return true
	}
	return false
}

func (e DigitalWallet) String() string {
	return string(e)
}

func (e *DigitalWallet) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DigitalWallet(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DigitalWallet", str)
	}
	return nil
}

func (e DigitalWallet) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DiscountApplicationAllocationMethod string

const (
	DiscountApplicationAllocationMethodAcross DiscountApplicationAllocationMethod = "ACROSS"
	DiscountApplicationAllocationMethodEach   DiscountApplicationAllocationMethod = "EACH"
)

var AllDiscountApplicationAllocationMethod = []DiscountApplicationAllocationMethod{
	DiscountApplicationAllocationMethodAcross,
	DiscountApplicationAllocationMethodEach,
}

func (e DiscountApplicationAllocationMethod) IsValid() bool {
	switch e {
	case DiscountApplicationAllocationMethodAcross, DiscountApplicationAllocationMethodEach:
		return true
	}
	return false
}

func (e DiscountApplicationAllocationMethod) String() string {
	return string(e)
}

func (e *DiscountApplicationAllocationMethod) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DiscountApplicationAllocationMethod(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DiscountApplicationAllocationMethod", str)
	}
	return nil
}

func (e DiscountApplicationAllocationMethod) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DiscountApplicationTargetSelection string

const (
	DiscountApplicationTargetSelectionAll      DiscountApplicationTargetSelection = "ALL"
	DiscountApplicationTargetSelectionEntitled DiscountApplicationTargetSelection = "ENTITLED"
	DiscountApplicationTargetSelectionExplicit DiscountApplicationTargetSelection = "EXPLICIT"
)

var AllDiscountApplicationTargetSelection = []DiscountApplicationTargetSelection{
	DiscountApplicationTargetSelectionAll,
	DiscountApplicationTargetSelectionEntitled,
	DiscountApplicationTargetSelectionExplicit,
}

func (e DiscountApplicationTargetSelection) IsValid() bool {
	switch e {
	case DiscountApplicationTargetSelectionAll, DiscountApplicationTargetSelectionEntitled, DiscountApplicationTargetSelectionExplicit:
		return true
	}
	return false
}

func (e DiscountApplicationTargetSelection) String() string {
	return string(e)
}

func (e *DiscountApplicationTargetSelection) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DiscountApplicationTargetSelection(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DiscountApplicationTargetSelection", str)
	}
	return nil
}

func (e DiscountApplicationTargetSelection) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DiscountApplicationTargetType string

const (
	DiscountApplicationTargetTypeLineItem     DiscountApplicationTargetType = "LINE_ITEM"
	DiscountApplicationTargetTypeShippingLine DiscountApplicationTargetType = "SHIPPING_LINE"
)

var AllDiscountApplicationTargetType = []DiscountApplicationTargetType{
	DiscountApplicationTargetTypeLineItem,
	DiscountApplicationTargetTypeShippingLine,
}

func (e DiscountApplicationTargetType) IsValid() bool {
	switch e {
	case DiscountApplicationTargetTypeLineItem, DiscountApplicationTargetTypeShippingLine:
		return true
	}
	return false
}

func (e DiscountApplicationTargetType) String() string {
	return string(e)
}

func (e *DiscountApplicationTargetType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DiscountApplicationTargetType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DiscountApplicationTargetType", str)
	}
	return nil
}

func (e DiscountApplicationTargetType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DiscountTargetType string

const (
	DiscountTargetTypeLineItem     DiscountTargetType = "LINE_ITEM"
	DiscountTargetTypeShippingLine DiscountTargetType = "SHIPPING_LINE"
)

var AllDiscountTargetType = []DiscountTargetType{
	DiscountTargetTypeLineItem,
	DiscountTargetTypeShippingLine,
}

func (e DiscountTargetType) IsValid() bool {
	switch e {
	case DiscountTargetTypeLineItem, DiscountTargetTypeShippingLine:
		return true
	}
	return false
}

func (e DiscountTargetType) String() string {
	return string(e)
}

func (e *DiscountTargetType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DiscountTargetType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DiscountTargetType", str)
	}
	return nil
}

func (e DiscountTargetType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DiscountType string

const (
	DiscountTypeManual       DiscountType = "MANUAL"
	DiscountTypeCodeDiscount DiscountType = "CODE_DISCOUNT"
)

var AllDiscountType = []DiscountType{
	DiscountTypeManual,
	DiscountTypeCodeDiscount,
}

func (e DiscountType) IsValid() bool {
	switch e {
	case DiscountTypeManual, DiscountTypeCodeDiscount:
		return true
	}
	return false
}

func (e DiscountType) String() string {
	return string(e)
}

func (e *DiscountType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DiscountType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DiscountType", str)
	}
	return nil
}

func (e DiscountType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DisputeStatus string

const (
	DisputeStatusNeedsResponse  DisputeStatus = "NEEDS_RESPONSE"
	DisputeStatusUnderReview    DisputeStatus = "UNDER_REVIEW"
	DisputeStatusChargeRefunded DisputeStatus = "CHARGE_REFUNDED"
	DisputeStatusAccepted       DisputeStatus = "ACCEPTED"
	DisputeStatusWon            DisputeStatus = "WON"
	DisputeStatusLost           DisputeStatus = "LOST"
)

var AllDisputeStatus = []DisputeStatus{
	DisputeStatusNeedsResponse,
	DisputeStatusUnderReview,
	DisputeStatusChargeRefunded,
	DisputeStatusAccepted,
	DisputeStatusWon,
	DisputeStatusLost,
}

func (e DisputeStatus) IsValid() bool {
	switch e {
	case DisputeStatusNeedsResponse, DisputeStatusUnderReview, DisputeStatusChargeRefunded, DisputeStatusAccepted, DisputeStatusWon, DisputeStatusLost:
		return true
	}
	return false
}

func (e DisputeStatus) String() string {
	return string(e)
}

func (e *DisputeStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DisputeStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DisputeStatus", str)
	}
	return nil
}

func (e DisputeStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DisputeType string

const (
	DisputeTypeChargeback DisputeType = "CHARGEBACK"
	DisputeTypeInquiry    DisputeType = "INQUIRY"
)

var AllDisputeType = []DisputeType{
	DisputeTypeChargeback,
	DisputeTypeInquiry,
}

func (e DisputeType) IsValid() bool {
	switch e {
	case DisputeTypeChargeback, DisputeTypeInquiry:
		return true
	}
	return false
}

func (e DisputeType) String() string {
	return string(e)
}

func (e *DisputeType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DisputeType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DisputeType", str)
	}
	return nil
}

func (e DisputeType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DraftOrderAppliedDiscountType string

const (
	DraftOrderAppliedDiscountTypeFixedAmount DraftOrderAppliedDiscountType = "FIXED_AMOUNT"
	DraftOrderAppliedDiscountTypePercentage  DraftOrderAppliedDiscountType = "PERCENTAGE"
)

var AllDraftOrderAppliedDiscountType = []DraftOrderAppliedDiscountType{
	DraftOrderAppliedDiscountTypeFixedAmount,
	DraftOrderAppliedDiscountTypePercentage,
}

func (e DraftOrderAppliedDiscountType) IsValid() bool {
	switch e {
	case DraftOrderAppliedDiscountTypeFixedAmount, DraftOrderAppliedDiscountTypePercentage:
		return true
	}
	return false
}

func (e DraftOrderAppliedDiscountType) String() string {
	return string(e)
}

func (e *DraftOrderAppliedDiscountType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DraftOrderAppliedDiscountType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DraftOrderAppliedDiscountType", str)
	}
	return nil
}

func (e DraftOrderAppliedDiscountType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DraftOrderSortKeys string

const (
	DraftOrderSortKeysNumber       DraftOrderSortKeys = "NUMBER"
	DraftOrderSortKeysUpdatedAt    DraftOrderSortKeys = "UPDATED_AT"
	DraftOrderSortKeysStatus       DraftOrderSortKeys = "STATUS"
	DraftOrderSortKeysTotalPrice   DraftOrderSortKeys = "TOTAL_PRICE"
	DraftOrderSortKeysCustomerName DraftOrderSortKeys = "CUSTOMER_NAME"
	DraftOrderSortKeysID           DraftOrderSortKeys = "ID"
	DraftOrderSortKeysRelevance    DraftOrderSortKeys = "RELEVANCE"
)

var AllDraftOrderSortKeys = []DraftOrderSortKeys{
	DraftOrderSortKeysNumber,
	DraftOrderSortKeysUpdatedAt,
	DraftOrderSortKeysStatus,
	DraftOrderSortKeysTotalPrice,
	DraftOrderSortKeysCustomerName,
	DraftOrderSortKeysID,
	DraftOrderSortKeysRelevance,
}

func (e DraftOrderSortKeys) IsValid() bool {
	switch e {
	case DraftOrderSortKeysNumber, DraftOrderSortKeysUpdatedAt, DraftOrderSortKeysStatus, DraftOrderSortKeysTotalPrice, DraftOrderSortKeysCustomerName, DraftOrderSortKeysID, DraftOrderSortKeysRelevance:
		return true
	}
	return false
}

func (e DraftOrderSortKeys) String() string {
	return string(e)
}

func (e *DraftOrderSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DraftOrderSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DraftOrderSortKeys", str)
	}
	return nil
}

func (e DraftOrderSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type DraftOrderStatus string

const (
	DraftOrderStatusCompleted   DraftOrderStatus = "COMPLETED"
	DraftOrderStatusInvoiceSent DraftOrderStatus = "INVOICE_SENT"
	DraftOrderStatusOpen        DraftOrderStatus = "OPEN"
)

var AllDraftOrderStatus = []DraftOrderStatus{
	DraftOrderStatusCompleted,
	DraftOrderStatusInvoiceSent,
	DraftOrderStatusOpen,
}

func (e DraftOrderStatus) IsValid() bool {
	switch e {
	case DraftOrderStatusCompleted, DraftOrderStatusInvoiceSent, DraftOrderStatusOpen:
		return true
	}
	return false
}

func (e DraftOrderStatus) String() string {
	return string(e)
}

func (e *DraftOrderStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = DraftOrderStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid DraftOrderStatus", str)
	}
	return nil
}

func (e DraftOrderStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type EventSortKeys string

const (
	EventSortKeysCreatedAt EventSortKeys = "CREATED_AT"
	EventSortKeysID        EventSortKeys = "ID"
	EventSortKeysRelevance EventSortKeys = "RELEVANCE"
)

var AllEventSortKeys = []EventSortKeys{
	EventSortKeysCreatedAt,
	EventSortKeysID,
	EventSortKeysRelevance,
}

func (e EventSortKeys) IsValid() bool {
	switch e {
	case EventSortKeysCreatedAt, EventSortKeysID, EventSortKeysRelevance:
		return true
	}
	return false
}

func (e EventSortKeys) String() string {
	return string(e)
}

func (e *EventSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = EventSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid EventSortKeys", str)
	}
	return nil
}

func (e EventSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FileErrorCode string

const (
	FileErrorCodeUnknown                                 FileErrorCode = "UNKNOWN"
	FileErrorCodeInvalidSignedURL                        FileErrorCode = "INVALID_SIGNED_URL"
	FileErrorCodeImageDownloadFailure                    FileErrorCode = "IMAGE_DOWNLOAD_FAILURE"
	FileErrorCodeImageProcessingFailure                  FileErrorCode = "IMAGE_PROCESSING_FAILURE"
	FileErrorCodeMediaTimeoutError                       FileErrorCode = "MEDIA_TIMEOUT_ERROR"
	FileErrorCodeExternalVideoNotFound                   FileErrorCode = "EXTERNAL_VIDEO_NOT_FOUND"
	FileErrorCodeExternalVideoUnlisted                   FileErrorCode = "EXTERNAL_VIDEO_UNLISTED"
	FileErrorCodeExternalVideoInvalidAspectRatio         FileErrorCode = "EXTERNAL_VIDEO_INVALID_ASPECT_RATIO"
	FileErrorCodeExternalVideoEmbedDisabled              FileErrorCode = "EXTERNAL_VIDEO_EMBED_DISABLED"
	FileErrorCodeExternalVideoEmbedNotFoundOrTranscoding FileErrorCode = "EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING"
	FileErrorCodeGenericFileDownloadFailure              FileErrorCode = "GENERIC_FILE_DOWNLOAD_FAILURE"
	FileErrorCodeGenericFileInvalidSize                  FileErrorCode = "GENERIC_FILE_INVALID_SIZE"
	FileErrorCodeVideoMetadataReadError                  FileErrorCode = "VIDEO_METADATA_READ_ERROR"
	FileErrorCodeVideoInvalidFiletypeError               FileErrorCode = "VIDEO_INVALID_FILETYPE_ERROR"
	FileErrorCodeVideoMinWidthError                      FileErrorCode = "VIDEO_MIN_WIDTH_ERROR"
	FileErrorCodeVideoMaxWidthError                      FileErrorCode = "VIDEO_MAX_WIDTH_ERROR"
	FileErrorCodeVideoMinHeightError                     FileErrorCode = "VIDEO_MIN_HEIGHT_ERROR"
	FileErrorCodeVideoMaxHeightError                     FileErrorCode = "VIDEO_MAX_HEIGHT_ERROR"
	FileErrorCodeVideoMinDurationError                   FileErrorCode = "VIDEO_MIN_DURATION_ERROR"
	FileErrorCodeVideoMaxDurationError                   FileErrorCode = "VIDEO_MAX_DURATION_ERROR"
	FileErrorCodeVideoValidationError                    FileErrorCode = "VIDEO_VALIDATION_ERROR"
	FileErrorCodeModel3dValidationError                  FileErrorCode = "MODEL3D_VALIDATION_ERROR"
	FileErrorCodeModel3dThumbnailGenerationError         FileErrorCode = "MODEL3D_THUMBNAIL_GENERATION_ERROR"
	FileErrorCodeModel3dGlbToUsdzConversionError         FileErrorCode = "MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR"
	FileErrorCodeModel3dGlbOutputCreationError           FileErrorCode = "MODEL3D_GLB_OUTPUT_CREATION_ERROR"
	FileErrorCodeModel3dProcessingFailure                FileErrorCode = "MODEL3D_PROCESSING_FAILURE"
	FileErrorCodeUnsupportedImageFileType                FileErrorCode = "UNSUPPORTED_IMAGE_FILE_TYPE"
	FileErrorCodeInvalidImageFileSize                    FileErrorCode = "INVALID_IMAGE_FILE_SIZE"
	FileErrorCodeInvalidImageAspectRatio                 FileErrorCode = "INVALID_IMAGE_ASPECT_RATIO"
	FileErrorCodeInvalidImageResolution                  FileErrorCode = "INVALID_IMAGE_RESOLUTION"
	FileErrorCodeFileStorageLimitExceeded                FileErrorCode = "FILE_STORAGE_LIMIT_EXCEEDED"
)

var AllFileErrorCode = []FileErrorCode{
	FileErrorCodeUnknown,
	FileErrorCodeInvalidSignedURL,
	FileErrorCodeImageDownloadFailure,
	FileErrorCodeImageProcessingFailure,
	FileErrorCodeMediaTimeoutError,
	FileErrorCodeExternalVideoNotFound,
	FileErrorCodeExternalVideoUnlisted,
	FileErrorCodeExternalVideoInvalidAspectRatio,
	FileErrorCodeExternalVideoEmbedDisabled,
	FileErrorCodeExternalVideoEmbedNotFoundOrTranscoding,
	FileErrorCodeGenericFileDownloadFailure,
	FileErrorCodeGenericFileInvalidSize,
	FileErrorCodeVideoMetadataReadError,
	FileErrorCodeVideoInvalidFiletypeError,
	FileErrorCodeVideoMinWidthError,
	FileErrorCodeVideoMaxWidthError,
	FileErrorCodeVideoMinHeightError,
	FileErrorCodeVideoMaxHeightError,
	FileErrorCodeVideoMinDurationError,
	FileErrorCodeVideoMaxDurationError,
	FileErrorCodeVideoValidationError,
	FileErrorCodeModel3dValidationError,
	FileErrorCodeModel3dThumbnailGenerationError,
	FileErrorCodeModel3dGlbToUsdzConversionError,
	FileErrorCodeModel3dGlbOutputCreationError,
	FileErrorCodeModel3dProcessingFailure,
	FileErrorCodeUnsupportedImageFileType,
	FileErrorCodeInvalidImageFileSize,
	FileErrorCodeInvalidImageAspectRatio,
	FileErrorCodeInvalidImageResolution,
	FileErrorCodeFileStorageLimitExceeded,
}

func (e FileErrorCode) IsValid() bool {
	switch e {
	case FileErrorCodeUnknown, FileErrorCodeInvalidSignedURL, FileErrorCodeImageDownloadFailure, FileErrorCodeImageProcessingFailure, FileErrorCodeMediaTimeoutError, FileErrorCodeExternalVideoNotFound, FileErrorCodeExternalVideoUnlisted, FileErrorCodeExternalVideoInvalidAspectRatio, FileErrorCodeExternalVideoEmbedDisabled, FileErrorCodeExternalVideoEmbedNotFoundOrTranscoding, FileErrorCodeGenericFileDownloadFailure, FileErrorCodeGenericFileInvalidSize, FileErrorCodeVideoMetadataReadError, FileErrorCodeVideoInvalidFiletypeError, FileErrorCodeVideoMinWidthError, FileErrorCodeVideoMaxWidthError, FileErrorCodeVideoMinHeightError, FileErrorCodeVideoMaxHeightError, FileErrorCodeVideoMinDurationError, FileErrorCodeVideoMaxDurationError, FileErrorCodeVideoValidationError, FileErrorCodeModel3dValidationError, FileErrorCodeModel3dThumbnailGenerationError, FileErrorCodeModel3dGlbToUsdzConversionError, FileErrorCodeModel3dGlbOutputCreationError, FileErrorCodeModel3dProcessingFailure, FileErrorCodeUnsupportedImageFileType, FileErrorCodeInvalidImageFileSize, FileErrorCodeInvalidImageAspectRatio, FileErrorCodeInvalidImageResolution, FileErrorCodeFileStorageLimitExceeded:
		return true
	}
	return false
}

func (e FileErrorCode) String() string {
	return string(e)
}

func (e *FileErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FileErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FileErrorCode", str)
	}
	return nil
}

func (e FileErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FileStatus string

const (
	FileStatusUploaded   FileStatus = "UPLOADED"
	FileStatusProcessing FileStatus = "PROCESSING"
	FileStatusReady      FileStatus = "READY"
	FileStatusFailed     FileStatus = "FAILED"
)

var AllFileStatus = []FileStatus{
	FileStatusUploaded,
	FileStatusProcessing,
	FileStatusReady,
	FileStatusFailed,
}

func (e FileStatus) IsValid() bool {
	switch e {
	case FileStatusUploaded, FileStatusProcessing, FileStatusReady, FileStatusFailed:
		return true
	}
	return false
}

func (e FileStatus) String() string {
	return string(e)
}

func (e *FileStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FileStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FileStatus", str)
	}
	return nil
}

func (e FileStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentDisplayStatus string

const (
	FulfillmentDisplayStatusAttemptedDelivery FulfillmentDisplayStatus = "ATTEMPTED_DELIVERY"
	FulfillmentDisplayStatusCanceled          FulfillmentDisplayStatus = "CANCELED"
	FulfillmentDisplayStatusConfirmed         FulfillmentDisplayStatus = "CONFIRMED"
	FulfillmentDisplayStatusDelivered         FulfillmentDisplayStatus = "DELIVERED"
	FulfillmentDisplayStatusFailure           FulfillmentDisplayStatus = "FAILURE"
	FulfillmentDisplayStatusFulfilled         FulfillmentDisplayStatus = "FULFILLED"
	FulfillmentDisplayStatusInTransit         FulfillmentDisplayStatus = "IN_TRANSIT"
	FulfillmentDisplayStatusLabelPrinted      FulfillmentDisplayStatus = "LABEL_PRINTED"
	FulfillmentDisplayStatusLabelPurchased    FulfillmentDisplayStatus = "LABEL_PURCHASED"
	FulfillmentDisplayStatusLabelVoided       FulfillmentDisplayStatus = "LABEL_VOIDED"
	FulfillmentDisplayStatusMarkedAsFulfilled FulfillmentDisplayStatus = "MARKED_AS_FULFILLED"
	FulfillmentDisplayStatusNotDelivered      FulfillmentDisplayStatus = "NOT_DELIVERED"
	FulfillmentDisplayStatusOutForDelivery    FulfillmentDisplayStatus = "OUT_FOR_DELIVERY"
	FulfillmentDisplayStatusReadyForPickup    FulfillmentDisplayStatus = "READY_FOR_PICKUP"
	FulfillmentDisplayStatusPickedUp          FulfillmentDisplayStatus = "PICKED_UP"
	FulfillmentDisplayStatusSubmitted         FulfillmentDisplayStatus = "SUBMITTED"
)

var AllFulfillmentDisplayStatus = []FulfillmentDisplayStatus{
	FulfillmentDisplayStatusAttemptedDelivery,
	FulfillmentDisplayStatusCanceled,
	FulfillmentDisplayStatusConfirmed,
	FulfillmentDisplayStatusDelivered,
	FulfillmentDisplayStatusFailure,
	FulfillmentDisplayStatusFulfilled,
	FulfillmentDisplayStatusInTransit,
	FulfillmentDisplayStatusLabelPrinted,
	FulfillmentDisplayStatusLabelPurchased,
	FulfillmentDisplayStatusLabelVoided,
	FulfillmentDisplayStatusMarkedAsFulfilled,
	FulfillmentDisplayStatusNotDelivered,
	FulfillmentDisplayStatusOutForDelivery,
	FulfillmentDisplayStatusReadyForPickup,
	FulfillmentDisplayStatusPickedUp,
	FulfillmentDisplayStatusSubmitted,
}

func (e FulfillmentDisplayStatus) IsValid() bool {
	switch e {
	case FulfillmentDisplayStatusAttemptedDelivery, FulfillmentDisplayStatusCanceled, FulfillmentDisplayStatusConfirmed, FulfillmentDisplayStatusDelivered, FulfillmentDisplayStatusFailure, FulfillmentDisplayStatusFulfilled, FulfillmentDisplayStatusInTransit, FulfillmentDisplayStatusLabelPrinted, FulfillmentDisplayStatusLabelPurchased, FulfillmentDisplayStatusLabelVoided, FulfillmentDisplayStatusMarkedAsFulfilled, FulfillmentDisplayStatusNotDelivered, FulfillmentDisplayStatusOutForDelivery, FulfillmentDisplayStatusReadyForPickup, FulfillmentDisplayStatusPickedUp, FulfillmentDisplayStatusSubmitted:
		return true
	}
	return false
}

func (e FulfillmentDisplayStatus) String() string {
	return string(e)
}

func (e *FulfillmentDisplayStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentDisplayStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentDisplayStatus", str)
	}
	return nil
}

func (e FulfillmentDisplayStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentEventSortKeys string

const (
	FulfillmentEventSortKeysHappenedAt FulfillmentEventSortKeys = "HAPPENED_AT"
	FulfillmentEventSortKeysID         FulfillmentEventSortKeys = "ID"
	FulfillmentEventSortKeysRelevance  FulfillmentEventSortKeys = "RELEVANCE"
)

var AllFulfillmentEventSortKeys = []FulfillmentEventSortKeys{
	FulfillmentEventSortKeysHappenedAt,
	FulfillmentEventSortKeysID,
	FulfillmentEventSortKeysRelevance,
}

func (e FulfillmentEventSortKeys) IsValid() bool {
	switch e {
	case FulfillmentEventSortKeysHappenedAt, FulfillmentEventSortKeysID, FulfillmentEventSortKeysRelevance:
		return true
	}
	return false
}

func (e FulfillmentEventSortKeys) String() string {
	return string(e)
}

func (e *FulfillmentEventSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentEventSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentEventSortKeys", str)
	}
	return nil
}

func (e FulfillmentEventSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentEventStatus string

const (
	FulfillmentEventStatusLabelPurchased    FulfillmentEventStatus = "LABEL_PURCHASED"
	FulfillmentEventStatusLabelPrinted      FulfillmentEventStatus = "LABEL_PRINTED"
	FulfillmentEventStatusReadyForPickup    FulfillmentEventStatus = "READY_FOR_PICKUP"
	FulfillmentEventStatusConfirmed         FulfillmentEventStatus = "CONFIRMED"
	FulfillmentEventStatusInTransit         FulfillmentEventStatus = "IN_TRANSIT"
	FulfillmentEventStatusOutForDelivery    FulfillmentEventStatus = "OUT_FOR_DELIVERY"
	FulfillmentEventStatusAttemptedDelivery FulfillmentEventStatus = "ATTEMPTED_DELIVERY"
	FulfillmentEventStatusDelivered         FulfillmentEventStatus = "DELIVERED"
	FulfillmentEventStatusFailure           FulfillmentEventStatus = "FAILURE"
)

var AllFulfillmentEventStatus = []FulfillmentEventStatus{
	FulfillmentEventStatusLabelPurchased,
	FulfillmentEventStatusLabelPrinted,
	FulfillmentEventStatusReadyForPickup,
	FulfillmentEventStatusConfirmed,
	FulfillmentEventStatusInTransit,
	FulfillmentEventStatusOutForDelivery,
	FulfillmentEventStatusAttemptedDelivery,
	FulfillmentEventStatusDelivered,
	FulfillmentEventStatusFailure,
}

func (e FulfillmentEventStatus) IsValid() bool {
	switch e {
	case FulfillmentEventStatusLabelPurchased, FulfillmentEventStatusLabelPrinted, FulfillmentEventStatusReadyForPickup, FulfillmentEventStatusConfirmed, FulfillmentEventStatusInTransit, FulfillmentEventStatusOutForDelivery, FulfillmentEventStatusAttemptedDelivery, FulfillmentEventStatusDelivered, FulfillmentEventStatusFailure:
		return true
	}
	return false
}

func (e FulfillmentEventStatus) String() string {
	return string(e)
}

func (e *FulfillmentEventStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentEventStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentEventStatus", str)
	}
	return nil
}

func (e FulfillmentEventStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentHoldReason string

const (
	FulfillmentHoldReasonAwaitingPayment     FulfillmentHoldReason = "AWAITING_PAYMENT"
	FulfillmentHoldReasonHighRiskOfFraud     FulfillmentHoldReason = "HIGH_RISK_OF_FRAUD"
	FulfillmentHoldReasonIncorrectAddress    FulfillmentHoldReason = "INCORRECT_ADDRESS"
	FulfillmentHoldReasonInventoryOutOfStock FulfillmentHoldReason = "INVENTORY_OUT_OF_STOCK"
	FulfillmentHoldReasonUnknownDeliveryDate FulfillmentHoldReason = "UNKNOWN_DELIVERY_DATE"
	FulfillmentHoldReasonOther               FulfillmentHoldReason = "OTHER"
)

var AllFulfillmentHoldReason = []FulfillmentHoldReason{
	FulfillmentHoldReasonAwaitingPayment,
	FulfillmentHoldReasonHighRiskOfFraud,
	FulfillmentHoldReasonIncorrectAddress,
	FulfillmentHoldReasonInventoryOutOfStock,
	FulfillmentHoldReasonUnknownDeliveryDate,
	FulfillmentHoldReasonOther,
}

func (e FulfillmentHoldReason) IsValid() bool {
	switch e {
	case FulfillmentHoldReasonAwaitingPayment, FulfillmentHoldReasonHighRiskOfFraud, FulfillmentHoldReasonIncorrectAddress, FulfillmentHoldReasonInventoryOutOfStock, FulfillmentHoldReasonUnknownDeliveryDate, FulfillmentHoldReasonOther:
		return true
	}
	return false
}

func (e FulfillmentHoldReason) String() string {
	return string(e)
}

func (e *FulfillmentHoldReason) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentHoldReason(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentHoldReason", str)
	}
	return nil
}

func (e FulfillmentHoldReason) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderAction string

const (
	FulfillmentOrderActionCreateFulfillment      FulfillmentOrderAction = "CREATE_FULFILLMENT"
	FulfillmentOrderActionRequestFulfillment     FulfillmentOrderAction = "REQUEST_FULFILLMENT"
	FulfillmentOrderActionCancelFulfillmentOrder FulfillmentOrderAction = "CANCEL_FULFILLMENT_ORDER"
	FulfillmentOrderActionMove                   FulfillmentOrderAction = "MOVE"
	FulfillmentOrderActionRequestCancellation    FulfillmentOrderAction = "REQUEST_CANCELLATION"
	FulfillmentOrderActionMarkAsOpen             FulfillmentOrderAction = "MARK_AS_OPEN"
	FulfillmentOrderActionReleaseHold            FulfillmentOrderAction = "RELEASE_HOLD"
	FulfillmentOrderActionHold                   FulfillmentOrderAction = "HOLD"
	FulfillmentOrderActionExternal               FulfillmentOrderAction = "EXTERNAL"
)

var AllFulfillmentOrderAction = []FulfillmentOrderAction{
	FulfillmentOrderActionCreateFulfillment,
	FulfillmentOrderActionRequestFulfillment,
	FulfillmentOrderActionCancelFulfillmentOrder,
	FulfillmentOrderActionMove,
	FulfillmentOrderActionRequestCancellation,
	FulfillmentOrderActionMarkAsOpen,
	FulfillmentOrderActionReleaseHold,
	FulfillmentOrderActionHold,
	FulfillmentOrderActionExternal,
}

func (e FulfillmentOrderAction) IsValid() bool {
	switch e {
	case FulfillmentOrderActionCreateFulfillment, FulfillmentOrderActionRequestFulfillment, FulfillmentOrderActionCancelFulfillmentOrder, FulfillmentOrderActionMove, FulfillmentOrderActionRequestCancellation, FulfillmentOrderActionMarkAsOpen, FulfillmentOrderActionReleaseHold, FulfillmentOrderActionHold, FulfillmentOrderActionExternal:
		return true
	}
	return false
}

func (e FulfillmentOrderAction) String() string {
	return string(e)
}

func (e *FulfillmentOrderAction) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderAction(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderAction", str)
	}
	return nil
}

func (e FulfillmentOrderAction) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderAssignmentStatus string

const (
	FulfillmentOrderAssignmentStatusCancellationRequested FulfillmentOrderAssignmentStatus = "CANCELLATION_REQUESTED"
	FulfillmentOrderAssignmentStatusFulfillmentRequested  FulfillmentOrderAssignmentStatus = "FULFILLMENT_REQUESTED"
	FulfillmentOrderAssignmentStatusFulfillmentAccepted   FulfillmentOrderAssignmentStatus = "FULFILLMENT_ACCEPTED"
)

var AllFulfillmentOrderAssignmentStatus = []FulfillmentOrderAssignmentStatus{
	FulfillmentOrderAssignmentStatusCancellationRequested,
	FulfillmentOrderAssignmentStatusFulfillmentRequested,
	FulfillmentOrderAssignmentStatusFulfillmentAccepted,
}

func (e FulfillmentOrderAssignmentStatus) IsValid() bool {
	switch e {
	case FulfillmentOrderAssignmentStatusCancellationRequested, FulfillmentOrderAssignmentStatusFulfillmentRequested, FulfillmentOrderAssignmentStatusFulfillmentAccepted:
		return true
	}
	return false
}

func (e FulfillmentOrderAssignmentStatus) String() string {
	return string(e)
}

func (e *FulfillmentOrderAssignmentStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderAssignmentStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderAssignmentStatus", str)
	}
	return nil
}

func (e FulfillmentOrderAssignmentStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderMerchantRequestKind string

const (
	FulfillmentOrderMerchantRequestKindFulfillmentRequest  FulfillmentOrderMerchantRequestKind = "FULFILLMENT_REQUEST"
	FulfillmentOrderMerchantRequestKindCancellationRequest FulfillmentOrderMerchantRequestKind = "CANCELLATION_REQUEST"
)

var AllFulfillmentOrderMerchantRequestKind = []FulfillmentOrderMerchantRequestKind{
	FulfillmentOrderMerchantRequestKindFulfillmentRequest,
	FulfillmentOrderMerchantRequestKindCancellationRequest,
}

func (e FulfillmentOrderMerchantRequestKind) IsValid() bool {
	switch e {
	case FulfillmentOrderMerchantRequestKindFulfillmentRequest, FulfillmentOrderMerchantRequestKindCancellationRequest:
		return true
	}
	return false
}

func (e FulfillmentOrderMerchantRequestKind) String() string {
	return string(e)
}

func (e *FulfillmentOrderMerchantRequestKind) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderMerchantRequestKind(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderMerchantRequestKind", str)
	}
	return nil
}

func (e FulfillmentOrderMerchantRequestKind) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderRequestStatus string

const (
	FulfillmentOrderRequestStatusUnsubmitted           FulfillmentOrderRequestStatus = "UNSUBMITTED"
	FulfillmentOrderRequestStatusSubmitted             FulfillmentOrderRequestStatus = "SUBMITTED"
	FulfillmentOrderRequestStatusAccepted              FulfillmentOrderRequestStatus = "ACCEPTED"
	FulfillmentOrderRequestStatusRejected              FulfillmentOrderRequestStatus = "REJECTED"
	FulfillmentOrderRequestStatusCancellationRequested FulfillmentOrderRequestStatus = "CANCELLATION_REQUESTED"
	FulfillmentOrderRequestStatusCancellationAccepted  FulfillmentOrderRequestStatus = "CANCELLATION_ACCEPTED"
	FulfillmentOrderRequestStatusCancellationRejected  FulfillmentOrderRequestStatus = "CANCELLATION_REJECTED"
	FulfillmentOrderRequestStatusClosed                FulfillmentOrderRequestStatus = "CLOSED"
)

var AllFulfillmentOrderRequestStatus = []FulfillmentOrderRequestStatus{
	FulfillmentOrderRequestStatusUnsubmitted,
	FulfillmentOrderRequestStatusSubmitted,
	FulfillmentOrderRequestStatusAccepted,
	FulfillmentOrderRequestStatusRejected,
	FulfillmentOrderRequestStatusCancellationRequested,
	FulfillmentOrderRequestStatusCancellationAccepted,
	FulfillmentOrderRequestStatusCancellationRejected,
	FulfillmentOrderRequestStatusClosed,
}

func (e FulfillmentOrderRequestStatus) IsValid() bool {
	switch e {
	case FulfillmentOrderRequestStatusUnsubmitted, FulfillmentOrderRequestStatusSubmitted, FulfillmentOrderRequestStatusAccepted, FulfillmentOrderRequestStatusRejected, FulfillmentOrderRequestStatusCancellationRequested, FulfillmentOrderRequestStatusCancellationAccepted, FulfillmentOrderRequestStatusCancellationRejected, FulfillmentOrderRequestStatusClosed:
		return true
	}
	return false
}

func (e FulfillmentOrderRequestStatus) String() string {
	return string(e)
}

func (e *FulfillmentOrderRequestStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderRequestStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderRequestStatus", str)
	}
	return nil
}

func (e FulfillmentOrderRequestStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderSortKeys string

const (
	FulfillmentOrderSortKeysID        FulfillmentOrderSortKeys = "ID"
	FulfillmentOrderSortKeysRelevance FulfillmentOrderSortKeys = "RELEVANCE"
)

var AllFulfillmentOrderSortKeys = []FulfillmentOrderSortKeys{
	FulfillmentOrderSortKeysID,
	FulfillmentOrderSortKeysRelevance,
}

func (e FulfillmentOrderSortKeys) IsValid() bool {
	switch e {
	case FulfillmentOrderSortKeysID, FulfillmentOrderSortKeysRelevance:
		return true
	}
	return false
}

func (e FulfillmentOrderSortKeys) String() string {
	return string(e)
}

func (e *FulfillmentOrderSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderSortKeys", str)
	}
	return nil
}

func (e FulfillmentOrderSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentOrderStatus string

const (
	FulfillmentOrderStatusOpen       FulfillmentOrderStatus = "OPEN"
	FulfillmentOrderStatusInProgress FulfillmentOrderStatus = "IN_PROGRESS"
	FulfillmentOrderStatusCancelled  FulfillmentOrderStatus = "CANCELLED"
	FulfillmentOrderStatusIncomplete FulfillmentOrderStatus = "INCOMPLETE"
	FulfillmentOrderStatusClosed     FulfillmentOrderStatus = "CLOSED"
	FulfillmentOrderStatusScheduled  FulfillmentOrderStatus = "SCHEDULED"
	FulfillmentOrderStatusOnHold     FulfillmentOrderStatus = "ON_HOLD"
)

var AllFulfillmentOrderStatus = []FulfillmentOrderStatus{
	FulfillmentOrderStatusOpen,
	FulfillmentOrderStatusInProgress,
	FulfillmentOrderStatusCancelled,
	FulfillmentOrderStatusIncomplete,
	FulfillmentOrderStatusClosed,
	FulfillmentOrderStatusScheduled,
	FulfillmentOrderStatusOnHold,
}

func (e FulfillmentOrderStatus) IsValid() bool {
	switch e {
	case FulfillmentOrderStatusOpen, FulfillmentOrderStatusInProgress, FulfillmentOrderStatusCancelled, FulfillmentOrderStatusIncomplete, FulfillmentOrderStatusClosed, FulfillmentOrderStatusScheduled, FulfillmentOrderStatusOnHold:
		return true
	}
	return false
}

func (e FulfillmentOrderStatus) String() string {
	return string(e)
}

func (e *FulfillmentOrderStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentOrderStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentOrderStatus", str)
	}
	return nil
}

func (e FulfillmentOrderStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentServiceType string

const (
	FulfillmentServiceTypeGiftCard   FulfillmentServiceType = "GIFT_CARD"
	FulfillmentServiceTypeManual     FulfillmentServiceType = "MANUAL"
	FulfillmentServiceTypeThirdParty FulfillmentServiceType = "THIRD_PARTY"
)

var AllFulfillmentServiceType = []FulfillmentServiceType{
	FulfillmentServiceTypeGiftCard,
	FulfillmentServiceTypeManual,
	FulfillmentServiceTypeThirdParty,
}

func (e FulfillmentServiceType) IsValid() bool {
	switch e {
	case FulfillmentServiceTypeGiftCard, FulfillmentServiceTypeManual, FulfillmentServiceTypeThirdParty:
		return true
	}
	return false
}

func (e FulfillmentServiceType) String() string {
	return string(e)
}

func (e *FulfillmentServiceType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentServiceType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentServiceType", str)
	}
	return nil
}

func (e FulfillmentServiceType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type FulfillmentStatus string

const (
	FulfillmentStatusSuccess   FulfillmentStatus = "SUCCESS"
	FulfillmentStatusCancelled FulfillmentStatus = "CANCELLED"
	FulfillmentStatusError     FulfillmentStatus = "ERROR"
	FulfillmentStatusFailure   FulfillmentStatus = "FAILURE"
)

var AllFulfillmentStatus = []FulfillmentStatus{
	FulfillmentStatusSuccess,
	FulfillmentStatusCancelled,
	FulfillmentStatusError,
	FulfillmentStatusFailure,
}

func (e FulfillmentStatus) IsValid() bool {
	switch e {
	case FulfillmentStatusSuccess, FulfillmentStatusCancelled, FulfillmentStatusError, FulfillmentStatusFailure:
		return true
	}
	return false
}

func (e FulfillmentStatus) String() string {
	return string(e)
}

func (e *FulfillmentStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = FulfillmentStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid FulfillmentStatus", str)
	}
	return nil
}

func (e FulfillmentStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ImageContentType string

const (
	ImageContentTypePng  ImageContentType = "PNG"
	ImageContentTypeJpg  ImageContentType = "JPG"
	ImageContentTypeWebp ImageContentType = "WEBP"
)

var AllImageContentType = []ImageContentType{
	ImageContentTypePng,
	ImageContentTypeJpg,
	ImageContentTypeWebp,
}

func (e ImageContentType) IsValid() bool {
	switch e {
	case ImageContentTypePng, ImageContentTypeJpg, ImageContentTypeWebp:
		return true
	}
	return false
}

func (e ImageContentType) String() string {
	return string(e)
}

func (e *ImageContentType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ImageContentType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ImageContentType", str)
	}
	return nil
}

func (e ImageContentType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type LanguageCode string

const (
	LanguageCodeAf   LanguageCode = "AF"
	LanguageCodeAk   LanguageCode = "AK"
	LanguageCodeAm   LanguageCode = "AM"
	LanguageCodeAr   LanguageCode = "AR"
	LanguageCodeAs   LanguageCode = "AS"
	LanguageCodeAz   LanguageCode = "AZ"
	LanguageCodeBe   LanguageCode = "BE"
	LanguageCodeBg   LanguageCode = "BG"
	LanguageCodeBm   LanguageCode = "BM"
	LanguageCodeBn   LanguageCode = "BN"
	LanguageCodeBo   LanguageCode = "BO"
	LanguageCodeBr   LanguageCode = "BR"
	LanguageCodeBs   LanguageCode = "BS"
	LanguageCodeCa   LanguageCode = "CA"
	LanguageCodeCe   LanguageCode = "CE"
	LanguageCodeCs   LanguageCode = "CS"
	LanguageCodeCu   LanguageCode = "CU"
	LanguageCodeCy   LanguageCode = "CY"
	LanguageCodeDa   LanguageCode = "DA"
	LanguageCodeDe   LanguageCode = "DE"
	LanguageCodeDz   LanguageCode = "DZ"
	LanguageCodeEe   LanguageCode = "EE"
	LanguageCodeEl   LanguageCode = "EL"
	LanguageCodeEn   LanguageCode = "EN"
	LanguageCodeEo   LanguageCode = "EO"
	LanguageCodeEs   LanguageCode = "ES"
	LanguageCodeEt   LanguageCode = "ET"
	LanguageCodeEu   LanguageCode = "EU"
	LanguageCodeFa   LanguageCode = "FA"
	LanguageCodeFf   LanguageCode = "FF"
	LanguageCodeFi   LanguageCode = "FI"
	LanguageCodeFo   LanguageCode = "FO"
	LanguageCodeFr   LanguageCode = "FR"
	LanguageCodeFy   LanguageCode = "FY"
	LanguageCodeGa   LanguageCode = "GA"
	LanguageCodeGd   LanguageCode = "GD"
	LanguageCodeGl   LanguageCode = "GL"
	LanguageCodeGu   LanguageCode = "GU"
	LanguageCodeGv   LanguageCode = "GV"
	LanguageCodeHa   LanguageCode = "HA"
	LanguageCodeHe   LanguageCode = "HE"
	LanguageCodeHi   LanguageCode = "HI"
	LanguageCodeHr   LanguageCode = "HR"
	LanguageCodeHu   LanguageCode = "HU"
	LanguageCodeHy   LanguageCode = "HY"
	LanguageCodeIa   LanguageCode = "IA"
	LanguageCodeID   LanguageCode = "ID"
	LanguageCodeIg   LanguageCode = "IG"
	LanguageCodeIi   LanguageCode = "II"
	LanguageCodeIs   LanguageCode = "IS"
	LanguageCodeIt   LanguageCode = "IT"
	LanguageCodeJa   LanguageCode = "JA"
	LanguageCodeJv   LanguageCode = "JV"
	LanguageCodeKa   LanguageCode = "KA"
	LanguageCodeKi   LanguageCode = "KI"
	LanguageCodeKk   LanguageCode = "KK"
	LanguageCodeKl   LanguageCode = "KL"
	LanguageCodeKm   LanguageCode = "KM"
	LanguageCodeKn   LanguageCode = "KN"
	LanguageCodeKo   LanguageCode = "KO"
	LanguageCodeKs   LanguageCode = "KS"
	LanguageCodeKu   LanguageCode = "KU"
	LanguageCodeKw   LanguageCode = "KW"
	LanguageCodeKy   LanguageCode = "KY"
	LanguageCodeLb   LanguageCode = "LB"
	LanguageCodeLg   LanguageCode = "LG"
	LanguageCodeLn   LanguageCode = "LN"
	LanguageCodeLo   LanguageCode = "LO"
	LanguageCodeLt   LanguageCode = "LT"
	LanguageCodeLu   LanguageCode = "LU"
	LanguageCodeLv   LanguageCode = "LV"
	LanguageCodeMg   LanguageCode = "MG"
	LanguageCodeMi   LanguageCode = "MI"
	LanguageCodeMk   LanguageCode = "MK"
	LanguageCodeMl   LanguageCode = "ML"
	LanguageCodeMn   LanguageCode = "MN"
	LanguageCodeMr   LanguageCode = "MR"
	LanguageCodeMs   LanguageCode = "MS"
	LanguageCodeMt   LanguageCode = "MT"
	LanguageCodeMy   LanguageCode = "MY"
	LanguageCodeNb   LanguageCode = "NB"
	LanguageCodeNd   LanguageCode = "ND"
	LanguageCodeNe   LanguageCode = "NE"
	LanguageCodeNl   LanguageCode = "NL"
	LanguageCodeNn   LanguageCode = "NN"
	LanguageCodeNo   LanguageCode = "NO"
	LanguageCodeOm   LanguageCode = "OM"
	LanguageCodeOr   LanguageCode = "OR"
	LanguageCodeOs   LanguageCode = "OS"
	LanguageCodePa   LanguageCode = "PA"
	LanguageCodePl   LanguageCode = "PL"
	LanguageCodePs   LanguageCode = "PS"
	LanguageCodePtBr LanguageCode = "PT_BR"
	LanguageCodePtPt LanguageCode = "PT_PT"
	LanguageCodeQu   LanguageCode = "QU"
	LanguageCodeRm   LanguageCode = "RM"
	LanguageCodeRn   LanguageCode = "RN"
	LanguageCodeRo   LanguageCode = "RO"
	LanguageCodeRu   LanguageCode = "RU"
	LanguageCodeRw   LanguageCode = "RW"
	LanguageCodeSd   LanguageCode = "SD"
	LanguageCodeSe   LanguageCode = "SE"
	LanguageCodeSg   LanguageCode = "SG"
	LanguageCodeSi   LanguageCode = "SI"
	LanguageCodeSk   LanguageCode = "SK"
	LanguageCodeSl   LanguageCode = "SL"
	LanguageCodeSn   LanguageCode = "SN"
	LanguageCodeSo   LanguageCode = "SO"
	LanguageCodeSq   LanguageCode = "SQ"
	LanguageCodeSr   LanguageCode = "SR"
	LanguageCodeSu   LanguageCode = "SU"
	LanguageCodeSv   LanguageCode = "SV"
	LanguageCodeSw   LanguageCode = "SW"
	LanguageCodeTa   LanguageCode = "TA"
	LanguageCodeTe   LanguageCode = "TE"
	LanguageCodeTg   LanguageCode = "TG"
	LanguageCodeTh   LanguageCode = "TH"
	LanguageCodeTi   LanguageCode = "TI"
	LanguageCodeTk   LanguageCode = "TK"
	LanguageCodeTo   LanguageCode = "TO"
	LanguageCodeTr   LanguageCode = "TR"
	LanguageCodeTt   LanguageCode = "TT"
	LanguageCodeUg   LanguageCode = "UG"
	LanguageCodeUk   LanguageCode = "UK"
	LanguageCodeUr   LanguageCode = "UR"
	LanguageCodeUz   LanguageCode = "UZ"
	LanguageCodeVi   LanguageCode = "VI"
	LanguageCodeWo   LanguageCode = "WO"
	LanguageCodeXh   LanguageCode = "XH"
	LanguageCodeYi   LanguageCode = "YI"
	LanguageCodeYo   LanguageCode = "YO"
	LanguageCodeZhCn LanguageCode = "ZH_CN"
	LanguageCodeZhTw LanguageCode = "ZH_TW"
	LanguageCodeZu   LanguageCode = "ZU"
	LanguageCodeZh   LanguageCode = "ZH"
	LanguageCodePt   LanguageCode = "PT"
	LanguageCodeVo   LanguageCode = "VO"
)

var AllLanguageCode = []LanguageCode{
	LanguageCodeAf,
	LanguageCodeAk,
	LanguageCodeAm,
	LanguageCodeAr,
	LanguageCodeAs,
	LanguageCodeAz,
	LanguageCodeBe,
	LanguageCodeBg,
	LanguageCodeBm,
	LanguageCodeBn,
	LanguageCodeBo,
	LanguageCodeBr,
	LanguageCodeBs,
	LanguageCodeCa,
	LanguageCodeCe,
	LanguageCodeCs,
	LanguageCodeCu,
	LanguageCodeCy,
	LanguageCodeDa,
	LanguageCodeDe,
	LanguageCodeDz,
	LanguageCodeEe,
	LanguageCodeEl,
	LanguageCodeEn,
	LanguageCodeEo,
	LanguageCodeEs,
	LanguageCodeEt,
	LanguageCodeEu,
	LanguageCodeFa,
	LanguageCodeFf,
	LanguageCodeFi,
	LanguageCodeFo,
	LanguageCodeFr,
	LanguageCodeFy,
	LanguageCodeGa,
	LanguageCodeGd,
	LanguageCodeGl,
	LanguageCodeGu,
	LanguageCodeGv,
	LanguageCodeHa,
	LanguageCodeHe,
	LanguageCodeHi,
	LanguageCodeHr,
	LanguageCodeHu,
	LanguageCodeHy,
	LanguageCodeIa,
	LanguageCodeID,
	LanguageCodeIg,
	LanguageCodeIi,
	LanguageCodeIs,
	LanguageCodeIt,
	LanguageCodeJa,
	LanguageCodeJv,
	LanguageCodeKa,
	LanguageCodeKi,
	LanguageCodeKk,
	LanguageCodeKl,
	LanguageCodeKm,
	LanguageCodeKn,
	LanguageCodeKo,
	LanguageCodeKs,
	LanguageCodeKu,
	LanguageCodeKw,
	LanguageCodeKy,
	LanguageCodeLb,
	LanguageCodeLg,
	LanguageCodeLn,
	LanguageCodeLo,
	LanguageCodeLt,
	LanguageCodeLu,
	LanguageCodeLv,
	LanguageCodeMg,
	LanguageCodeMi,
	LanguageCodeMk,
	LanguageCodeMl,
	LanguageCodeMn,
	LanguageCodeMr,
	LanguageCodeMs,
	LanguageCodeMt,
	LanguageCodeMy,
	LanguageCodeNb,
	LanguageCodeNd,
	LanguageCodeNe,
	LanguageCodeNl,
	LanguageCodeNn,
	LanguageCodeNo,
	LanguageCodeOm,
	LanguageCodeOr,
	LanguageCodeOs,
	LanguageCodePa,
	LanguageCodePl,
	LanguageCodePs,
	LanguageCodePtBr,
	LanguageCodePtPt,
	LanguageCodeQu,
	LanguageCodeRm,
	LanguageCodeRn,
	LanguageCodeRo,
	LanguageCodeRu,
	LanguageCodeRw,
	LanguageCodeSd,
	LanguageCodeSe,
	LanguageCodeSg,
	LanguageCodeSi,
	LanguageCodeSk,
	LanguageCodeSl,
	LanguageCodeSn,
	LanguageCodeSo,
	LanguageCodeSq,
	LanguageCodeSr,
	LanguageCodeSu,
	LanguageCodeSv,
	LanguageCodeSw,
	LanguageCodeTa,
	LanguageCodeTe,
	LanguageCodeTg,
	LanguageCodeTh,
	LanguageCodeTi,
	LanguageCodeTk,
	LanguageCodeTo,
	LanguageCodeTr,
	LanguageCodeTt,
	LanguageCodeUg,
	LanguageCodeUk,
	LanguageCodeUr,
	LanguageCodeUz,
	LanguageCodeVi,
	LanguageCodeWo,
	LanguageCodeXh,
	LanguageCodeYi,
	LanguageCodeYo,
	LanguageCodeZhCn,
	LanguageCodeZhTw,
	LanguageCodeZu,
	LanguageCodeZh,
	LanguageCodePt,
	LanguageCodeVo,
}

func (e LanguageCode) IsValid() bool {
	switch e {
	case LanguageCodeAf, LanguageCodeAk, LanguageCodeAm, LanguageCodeAr, LanguageCodeAs, LanguageCodeAz, LanguageCodeBe, LanguageCodeBg, LanguageCodeBm, LanguageCodeBn, LanguageCodeBo, LanguageCodeBr, LanguageCodeBs, LanguageCodeCa, LanguageCodeCe, LanguageCodeCs, LanguageCodeCu, LanguageCodeCy, LanguageCodeDa, LanguageCodeDe, LanguageCodeDz, LanguageCodeEe, LanguageCodeEl, LanguageCodeEn, LanguageCodeEo, LanguageCodeEs, LanguageCodeEt, LanguageCodeEu, LanguageCodeFa, LanguageCodeFf, LanguageCodeFi, LanguageCodeFo, LanguageCodeFr, LanguageCodeFy, LanguageCodeGa, LanguageCodeGd, LanguageCodeGl, LanguageCodeGu, LanguageCodeGv, LanguageCodeHa, LanguageCodeHe, LanguageCodeHi, LanguageCodeHr, LanguageCodeHu, LanguageCodeHy, LanguageCodeIa, LanguageCodeID, LanguageCodeIg, LanguageCodeIi, LanguageCodeIs, LanguageCodeIt, LanguageCodeJa, LanguageCodeJv, LanguageCodeKa, LanguageCodeKi, LanguageCodeKk, LanguageCodeKl, LanguageCodeKm, LanguageCodeKn, LanguageCodeKo, LanguageCodeKs, LanguageCodeKu, LanguageCodeKw, LanguageCodeKy, LanguageCodeLb, LanguageCodeLg, LanguageCodeLn, LanguageCodeLo, LanguageCodeLt, LanguageCodeLu, LanguageCodeLv, LanguageCodeMg, LanguageCodeMi, LanguageCodeMk, LanguageCodeMl, LanguageCodeMn, LanguageCodeMr, LanguageCodeMs, LanguageCodeMt, LanguageCodeMy, LanguageCodeNb, LanguageCodeNd, LanguageCodeNe, LanguageCodeNl, LanguageCodeNn, LanguageCodeNo, LanguageCodeOm, LanguageCodeOr, LanguageCodeOs, LanguageCodePa, LanguageCodePl, LanguageCodePs, LanguageCodePtBr, LanguageCodePtPt, LanguageCodeQu, LanguageCodeRm, LanguageCodeRn, LanguageCodeRo, LanguageCodeRu, LanguageCodeRw, LanguageCodeSd, LanguageCodeSe, LanguageCodeSg, LanguageCodeSi, LanguageCodeSk, LanguageCodeSl, LanguageCodeSn, LanguageCodeSo, LanguageCodeSq, LanguageCodeSr, LanguageCodeSu, LanguageCodeSv, LanguageCodeSw, LanguageCodeTa, LanguageCodeTe, LanguageCodeTg, LanguageCodeTh, LanguageCodeTi, LanguageCodeTk, LanguageCodeTo, LanguageCodeTr, LanguageCodeTt, LanguageCodeUg, LanguageCodeUk, LanguageCodeUr, LanguageCodeUz, LanguageCodeVi, LanguageCodeWo, LanguageCodeXh, LanguageCodeYi, LanguageCodeYo, LanguageCodeZhCn, LanguageCodeZhTw, LanguageCodeZu, LanguageCodeZh, LanguageCodePt, LanguageCodeVo:
		return true
	}
	return false
}

func (e LanguageCode) String() string {
	return string(e)
}

func (e *LanguageCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = LanguageCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid LanguageCode", str)
	}
	return nil
}

func (e LanguageCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type LocalizationExtensionKey string

const (
	LocalizationExtensionKeyTaxCredentialBr      LocalizationExtensionKey = "TAX_CREDENTIAL_BR"
	LocalizationExtensionKeyShippingCredentialBr LocalizationExtensionKey = "SHIPPING_CREDENTIAL_BR"
	LocalizationExtensionKeyShippingCredentialCn LocalizationExtensionKey = "SHIPPING_CREDENTIAL_CN"
	LocalizationExtensionKeyTaxCredentialIt      LocalizationExtensionKey = "TAX_CREDENTIAL_IT"
	LocalizationExtensionKeyTaxEmailIt           LocalizationExtensionKey = "TAX_EMAIL_IT"
	LocalizationExtensionKeyShippingCredentialKr LocalizationExtensionKey = "SHIPPING_CREDENTIAL_KR"
)

var AllLocalizationExtensionKey = []LocalizationExtensionKey{
	LocalizationExtensionKeyTaxCredentialBr,
	LocalizationExtensionKeyShippingCredentialBr,
	LocalizationExtensionKeyShippingCredentialCn,
	LocalizationExtensionKeyTaxCredentialIt,
	LocalizationExtensionKeyTaxEmailIt,
	LocalizationExtensionKeyShippingCredentialKr,
}

func (e LocalizationExtensionKey) IsValid() bool {
	switch e {
	case LocalizationExtensionKeyTaxCredentialBr, LocalizationExtensionKeyShippingCredentialBr, LocalizationExtensionKeyShippingCredentialCn, LocalizationExtensionKeyTaxCredentialIt, LocalizationExtensionKeyTaxEmailIt, LocalizationExtensionKeyShippingCredentialKr:
		return true
	}
	return false
}

func (e LocalizationExtensionKey) String() string {
	return string(e)
}

func (e *LocalizationExtensionKey) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = LocalizationExtensionKey(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid LocalizationExtensionKey", str)
	}
	return nil
}

func (e LocalizationExtensionKey) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type LocalizationExtensionPurpose string

const (
	LocalizationExtensionPurposeShipping LocalizationExtensionPurpose = "SHIPPING"
	LocalizationExtensionPurposeTax      LocalizationExtensionPurpose = "TAX"
)

var AllLocalizationExtensionPurpose = []LocalizationExtensionPurpose{
	LocalizationExtensionPurposeShipping,
	LocalizationExtensionPurposeTax,
}

func (e LocalizationExtensionPurpose) IsValid() bool {
	switch e {
	case LocalizationExtensionPurposeShipping, LocalizationExtensionPurposeTax:
		return true
	}
	return false
}

func (e LocalizationExtensionPurpose) String() string {
	return string(e)
}

func (e *LocalizationExtensionPurpose) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = LocalizationExtensionPurpose(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid LocalizationExtensionPurpose", str)
	}
	return nil
}

func (e LocalizationExtensionPurpose) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type LocationSortKeys string

const (
	LocationSortKeysName      LocationSortKeys = "NAME"
	LocationSortKeysID        LocationSortKeys = "ID"
	LocationSortKeysRelevance LocationSortKeys = "RELEVANCE"
)

var AllLocationSortKeys = []LocationSortKeys{
	LocationSortKeysName,
	LocationSortKeysID,
	LocationSortKeysRelevance,
}

func (e LocationSortKeys) IsValid() bool {
	switch e {
	case LocationSortKeysName, LocationSortKeysID, LocationSortKeysRelevance:
		return true
	}
	return false
}

func (e LocationSortKeys) String() string {
	return string(e)
}

func (e *LocationSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = LocationSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid LocationSortKeys", str)
	}
	return nil
}

func (e LocationSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MarketingChannel string

const (
	MarketingChannelSearch   MarketingChannel = "SEARCH"
	MarketingChannelDisplay  MarketingChannel = "DISPLAY"
	MarketingChannelSocial   MarketingChannel = "SOCIAL"
	MarketingChannelEmail    MarketingChannel = "EMAIL"
	MarketingChannelReferral MarketingChannel = "REFERRAL"
)

var AllMarketingChannel = []MarketingChannel{
	MarketingChannelSearch,
	MarketingChannelDisplay,
	MarketingChannelSocial,
	MarketingChannelEmail,
	MarketingChannelReferral,
}

func (e MarketingChannel) IsValid() bool {
	switch e {
	case MarketingChannelSearch, MarketingChannelDisplay, MarketingChannelSocial, MarketingChannelEmail, MarketingChannelReferral:
		return true
	}
	return false
}

func (e MarketingChannel) String() string {
	return string(e)
}

func (e *MarketingChannel) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MarketingChannel(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MarketingChannel", str)
	}
	return nil
}

func (e MarketingChannel) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MarketingTactic string

const (
	MarketingTacticAbandonedCart MarketingTactic = "ABANDONED_CART"
	MarketingTacticAd            MarketingTactic = "AD"
	MarketingTacticAffiliate     MarketingTactic = "AFFILIATE"
	MarketingTacticLink          MarketingTactic = "LINK"
	MarketingTacticLoyalty       MarketingTactic = "LOYALTY"
	MarketingTacticMessage       MarketingTactic = "MESSAGE"
	MarketingTacticNewsletter    MarketingTactic = "NEWSLETTER"
	MarketingTacticNotification  MarketingTactic = "NOTIFICATION"
	MarketingTacticPost          MarketingTactic = "POST"
	MarketingTacticRetargeting   MarketingTactic = "RETARGETING"
	MarketingTacticTransactional MarketingTactic = "TRANSACTIONAL"
	MarketingTacticSeo           MarketingTactic = "SEO"
	MarketingTacticDirect        MarketingTactic = "DIRECT"
	MarketingTacticStorefrontApp MarketingTactic = "STOREFRONT_APP"
)

var AllMarketingTactic = []MarketingTactic{
	MarketingTacticAbandonedCart,
	MarketingTacticAd,
	MarketingTacticAffiliate,
	MarketingTacticLink,
	MarketingTacticLoyalty,
	MarketingTacticMessage,
	MarketingTacticNewsletter,
	MarketingTacticNotification,
	MarketingTacticPost,
	MarketingTacticRetargeting,
	MarketingTacticTransactional,
	MarketingTacticSeo,
	MarketingTacticDirect,
	MarketingTacticStorefrontApp,
}

func (e MarketingTactic) IsValid() bool {
	switch e {
	case MarketingTacticAbandonedCart, MarketingTacticAd, MarketingTacticAffiliate, MarketingTacticLink, MarketingTacticLoyalty, MarketingTacticMessage, MarketingTacticNewsletter, MarketingTacticNotification, MarketingTacticPost, MarketingTacticRetargeting, MarketingTacticTransactional, MarketingTacticSeo, MarketingTacticDirect, MarketingTacticStorefrontApp:
		return true
	}
	return false
}

func (e MarketingTactic) String() string {
	return string(e)
}

func (e *MarketingTactic) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MarketingTactic(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MarketingTactic", str)
	}
	return nil
}

func (e MarketingTactic) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaContentType string

const (
	MediaContentTypeVideo         MediaContentType = "VIDEO"
	MediaContentTypeExternalVideo MediaContentType = "EXTERNAL_VIDEO"
	MediaContentTypeModel3d       MediaContentType = "MODEL_3D"
	MediaContentTypeImage         MediaContentType = "IMAGE"
)

var AllMediaContentType = []MediaContentType{
	MediaContentTypeVideo,
	MediaContentTypeExternalVideo,
	MediaContentTypeModel3d,
	MediaContentTypeImage,
}

func (e MediaContentType) IsValid() bool {
	switch e {
	case MediaContentTypeVideo, MediaContentTypeExternalVideo, MediaContentTypeModel3d, MediaContentTypeImage:
		return true
	}
	return false
}

func (e MediaContentType) String() string {
	return string(e)
}

func (e *MediaContentType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaContentType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaContentType", str)
	}
	return nil
}

func (e MediaContentType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaErrorCode string

const (
	MediaErrorCodeUnknown                                 MediaErrorCode = "UNKNOWN"
	MediaErrorCodeInvalidSignedURL                        MediaErrorCode = "INVALID_SIGNED_URL"
	MediaErrorCodeImageDownloadFailure                    MediaErrorCode = "IMAGE_DOWNLOAD_FAILURE"
	MediaErrorCodeImageProcessingFailure                  MediaErrorCode = "IMAGE_PROCESSING_FAILURE"
	MediaErrorCodeMediaTimeoutError                       MediaErrorCode = "MEDIA_TIMEOUT_ERROR"
	MediaErrorCodeExternalVideoNotFound                   MediaErrorCode = "EXTERNAL_VIDEO_NOT_FOUND"
	MediaErrorCodeExternalVideoUnlisted                   MediaErrorCode = "EXTERNAL_VIDEO_UNLISTED"
	MediaErrorCodeExternalVideoInvalidAspectRatio         MediaErrorCode = "EXTERNAL_VIDEO_INVALID_ASPECT_RATIO"
	MediaErrorCodeExternalVideoEmbedDisabled              MediaErrorCode = "EXTERNAL_VIDEO_EMBED_DISABLED"
	MediaErrorCodeExternalVideoEmbedNotFoundOrTranscoding MediaErrorCode = "EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING"
	MediaErrorCodeGenericFileDownloadFailure              MediaErrorCode = "GENERIC_FILE_DOWNLOAD_FAILURE"
	MediaErrorCodeGenericFileInvalidSize                  MediaErrorCode = "GENERIC_FILE_INVALID_SIZE"
	MediaErrorCodeVideoMetadataReadError                  MediaErrorCode = "VIDEO_METADATA_READ_ERROR"
	MediaErrorCodeVideoInvalidFiletypeError               MediaErrorCode = "VIDEO_INVALID_FILETYPE_ERROR"
	MediaErrorCodeVideoMinWidthError                      MediaErrorCode = "VIDEO_MIN_WIDTH_ERROR"
	MediaErrorCodeVideoMaxWidthError                      MediaErrorCode = "VIDEO_MAX_WIDTH_ERROR"
	MediaErrorCodeVideoMinHeightError                     MediaErrorCode = "VIDEO_MIN_HEIGHT_ERROR"
	MediaErrorCodeVideoMaxHeightError                     MediaErrorCode = "VIDEO_MAX_HEIGHT_ERROR"
	MediaErrorCodeVideoMinDurationError                   MediaErrorCode = "VIDEO_MIN_DURATION_ERROR"
	MediaErrorCodeVideoMaxDurationError                   MediaErrorCode = "VIDEO_MAX_DURATION_ERROR"
	MediaErrorCodeVideoValidationError                    MediaErrorCode = "VIDEO_VALIDATION_ERROR"
	MediaErrorCodeModel3dValidationError                  MediaErrorCode = "MODEL3D_VALIDATION_ERROR"
	MediaErrorCodeModel3dThumbnailGenerationError         MediaErrorCode = "MODEL3D_THUMBNAIL_GENERATION_ERROR"
	MediaErrorCodeModel3dGlbToUsdzConversionError         MediaErrorCode = "MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR"
	MediaErrorCodeModel3dGlbOutputCreationError           MediaErrorCode = "MODEL3D_GLB_OUTPUT_CREATION_ERROR"
	MediaErrorCodeModel3dProcessingFailure                MediaErrorCode = "MODEL3D_PROCESSING_FAILURE"
	MediaErrorCodeUnsupportedImageFileType                MediaErrorCode = "UNSUPPORTED_IMAGE_FILE_TYPE"
	MediaErrorCodeInvalidImageFileSize                    MediaErrorCode = "INVALID_IMAGE_FILE_SIZE"
	MediaErrorCodeInvalidImageAspectRatio                 MediaErrorCode = "INVALID_IMAGE_ASPECT_RATIO"
	MediaErrorCodeInvalidImageResolution                  MediaErrorCode = "INVALID_IMAGE_RESOLUTION"
	MediaErrorCodeFileStorageLimitExceeded                MediaErrorCode = "FILE_STORAGE_LIMIT_EXCEEDED"
)

var AllMediaErrorCode = []MediaErrorCode{
	MediaErrorCodeUnknown,
	MediaErrorCodeInvalidSignedURL,
	MediaErrorCodeImageDownloadFailure,
	MediaErrorCodeImageProcessingFailure,
	MediaErrorCodeMediaTimeoutError,
	MediaErrorCodeExternalVideoNotFound,
	MediaErrorCodeExternalVideoUnlisted,
	MediaErrorCodeExternalVideoInvalidAspectRatio,
	MediaErrorCodeExternalVideoEmbedDisabled,
	MediaErrorCodeExternalVideoEmbedNotFoundOrTranscoding,
	MediaErrorCodeGenericFileDownloadFailure,
	MediaErrorCodeGenericFileInvalidSize,
	MediaErrorCodeVideoMetadataReadError,
	MediaErrorCodeVideoInvalidFiletypeError,
	MediaErrorCodeVideoMinWidthError,
	MediaErrorCodeVideoMaxWidthError,
	MediaErrorCodeVideoMinHeightError,
	MediaErrorCodeVideoMaxHeightError,
	MediaErrorCodeVideoMinDurationError,
	MediaErrorCodeVideoMaxDurationError,
	MediaErrorCodeVideoValidationError,
	MediaErrorCodeModel3dValidationError,
	MediaErrorCodeModel3dThumbnailGenerationError,
	MediaErrorCodeModel3dGlbToUsdzConversionError,
	MediaErrorCodeModel3dGlbOutputCreationError,
	MediaErrorCodeModel3dProcessingFailure,
	MediaErrorCodeUnsupportedImageFileType,
	MediaErrorCodeInvalidImageFileSize,
	MediaErrorCodeInvalidImageAspectRatio,
	MediaErrorCodeInvalidImageResolution,
	MediaErrorCodeFileStorageLimitExceeded,
}

func (e MediaErrorCode) IsValid() bool {
	switch e {
	case MediaErrorCodeUnknown, MediaErrorCodeInvalidSignedURL, MediaErrorCodeImageDownloadFailure, MediaErrorCodeImageProcessingFailure, MediaErrorCodeMediaTimeoutError, MediaErrorCodeExternalVideoNotFound, MediaErrorCodeExternalVideoUnlisted, MediaErrorCodeExternalVideoInvalidAspectRatio, MediaErrorCodeExternalVideoEmbedDisabled, MediaErrorCodeExternalVideoEmbedNotFoundOrTranscoding, MediaErrorCodeGenericFileDownloadFailure, MediaErrorCodeGenericFileInvalidSize, MediaErrorCodeVideoMetadataReadError, MediaErrorCodeVideoInvalidFiletypeError, MediaErrorCodeVideoMinWidthError, MediaErrorCodeVideoMaxWidthError, MediaErrorCodeVideoMinHeightError, MediaErrorCodeVideoMaxHeightError, MediaErrorCodeVideoMinDurationError, MediaErrorCodeVideoMaxDurationError, MediaErrorCodeVideoValidationError, MediaErrorCodeModel3dValidationError, MediaErrorCodeModel3dThumbnailGenerationError, MediaErrorCodeModel3dGlbToUsdzConversionError, MediaErrorCodeModel3dGlbOutputCreationError, MediaErrorCodeModel3dProcessingFailure, MediaErrorCodeUnsupportedImageFileType, MediaErrorCodeInvalidImageFileSize, MediaErrorCodeInvalidImageAspectRatio, MediaErrorCodeInvalidImageResolution, MediaErrorCodeFileStorageLimitExceeded:
		return true
	}
	return false
}

func (e MediaErrorCode) String() string {
	return string(e)
}

func (e *MediaErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaErrorCode", str)
	}
	return nil
}

func (e MediaErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaPreviewImageStatus string

const (
	MediaPreviewImageStatusUploaded   MediaPreviewImageStatus = "UPLOADED"
	MediaPreviewImageStatusProcessing MediaPreviewImageStatus = "PROCESSING"
	MediaPreviewImageStatusReady      MediaPreviewImageStatus = "READY"
	MediaPreviewImageStatusFailed     MediaPreviewImageStatus = "FAILED"
)

var AllMediaPreviewImageStatus = []MediaPreviewImageStatus{
	MediaPreviewImageStatusUploaded,
	MediaPreviewImageStatusProcessing,
	MediaPreviewImageStatusReady,
	MediaPreviewImageStatusFailed,
}

func (e MediaPreviewImageStatus) IsValid() bool {
	switch e {
	case MediaPreviewImageStatusUploaded, MediaPreviewImageStatusProcessing, MediaPreviewImageStatusReady, MediaPreviewImageStatusFailed:
		return true
	}
	return false
}

func (e MediaPreviewImageStatus) String() string {
	return string(e)
}

func (e *MediaPreviewImageStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaPreviewImageStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaPreviewImageStatus", str)
	}
	return nil
}

func (e MediaPreviewImageStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaStatus string

const (
	MediaStatusUploaded   MediaStatus = "UPLOADED"
	MediaStatusProcessing MediaStatus = "PROCESSING"
	MediaStatusReady      MediaStatus = "READY"
	MediaStatusFailed     MediaStatus = "FAILED"
)

var AllMediaStatus = []MediaStatus{
	MediaStatusUploaded,
	MediaStatusProcessing,
	MediaStatusReady,
	MediaStatusFailed,
}

func (e MediaStatus) IsValid() bool {
	switch e {
	case MediaStatusUploaded, MediaStatusProcessing, MediaStatusReady, MediaStatusFailed:
		return true
	}
	return false
}

func (e MediaStatus) String() string {
	return string(e)
}

func (e *MediaStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaStatus", str)
	}
	return nil
}

func (e MediaStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaUserErrorCode string

const (
	MediaUserErrorCodeInvalid                              MediaUserErrorCode = "INVALID"
	MediaUserErrorCodeBlank                                MediaUserErrorCode = "BLANK"
	MediaUserErrorCodeVideoValidationError                 MediaUserErrorCode = "VIDEO_VALIDATION_ERROR"
	MediaUserErrorCodeModel3dValidationError               MediaUserErrorCode = "MODEL3D_VALIDATION_ERROR"
	MediaUserErrorCodeVideoThrottleExceeded                MediaUserErrorCode = "VIDEO_THROTTLE_EXCEEDED"
	MediaUserErrorCodeModel3dThrottleExceeded              MediaUserErrorCode = "MODEL3D_THROTTLE_EXCEEDED"
	MediaUserErrorCodeProductMediaLimitExceeded            MediaUserErrorCode = "PRODUCT_MEDIA_LIMIT_EXCEEDED"
	MediaUserErrorCodeShopMediaLimitExceeded               MediaUserErrorCode = "SHOP_MEDIA_LIMIT_EXCEEDED"
	MediaUserErrorCodeProductDoesNotExist                  MediaUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	MediaUserErrorCodeMediaDoesNotExist                    MediaUserErrorCode = "MEDIA_DOES_NOT_EXIST"
	MediaUserErrorCodeMediaDoesNotExistOnProduct           MediaUserErrorCode = "MEDIA_DOES_NOT_EXIST_ON_PRODUCT"
	MediaUserErrorCodeTooManyMediaPerInputPair             MediaUserErrorCode = "TOO_MANY_MEDIA_PER_INPUT_PAIR"
	MediaUserErrorCodeMaximumVariantMediaPairsExceeded     MediaUserErrorCode = "MAXIMUM_VARIANT_MEDIA_PAIRS_EXCEEDED"
	MediaUserErrorCodeInvalidMediaType                     MediaUserErrorCode = "INVALID_MEDIA_TYPE"
	MediaUserErrorCodeProductVariantSpecifiedMultipleTimes MediaUserErrorCode = "PRODUCT_VARIANT_SPECIFIED_MULTIPLE_TIMES"
	MediaUserErrorCodeProductVariantDoesNotExistOnProduct  MediaUserErrorCode = "PRODUCT_VARIANT_DOES_NOT_EXIST_ON_PRODUCT"
	MediaUserErrorCodeNonReadyMedia                        MediaUserErrorCode = "NON_READY_MEDIA"
	MediaUserErrorCodeProductVariantAlreadyHasMedia        MediaUserErrorCode = "PRODUCT_VARIANT_ALREADY_HAS_MEDIA"
	MediaUserErrorCodeMediaIsNotAttachedToVariant          MediaUserErrorCode = "MEDIA_IS_NOT_ATTACHED_TO_VARIANT"
	MediaUserErrorCodeMediaCannotBeModified                MediaUserErrorCode = "MEDIA_CANNOT_BE_MODIFIED"
)

var AllMediaUserErrorCode = []MediaUserErrorCode{
	MediaUserErrorCodeInvalid,
	MediaUserErrorCodeBlank,
	MediaUserErrorCodeVideoValidationError,
	MediaUserErrorCodeModel3dValidationError,
	MediaUserErrorCodeVideoThrottleExceeded,
	MediaUserErrorCodeModel3dThrottleExceeded,
	MediaUserErrorCodeProductMediaLimitExceeded,
	MediaUserErrorCodeShopMediaLimitExceeded,
	MediaUserErrorCodeProductDoesNotExist,
	MediaUserErrorCodeMediaDoesNotExist,
	MediaUserErrorCodeMediaDoesNotExistOnProduct,
	MediaUserErrorCodeTooManyMediaPerInputPair,
	MediaUserErrorCodeMaximumVariantMediaPairsExceeded,
	MediaUserErrorCodeInvalidMediaType,
	MediaUserErrorCodeProductVariantSpecifiedMultipleTimes,
	MediaUserErrorCodeProductVariantDoesNotExistOnProduct,
	MediaUserErrorCodeNonReadyMedia,
	MediaUserErrorCodeProductVariantAlreadyHasMedia,
	MediaUserErrorCodeMediaIsNotAttachedToVariant,
	MediaUserErrorCodeMediaCannotBeModified,
}

func (e MediaUserErrorCode) IsValid() bool {
	switch e {
	case MediaUserErrorCodeInvalid, MediaUserErrorCodeBlank, MediaUserErrorCodeVideoValidationError, MediaUserErrorCodeModel3dValidationError, MediaUserErrorCodeVideoThrottleExceeded, MediaUserErrorCodeModel3dThrottleExceeded, MediaUserErrorCodeProductMediaLimitExceeded, MediaUserErrorCodeShopMediaLimitExceeded, MediaUserErrorCodeProductDoesNotExist, MediaUserErrorCodeMediaDoesNotExist, MediaUserErrorCodeMediaDoesNotExistOnProduct, MediaUserErrorCodeTooManyMediaPerInputPair, MediaUserErrorCodeMaximumVariantMediaPairsExceeded, MediaUserErrorCodeInvalidMediaType, MediaUserErrorCodeProductVariantSpecifiedMultipleTimes, MediaUserErrorCodeProductVariantDoesNotExistOnProduct, MediaUserErrorCodeNonReadyMedia, MediaUserErrorCodeProductVariantAlreadyHasMedia, MediaUserErrorCodeMediaIsNotAttachedToVariant, MediaUserErrorCodeMediaCannotBeModified:
		return true
	}
	return false
}

func (e MediaUserErrorCode) String() string {
	return string(e)
}

func (e *MediaUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaUserErrorCode", str)
	}
	return nil
}

func (e MediaUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MediaWarningCode string

const (
	MediaWarningCodeModelSmallPhysicalSize MediaWarningCode = "MODEL_SMALL_PHYSICAL_SIZE"
	MediaWarningCodeModelLargePhysicalSize MediaWarningCode = "MODEL_LARGE_PHYSICAL_SIZE"
)

var AllMediaWarningCode = []MediaWarningCode{
	MediaWarningCodeModelSmallPhysicalSize,
	MediaWarningCodeModelLargePhysicalSize,
}

func (e MediaWarningCode) IsValid() bool {
	switch e {
	case MediaWarningCodeModelSmallPhysicalSize, MediaWarningCodeModelLargePhysicalSize:
		return true
	}
	return false
}

func (e MediaWarningCode) String() string {
	return string(e)
}

func (e *MediaWarningCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MediaWarningCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MediaWarningCode", str)
	}
	return nil
}

func (e MediaWarningCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MetafieldDefinitionPinnedStatus string

const (
	MetafieldDefinitionPinnedStatusAny      MetafieldDefinitionPinnedStatus = "ANY"
	MetafieldDefinitionPinnedStatusPinned   MetafieldDefinitionPinnedStatus = "PINNED"
	MetafieldDefinitionPinnedStatusUnpinned MetafieldDefinitionPinnedStatus = "UNPINNED"
)

var AllMetafieldDefinitionPinnedStatus = []MetafieldDefinitionPinnedStatus{
	MetafieldDefinitionPinnedStatusAny,
	MetafieldDefinitionPinnedStatusPinned,
	MetafieldDefinitionPinnedStatusUnpinned,
}

func (e MetafieldDefinitionPinnedStatus) IsValid() bool {
	switch e {
	case MetafieldDefinitionPinnedStatusAny, MetafieldDefinitionPinnedStatusPinned, MetafieldDefinitionPinnedStatusUnpinned:
		return true
	}
	return false
}

func (e MetafieldDefinitionPinnedStatus) String() string {
	return string(e)
}

func (e *MetafieldDefinitionPinnedStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MetafieldDefinitionPinnedStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MetafieldDefinitionPinnedStatus", str)
	}
	return nil
}

func (e MetafieldDefinitionPinnedStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MetafieldDefinitionSortKeys string

const (
	MetafieldDefinitionSortKeysID             MetafieldDefinitionSortKeys = "ID"
	MetafieldDefinitionSortKeysName           MetafieldDefinitionSortKeys = "NAME"
	MetafieldDefinitionSortKeysPinnedPosition MetafieldDefinitionSortKeys = "PINNED_POSITION"
	MetafieldDefinitionSortKeysRelevance      MetafieldDefinitionSortKeys = "RELEVANCE"
)

var AllMetafieldDefinitionSortKeys = []MetafieldDefinitionSortKeys{
	MetafieldDefinitionSortKeysID,
	MetafieldDefinitionSortKeysName,
	MetafieldDefinitionSortKeysPinnedPosition,
	MetafieldDefinitionSortKeysRelevance,
}

func (e MetafieldDefinitionSortKeys) IsValid() bool {
	switch e {
	case MetafieldDefinitionSortKeysID, MetafieldDefinitionSortKeysName, MetafieldDefinitionSortKeysPinnedPosition, MetafieldDefinitionSortKeysRelevance:
		return true
	}
	return false
}

func (e MetafieldDefinitionSortKeys) String() string {
	return string(e)
}

func (e *MetafieldDefinitionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MetafieldDefinitionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MetafieldDefinitionSortKeys", str)
	}
	return nil
}

func (e MetafieldDefinitionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MetafieldDefinitionValidationStatus string

const (
	MetafieldDefinitionValidationStatusAllValid    MetafieldDefinitionValidationStatus = "ALL_VALID"
	MetafieldDefinitionValidationStatusInProgress  MetafieldDefinitionValidationStatus = "IN_PROGRESS"
	MetafieldDefinitionValidationStatusSomeInvalid MetafieldDefinitionValidationStatus = "SOME_INVALID"
)

var AllMetafieldDefinitionValidationStatus = []MetafieldDefinitionValidationStatus{
	MetafieldDefinitionValidationStatusAllValid,
	MetafieldDefinitionValidationStatusInProgress,
	MetafieldDefinitionValidationStatusSomeInvalid,
}

func (e MetafieldDefinitionValidationStatus) IsValid() bool {
	switch e {
	case MetafieldDefinitionValidationStatusAllValid, MetafieldDefinitionValidationStatusInProgress, MetafieldDefinitionValidationStatusSomeInvalid:
		return true
	}
	return false
}

func (e MetafieldDefinitionValidationStatus) String() string {
	return string(e)
}

func (e *MetafieldDefinitionValidationStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MetafieldDefinitionValidationStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MetafieldDefinitionValidationStatus", str)
	}
	return nil
}

func (e MetafieldDefinitionValidationStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MetafieldOwnerType string

const (
	MetafieldOwnerTypeAPIPermission  MetafieldOwnerType = "API_PERMISSION"
	MetafieldOwnerTypeArticle        MetafieldOwnerType = "ARTICLE"
	MetafieldOwnerTypeBlog           MetafieldOwnerType = "BLOG"
	MetafieldOwnerTypeCollection     MetafieldOwnerType = "COLLECTION"
	MetafieldOwnerTypeCustomer       MetafieldOwnerType = "CUSTOMER"
	MetafieldOwnerTypeDiscount       MetafieldOwnerType = "DISCOUNT"
	MetafieldOwnerTypeDraftorder     MetafieldOwnerType = "DRAFTORDER"
	MetafieldOwnerTypeLocation       MetafieldOwnerType = "LOCATION"
	MetafieldOwnerTypeOrder          MetafieldOwnerType = "ORDER"
	MetafieldOwnerTypePage           MetafieldOwnerType = "PAGE"
	MetafieldOwnerTypeProduct        MetafieldOwnerType = "PRODUCT"
	MetafieldOwnerTypeProductimage   MetafieldOwnerType = "PRODUCTIMAGE"
	MetafieldOwnerTypeProductvariant MetafieldOwnerType = "PRODUCTVARIANT"
	MetafieldOwnerTypeShop           MetafieldOwnerType = "SHOP"
)

var AllMetafieldOwnerType = []MetafieldOwnerType{
	MetafieldOwnerTypeAPIPermission,
	MetafieldOwnerTypeArticle,
	MetafieldOwnerTypeBlog,
	MetafieldOwnerTypeCollection,
	MetafieldOwnerTypeCustomer,
	MetafieldOwnerTypeDiscount,
	MetafieldOwnerTypeDraftorder,
	MetafieldOwnerTypeLocation,
	MetafieldOwnerTypeOrder,
	MetafieldOwnerTypePage,
	MetafieldOwnerTypeProduct,
	MetafieldOwnerTypeProductimage,
	MetafieldOwnerTypeProductvariant,
	MetafieldOwnerTypeShop,
}

func (e MetafieldOwnerType) IsValid() bool {
	switch e {
	case MetafieldOwnerTypeAPIPermission, MetafieldOwnerTypeArticle, MetafieldOwnerTypeBlog, MetafieldOwnerTypeCollection, MetafieldOwnerTypeCustomer, MetafieldOwnerTypeDiscount, MetafieldOwnerTypeDraftorder, MetafieldOwnerTypeLocation, MetafieldOwnerTypeOrder, MetafieldOwnerTypePage, MetafieldOwnerTypeProduct, MetafieldOwnerTypeProductimage, MetafieldOwnerTypeProductvariant, MetafieldOwnerTypeShop:
		return true
	}
	return false
}

func (e MetafieldOwnerType) String() string {
	return string(e)
}

func (e *MetafieldOwnerType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MetafieldOwnerType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MetafieldOwnerType", str)
	}
	return nil
}

func (e MetafieldOwnerType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MetafieldValidationStatus string

const (
	MetafieldValidationStatusAny     MetafieldValidationStatus = "ANY"
	MetafieldValidationStatusValid   MetafieldValidationStatus = "VALID"
	MetafieldValidationStatusInvalid MetafieldValidationStatus = "INVALID"
)

var AllMetafieldValidationStatus = []MetafieldValidationStatus{
	MetafieldValidationStatusAny,
	MetafieldValidationStatusValid,
	MetafieldValidationStatusInvalid,
}

func (e MetafieldValidationStatus) IsValid() bool {
	switch e {
	case MetafieldValidationStatusAny, MetafieldValidationStatusValid, MetafieldValidationStatusInvalid:
		return true
	}
	return false
}

func (e MetafieldValidationStatus) String() string {
	return string(e)
}

func (e *MetafieldValidationStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MetafieldValidationStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MetafieldValidationStatus", str)
	}
	return nil
}

func (e MetafieldValidationStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type MethodDefinitionSortKeys string

const (
	MethodDefinitionSortKeysRateProviderType MethodDefinitionSortKeys = "RATE_PROVIDER_TYPE"
	MethodDefinitionSortKeysID               MethodDefinitionSortKeys = "ID"
	MethodDefinitionSortKeysRelevance        MethodDefinitionSortKeys = "RELEVANCE"
)

var AllMethodDefinitionSortKeys = []MethodDefinitionSortKeys{
	MethodDefinitionSortKeysRateProviderType,
	MethodDefinitionSortKeysID,
	MethodDefinitionSortKeysRelevance,
}

func (e MethodDefinitionSortKeys) IsValid() bool {
	switch e {
	case MethodDefinitionSortKeysRateProviderType, MethodDefinitionSortKeysID, MethodDefinitionSortKeysRelevance:
		return true
	}
	return false
}

func (e MethodDefinitionSortKeys) String() string {
	return string(e)
}

func (e *MethodDefinitionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = MethodDefinitionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid MethodDefinitionSortKeys", str)
	}
	return nil
}

func (e MethodDefinitionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderActionType string

const (
	OrderActionTypeOrder     OrderActionType = "ORDER"
	OrderActionTypeOrderEdit OrderActionType = "ORDER_EDIT"
	OrderActionTypeRefund    OrderActionType = "REFUND"
	OrderActionTypeUnknown   OrderActionType = "UNKNOWN"
)

var AllOrderActionType = []OrderActionType{
	OrderActionTypeOrder,
	OrderActionTypeOrderEdit,
	OrderActionTypeRefund,
	OrderActionTypeUnknown,
}

func (e OrderActionType) IsValid() bool {
	switch e {
	case OrderActionTypeOrder, OrderActionTypeOrderEdit, OrderActionTypeRefund, OrderActionTypeUnknown:
		return true
	}
	return false
}

func (e OrderActionType) String() string {
	return string(e)
}

func (e *OrderActionType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderActionType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderActionType", str)
	}
	return nil
}

func (e OrderActionType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderCancelReason string

const (
	OrderCancelReasonCustomer  OrderCancelReason = "CUSTOMER"
	OrderCancelReasonFraud     OrderCancelReason = "FRAUD"
	OrderCancelReasonInventory OrderCancelReason = "INVENTORY"
	OrderCancelReasonDeclined  OrderCancelReason = "DECLINED"
	OrderCancelReasonOther     OrderCancelReason = "OTHER"
)

var AllOrderCancelReason = []OrderCancelReason{
	OrderCancelReasonCustomer,
	OrderCancelReasonFraud,
	OrderCancelReasonInventory,
	OrderCancelReasonDeclined,
	OrderCancelReasonOther,
}

func (e OrderCancelReason) IsValid() bool {
	switch e {
	case OrderCancelReasonCustomer, OrderCancelReasonFraud, OrderCancelReasonInventory, OrderCancelReasonDeclined, OrderCancelReasonOther:
		return true
	}
	return false
}

func (e OrderCancelReason) String() string {
	return string(e)
}

func (e *OrderCancelReason) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderCancelReason(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderCancelReason", str)
	}
	return nil
}

func (e OrderCancelReason) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderDisplayFinancialStatus string

const (
	OrderDisplayFinancialStatusPending           OrderDisplayFinancialStatus = "PENDING"
	OrderDisplayFinancialStatusAuthorized        OrderDisplayFinancialStatus = "AUTHORIZED"
	OrderDisplayFinancialStatusPartiallyPaid     OrderDisplayFinancialStatus = "PARTIALLY_PAID"
	OrderDisplayFinancialStatusPartiallyRefunded OrderDisplayFinancialStatus = "PARTIALLY_REFUNDED"
	OrderDisplayFinancialStatusVoided            OrderDisplayFinancialStatus = "VOIDED"
	OrderDisplayFinancialStatusPaid              OrderDisplayFinancialStatus = "PAID"
	OrderDisplayFinancialStatusRefunded          OrderDisplayFinancialStatus = "REFUNDED"
	OrderDisplayFinancialStatusExpired           OrderDisplayFinancialStatus = "EXPIRED"
)

var AllOrderDisplayFinancialStatus = []OrderDisplayFinancialStatus{
	OrderDisplayFinancialStatusPending,
	OrderDisplayFinancialStatusAuthorized,
	OrderDisplayFinancialStatusPartiallyPaid,
	OrderDisplayFinancialStatusPartiallyRefunded,
	OrderDisplayFinancialStatusVoided,
	OrderDisplayFinancialStatusPaid,
	OrderDisplayFinancialStatusRefunded,
	OrderDisplayFinancialStatusExpired,
}

func (e OrderDisplayFinancialStatus) IsValid() bool {
	switch e {
	case OrderDisplayFinancialStatusPending, OrderDisplayFinancialStatusAuthorized, OrderDisplayFinancialStatusPartiallyPaid, OrderDisplayFinancialStatusPartiallyRefunded, OrderDisplayFinancialStatusVoided, OrderDisplayFinancialStatusPaid, OrderDisplayFinancialStatusRefunded, OrderDisplayFinancialStatusExpired:
		return true
	}
	return false
}

func (e OrderDisplayFinancialStatus) String() string {
	return string(e)
}

func (e *OrderDisplayFinancialStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderDisplayFinancialStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderDisplayFinancialStatus", str)
	}
	return nil
}

func (e OrderDisplayFinancialStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderDisplayFulfillmentStatus string

const (
	OrderDisplayFulfillmentStatusUnfulfilled        OrderDisplayFulfillmentStatus = "UNFULFILLED"
	OrderDisplayFulfillmentStatusPartiallyFulfilled OrderDisplayFulfillmentStatus = "PARTIALLY_FULFILLED"
	OrderDisplayFulfillmentStatusFulfilled          OrderDisplayFulfillmentStatus = "FULFILLED"
	OrderDisplayFulfillmentStatusRestocked          OrderDisplayFulfillmentStatus = "RESTOCKED"
	OrderDisplayFulfillmentStatusPendingFulfillment OrderDisplayFulfillmentStatus = "PENDING_FULFILLMENT"
	OrderDisplayFulfillmentStatusOpen               OrderDisplayFulfillmentStatus = "OPEN"
	OrderDisplayFulfillmentStatusInProgress         OrderDisplayFulfillmentStatus = "IN_PROGRESS"
	OrderDisplayFulfillmentStatusOnHold             OrderDisplayFulfillmentStatus = "ON_HOLD"
	OrderDisplayFulfillmentStatusScheduled          OrderDisplayFulfillmentStatus = "SCHEDULED"
)

var AllOrderDisplayFulfillmentStatus = []OrderDisplayFulfillmentStatus{
	OrderDisplayFulfillmentStatusUnfulfilled,
	OrderDisplayFulfillmentStatusPartiallyFulfilled,
	OrderDisplayFulfillmentStatusFulfilled,
	OrderDisplayFulfillmentStatusRestocked,
	OrderDisplayFulfillmentStatusPendingFulfillment,
	OrderDisplayFulfillmentStatusOpen,
	OrderDisplayFulfillmentStatusInProgress,
	OrderDisplayFulfillmentStatusOnHold,
	OrderDisplayFulfillmentStatusScheduled,
}

func (e OrderDisplayFulfillmentStatus) IsValid() bool {
	switch e {
	case OrderDisplayFulfillmentStatusUnfulfilled, OrderDisplayFulfillmentStatusPartiallyFulfilled, OrderDisplayFulfillmentStatusFulfilled, OrderDisplayFulfillmentStatusRestocked, OrderDisplayFulfillmentStatusPendingFulfillment, OrderDisplayFulfillmentStatusOpen, OrderDisplayFulfillmentStatusInProgress, OrderDisplayFulfillmentStatusOnHold, OrderDisplayFulfillmentStatusScheduled:
		return true
	}
	return false
}

func (e OrderDisplayFulfillmentStatus) String() string {
	return string(e)
}

func (e *OrderDisplayFulfillmentStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderDisplayFulfillmentStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderDisplayFulfillmentStatus", str)
	}
	return nil
}

func (e OrderDisplayFulfillmentStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderRiskLevel string

const (
	OrderRiskLevelLow    OrderRiskLevel = "LOW"
	OrderRiskLevelMedium OrderRiskLevel = "MEDIUM"
	OrderRiskLevelHigh   OrderRiskLevel = "HIGH"
)

var AllOrderRiskLevel = []OrderRiskLevel{
	OrderRiskLevelLow,
	OrderRiskLevelMedium,
	OrderRiskLevelHigh,
}

func (e OrderRiskLevel) IsValid() bool {
	switch e {
	case OrderRiskLevelLow, OrderRiskLevelMedium, OrderRiskLevelHigh:
		return true
	}
	return false
}

func (e OrderRiskLevel) String() string {
	return string(e)
}

func (e *OrderRiskLevel) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderRiskLevel(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderRiskLevel", str)
	}
	return nil
}

func (e OrderRiskLevel) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderSortKeys string

const (
	OrderSortKeysCreatedAt         OrderSortKeys = "CREATED_AT"
	OrderSortKeysCustomerName      OrderSortKeys = "CUSTOMER_NAME"
	OrderSortKeysFinancialStatus   OrderSortKeys = "FINANCIAL_STATUS"
	OrderSortKeysFulfillmentStatus OrderSortKeys = "FULFILLMENT_STATUS"
	OrderSortKeysOrderNumber       OrderSortKeys = "ORDER_NUMBER"
	OrderSortKeysProcessedAt       OrderSortKeys = "PROCESSED_AT"
	OrderSortKeysTotalPrice        OrderSortKeys = "TOTAL_PRICE"
	OrderSortKeysUpdatedAt         OrderSortKeys = "UPDATED_AT"
	OrderSortKeysID                OrderSortKeys = "ID"
	OrderSortKeysRelevance         OrderSortKeys = "RELEVANCE"
)

var AllOrderSortKeys = []OrderSortKeys{
	OrderSortKeysCreatedAt,
	OrderSortKeysCustomerName,
	OrderSortKeysFinancialStatus,
	OrderSortKeysFulfillmentStatus,
	OrderSortKeysOrderNumber,
	OrderSortKeysProcessedAt,
	OrderSortKeysTotalPrice,
	OrderSortKeysUpdatedAt,
	OrderSortKeysID,
	OrderSortKeysRelevance,
}

func (e OrderSortKeys) IsValid() bool {
	switch e {
	case OrderSortKeysCreatedAt, OrderSortKeysCustomerName, OrderSortKeysFinancialStatus, OrderSortKeysFulfillmentStatus, OrderSortKeysOrderNumber, OrderSortKeysProcessedAt, OrderSortKeysTotalPrice, OrderSortKeysUpdatedAt, OrderSortKeysID, OrderSortKeysRelevance:
		return true
	}
	return false
}

func (e OrderSortKeys) String() string {
	return string(e)
}

func (e *OrderSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderSortKeys", str)
	}
	return nil
}

func (e OrderSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderTransactionErrorCode string

const (
	OrderTransactionErrorCodeIncorrectNumber                         OrderTransactionErrorCode = "INCORRECT_NUMBER"
	OrderTransactionErrorCodeInvalidNumber                           OrderTransactionErrorCode = "INVALID_NUMBER"
	OrderTransactionErrorCodeInvalidExpiryDate                       OrderTransactionErrorCode = "INVALID_EXPIRY_DATE"
	OrderTransactionErrorCodeInvalidCvc                              OrderTransactionErrorCode = "INVALID_CVC"
	OrderTransactionErrorCodeExpiredCard                             OrderTransactionErrorCode = "EXPIRED_CARD"
	OrderTransactionErrorCodeIncorrectCvc                            OrderTransactionErrorCode = "INCORRECT_CVC"
	OrderTransactionErrorCodeIncorrectZip                            OrderTransactionErrorCode = "INCORRECT_ZIP"
	OrderTransactionErrorCodeIncorrectAddress                        OrderTransactionErrorCode = "INCORRECT_ADDRESS"
	OrderTransactionErrorCodeIncorrectPin                            OrderTransactionErrorCode = "INCORRECT_PIN"
	OrderTransactionErrorCodeCardDeclined                            OrderTransactionErrorCode = "CARD_DECLINED"
	OrderTransactionErrorCodeProcessingError                         OrderTransactionErrorCode = "PROCESSING_ERROR"
	OrderTransactionErrorCodeCallIssuer                              OrderTransactionErrorCode = "CALL_ISSUER"
	OrderTransactionErrorCodePickUpCard                              OrderTransactionErrorCode = "PICK_UP_CARD"
	OrderTransactionErrorCodeConfigError                             OrderTransactionErrorCode = "CONFIG_ERROR"
	OrderTransactionErrorCodeTestModeLiveCard                        OrderTransactionErrorCode = "TEST_MODE_LIVE_CARD"
	OrderTransactionErrorCodeUnsupportedFeature                      OrderTransactionErrorCode = "UNSUPPORTED_FEATURE"
	OrderTransactionErrorCodeGenericError                            OrderTransactionErrorCode = "GENERIC_ERROR"
	OrderTransactionErrorCodeInvalidCountry                          OrderTransactionErrorCode = "INVALID_COUNTRY"
	OrderTransactionErrorCodeInvalidAmount                           OrderTransactionErrorCode = "INVALID_AMOUNT"
	OrderTransactionErrorCodePaymentMethodUnavailable                OrderTransactionErrorCode = "PAYMENT_METHOD_UNAVAILABLE"
	OrderTransactionErrorCodeAmazonPaymentsInvalidPaymentMethod      OrderTransactionErrorCode = "AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD"
	OrderTransactionErrorCodeAmazonPaymentsMaxAmountCharged          OrderTransactionErrorCode = "AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED"
	OrderTransactionErrorCodeAmazonPaymentsMaxAmountRefunded         OrderTransactionErrorCode = "AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED"
	OrderTransactionErrorCodeAmazonPaymentsMaxAuthorizationsCaptured OrderTransactionErrorCode = "AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED"
	OrderTransactionErrorCodeAmazonPaymentsMaxRefundsProcessed       OrderTransactionErrorCode = "AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED"
	OrderTransactionErrorCodeAmazonPaymentsOrderReferenceCanceled    OrderTransactionErrorCode = "AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED"
	OrderTransactionErrorCodeAmazonPaymentsStale                     OrderTransactionErrorCode = "AMAZON_PAYMENTS_STALE"
)

var AllOrderTransactionErrorCode = []OrderTransactionErrorCode{
	OrderTransactionErrorCodeIncorrectNumber,
	OrderTransactionErrorCodeInvalidNumber,
	OrderTransactionErrorCodeInvalidExpiryDate,
	OrderTransactionErrorCodeInvalidCvc,
	OrderTransactionErrorCodeExpiredCard,
	OrderTransactionErrorCodeIncorrectCvc,
	OrderTransactionErrorCodeIncorrectZip,
	OrderTransactionErrorCodeIncorrectAddress,
	OrderTransactionErrorCodeIncorrectPin,
	OrderTransactionErrorCodeCardDeclined,
	OrderTransactionErrorCodeProcessingError,
	OrderTransactionErrorCodeCallIssuer,
	OrderTransactionErrorCodePickUpCard,
	OrderTransactionErrorCodeConfigError,
	OrderTransactionErrorCodeTestModeLiveCard,
	OrderTransactionErrorCodeUnsupportedFeature,
	OrderTransactionErrorCodeGenericError,
	OrderTransactionErrorCodeInvalidCountry,
	OrderTransactionErrorCodeInvalidAmount,
	OrderTransactionErrorCodePaymentMethodUnavailable,
	OrderTransactionErrorCodeAmazonPaymentsInvalidPaymentMethod,
	OrderTransactionErrorCodeAmazonPaymentsMaxAmountCharged,
	OrderTransactionErrorCodeAmazonPaymentsMaxAmountRefunded,
	OrderTransactionErrorCodeAmazonPaymentsMaxAuthorizationsCaptured,
	OrderTransactionErrorCodeAmazonPaymentsMaxRefundsProcessed,
	OrderTransactionErrorCodeAmazonPaymentsOrderReferenceCanceled,
	OrderTransactionErrorCodeAmazonPaymentsStale,
}

func (e OrderTransactionErrorCode) IsValid() bool {
	switch e {
	case OrderTransactionErrorCodeIncorrectNumber, OrderTransactionErrorCodeInvalidNumber, OrderTransactionErrorCodeInvalidExpiryDate, OrderTransactionErrorCodeInvalidCvc, OrderTransactionErrorCodeExpiredCard, OrderTransactionErrorCodeIncorrectCvc, OrderTransactionErrorCodeIncorrectZip, OrderTransactionErrorCodeIncorrectAddress, OrderTransactionErrorCodeIncorrectPin, OrderTransactionErrorCodeCardDeclined, OrderTransactionErrorCodeProcessingError, OrderTransactionErrorCodeCallIssuer, OrderTransactionErrorCodePickUpCard, OrderTransactionErrorCodeConfigError, OrderTransactionErrorCodeTestModeLiveCard, OrderTransactionErrorCodeUnsupportedFeature, OrderTransactionErrorCodeGenericError, OrderTransactionErrorCodeInvalidCountry, OrderTransactionErrorCodeInvalidAmount, OrderTransactionErrorCodePaymentMethodUnavailable, OrderTransactionErrorCodeAmazonPaymentsInvalidPaymentMethod, OrderTransactionErrorCodeAmazonPaymentsMaxAmountCharged, OrderTransactionErrorCodeAmazonPaymentsMaxAmountRefunded, OrderTransactionErrorCodeAmazonPaymentsMaxAuthorizationsCaptured, OrderTransactionErrorCodeAmazonPaymentsMaxRefundsProcessed, OrderTransactionErrorCodeAmazonPaymentsOrderReferenceCanceled, OrderTransactionErrorCodeAmazonPaymentsStale:
		return true
	}
	return false
}

func (e OrderTransactionErrorCode) String() string {
	return string(e)
}

func (e *OrderTransactionErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderTransactionErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderTransactionErrorCode", str)
	}
	return nil
}

func (e OrderTransactionErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderTransactionKind string

const (
	OrderTransactionKindSale             OrderTransactionKind = "SALE"
	OrderTransactionKindCapture          OrderTransactionKind = "CAPTURE"
	OrderTransactionKindAuthorization    OrderTransactionKind = "AUTHORIZATION"
	OrderTransactionKindVoid             OrderTransactionKind = "VOID"
	OrderTransactionKindRefund           OrderTransactionKind = "REFUND"
	OrderTransactionKindChange           OrderTransactionKind = "CHANGE"
	OrderTransactionKindEmvAuthorization OrderTransactionKind = "EMV_AUTHORIZATION"
	OrderTransactionKindSuggestedRefund  OrderTransactionKind = "SUGGESTED_REFUND"
)

var AllOrderTransactionKind = []OrderTransactionKind{
	OrderTransactionKindSale,
	OrderTransactionKindCapture,
	OrderTransactionKindAuthorization,
	OrderTransactionKindVoid,
	OrderTransactionKindRefund,
	OrderTransactionKindChange,
	OrderTransactionKindEmvAuthorization,
	OrderTransactionKindSuggestedRefund,
}

func (e OrderTransactionKind) IsValid() bool {
	switch e {
	case OrderTransactionKindSale, OrderTransactionKindCapture, OrderTransactionKindAuthorization, OrderTransactionKindVoid, OrderTransactionKindRefund, OrderTransactionKindChange, OrderTransactionKindEmvAuthorization, OrderTransactionKindSuggestedRefund:
		return true
	}
	return false
}

func (e OrderTransactionKind) String() string {
	return string(e)
}

func (e *OrderTransactionKind) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderTransactionKind(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderTransactionKind", str)
	}
	return nil
}

func (e OrderTransactionKind) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type OrderTransactionStatus string

const (
	OrderTransactionStatusSuccess          OrderTransactionStatus = "SUCCESS"
	OrderTransactionStatusFailure          OrderTransactionStatus = "FAILURE"
	OrderTransactionStatusPending          OrderTransactionStatus = "PENDING"
	OrderTransactionStatusError            OrderTransactionStatus = "ERROR"
	OrderTransactionStatusAwaitingResponse OrderTransactionStatus = "AWAITING_RESPONSE"
	OrderTransactionStatusUnknown          OrderTransactionStatus = "UNKNOWN"
)

var AllOrderTransactionStatus = []OrderTransactionStatus{
	OrderTransactionStatusSuccess,
	OrderTransactionStatusFailure,
	OrderTransactionStatusPending,
	OrderTransactionStatusError,
	OrderTransactionStatusAwaitingResponse,
	OrderTransactionStatusUnknown,
}

func (e OrderTransactionStatus) IsValid() bool {
	switch e {
	case OrderTransactionStatusSuccess, OrderTransactionStatusFailure, OrderTransactionStatusPending, OrderTransactionStatusError, OrderTransactionStatusAwaitingResponse, OrderTransactionStatusUnknown:
		return true
	}
	return false
}

func (e OrderTransactionStatus) String() string {
	return string(e)
}

func (e *OrderTransactionStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = OrderTransactionStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid OrderTransactionStatus", str)
	}
	return nil
}

func (e OrderTransactionStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type PaymentTermsType string

const (
	PaymentTermsTypeReceipt PaymentTermsType = "RECEIPT"
	PaymentTermsTypeNet     PaymentTermsType = "NET"
	PaymentTermsTypeFixed   PaymentTermsType = "FIXED"
	PaymentTermsTypeUnknown PaymentTermsType = "UNKNOWN"
)

var AllPaymentTermsType = []PaymentTermsType{
	PaymentTermsTypeReceipt,
	PaymentTermsTypeNet,
	PaymentTermsTypeFixed,
	PaymentTermsTypeUnknown,
}

func (e PaymentTermsType) IsValid() bool {
	switch e {
	case PaymentTermsTypeReceipt, PaymentTermsTypeNet, PaymentTermsTypeFixed, PaymentTermsTypeUnknown:
		return true
	}
	return false
}

func (e PaymentTermsType) String() string {
	return string(e)
}

func (e *PaymentTermsType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = PaymentTermsType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid PaymentTermsType", str)
	}
	return nil
}

func (e PaymentTermsType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type PaypalExpressSubscriptionsGatewayStatus string

const (
	PaypalExpressSubscriptionsGatewayStatusEnabled  PaypalExpressSubscriptionsGatewayStatus = "ENABLED"
	PaypalExpressSubscriptionsGatewayStatusDisabled PaypalExpressSubscriptionsGatewayStatus = "DISABLED"
	PaypalExpressSubscriptionsGatewayStatusPending  PaypalExpressSubscriptionsGatewayStatus = "PENDING"
)

var AllPaypalExpressSubscriptionsGatewayStatus = []PaypalExpressSubscriptionsGatewayStatus{
	PaypalExpressSubscriptionsGatewayStatusEnabled,
	PaypalExpressSubscriptionsGatewayStatusDisabled,
	PaypalExpressSubscriptionsGatewayStatusPending,
}

func (e PaypalExpressSubscriptionsGatewayStatus) IsValid() bool {
	switch e {
	case PaypalExpressSubscriptionsGatewayStatusEnabled, PaypalExpressSubscriptionsGatewayStatusDisabled, PaypalExpressSubscriptionsGatewayStatusPending:
		return true
	}
	return false
}

func (e PaypalExpressSubscriptionsGatewayStatus) String() string {
	return string(e)
}

func (e *PaypalExpressSubscriptionsGatewayStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = PaypalExpressSubscriptionsGatewayStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid PaypalExpressSubscriptionsGatewayStatus", str)
	}
	return nil
}

func (e PaypalExpressSubscriptionsGatewayStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type PriceListAdjustmentType string

const (
	PriceListAdjustmentTypePercentageDecrease PriceListAdjustmentType = "PERCENTAGE_DECREASE"
	PriceListAdjustmentTypePercentageIncrease PriceListAdjustmentType = "PERCENTAGE_INCREASE"
)

var AllPriceListAdjustmentType = []PriceListAdjustmentType{
	PriceListAdjustmentTypePercentageDecrease,
	PriceListAdjustmentTypePercentageIncrease,
}

func (e PriceListAdjustmentType) IsValid() bool {
	switch e {
	case PriceListAdjustmentTypePercentageDecrease, PriceListAdjustmentTypePercentageIncrease:
		return true
	}
	return false
}

func (e PriceListAdjustmentType) String() string {
	return string(e)
}

func (e *PriceListAdjustmentType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = PriceListAdjustmentType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid PriceListAdjustmentType", str)
	}
	return nil
}

func (e PriceListAdjustmentType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type PriceListPriceOriginType string

const (
	PriceListPriceOriginTypeFixed    PriceListPriceOriginType = "FIXED"
	PriceListPriceOriginTypeRelative PriceListPriceOriginType = "RELATIVE"
)

var AllPriceListPriceOriginType = []PriceListPriceOriginType{
	PriceListPriceOriginTypeFixed,
	PriceListPriceOriginTypeRelative,
}

func (e PriceListPriceOriginType) IsValid() bool {
	switch e {
	case PriceListPriceOriginTypeFixed, PriceListPriceOriginTypeRelative:
		return true
	}
	return false
}

func (e PriceListPriceOriginType) String() string {
	return string(e)
}

func (e *PriceListPriceOriginType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = PriceListPriceOriginType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid PriceListPriceOriginType", str)
	}
	return nil
}

func (e PriceListPriceOriginType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type PrivateMetafieldValueType string

const (
	PrivateMetafieldValueTypeString     PrivateMetafieldValueType = "STRING"
	PrivateMetafieldValueTypeInteger    PrivateMetafieldValueType = "INTEGER"
	PrivateMetafieldValueTypeJSONString PrivateMetafieldValueType = "JSON_STRING"
)

var AllPrivateMetafieldValueType = []PrivateMetafieldValueType{
	PrivateMetafieldValueTypeString,
	PrivateMetafieldValueTypeInteger,
	PrivateMetafieldValueTypeJSONString,
}

func (e PrivateMetafieldValueType) IsValid() bool {
	switch e {
	case PrivateMetafieldValueTypeString, PrivateMetafieldValueTypeInteger, PrivateMetafieldValueTypeJSONString:
		return true
	}
	return false
}

func (e PrivateMetafieldValueType) String() string {
	return string(e)
}

func (e *PrivateMetafieldValueType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = PrivateMetafieldValueType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid PrivateMetafieldValueType", str)
	}
	return nil
}

func (e PrivateMetafieldValueType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductChangeStatusUserErrorCode string

const (
	ProductChangeStatusUserErrorCodeProductNotFound ProductChangeStatusUserErrorCode = "PRODUCT_NOT_FOUND"
)

var AllProductChangeStatusUserErrorCode = []ProductChangeStatusUserErrorCode{
	ProductChangeStatusUserErrorCodeProductNotFound,
}

func (e ProductChangeStatusUserErrorCode) IsValid() bool {
	switch e {
	case ProductChangeStatusUserErrorCodeProductNotFound:
		return true
	}
	return false
}

func (e ProductChangeStatusUserErrorCode) String() string {
	return string(e)
}

func (e *ProductChangeStatusUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductChangeStatusUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductChangeStatusUserErrorCode", str)
	}
	return nil
}

func (e ProductChangeStatusUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductCollectionSortKeys string

const (
	ProductCollectionSortKeysTitle             ProductCollectionSortKeys = "TITLE"
	ProductCollectionSortKeysPrice             ProductCollectionSortKeys = "PRICE"
	ProductCollectionSortKeysBestSelling       ProductCollectionSortKeys = "BEST_SELLING"
	ProductCollectionSortKeysCreated           ProductCollectionSortKeys = "CREATED"
	ProductCollectionSortKeysID                ProductCollectionSortKeys = "ID"
	ProductCollectionSortKeysManual            ProductCollectionSortKeys = "MANUAL"
	ProductCollectionSortKeysCollectionDefault ProductCollectionSortKeys = "COLLECTION_DEFAULT"
	ProductCollectionSortKeysRelevance         ProductCollectionSortKeys = "RELEVANCE"
)

var AllProductCollectionSortKeys = []ProductCollectionSortKeys{
	ProductCollectionSortKeysTitle,
	ProductCollectionSortKeysPrice,
	ProductCollectionSortKeysBestSelling,
	ProductCollectionSortKeysCreated,
	ProductCollectionSortKeysID,
	ProductCollectionSortKeysManual,
	ProductCollectionSortKeysCollectionDefault,
	ProductCollectionSortKeysRelevance,
}

func (e ProductCollectionSortKeys) IsValid() bool {
	switch e {
	case ProductCollectionSortKeysTitle, ProductCollectionSortKeysPrice, ProductCollectionSortKeysBestSelling, ProductCollectionSortKeysCreated, ProductCollectionSortKeysID, ProductCollectionSortKeysManual, ProductCollectionSortKeysCollectionDefault, ProductCollectionSortKeysRelevance:
		return true
	}
	return false
}

func (e ProductCollectionSortKeys) String() string {
	return string(e)
}

func (e *ProductCollectionSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductCollectionSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductCollectionSortKeys", str)
	}
	return nil
}

func (e ProductCollectionSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductImageSortKeys string

const (
	ProductImageSortKeysCreatedAt ProductImageSortKeys = "CREATED_AT"
	ProductImageSortKeysPosition  ProductImageSortKeys = "POSITION"
	ProductImageSortKeysID        ProductImageSortKeys = "ID"
	ProductImageSortKeysRelevance ProductImageSortKeys = "RELEVANCE"
)

var AllProductImageSortKeys = []ProductImageSortKeys{
	ProductImageSortKeysCreatedAt,
	ProductImageSortKeysPosition,
	ProductImageSortKeysID,
	ProductImageSortKeysRelevance,
}

func (e ProductImageSortKeys) IsValid() bool {
	switch e {
	case ProductImageSortKeysCreatedAt, ProductImageSortKeysPosition, ProductImageSortKeysID, ProductImageSortKeysRelevance:
		return true
	}
	return false
}

func (e ProductImageSortKeys) String() string {
	return string(e)
}

func (e *ProductImageSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductImageSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductImageSortKeys", str)
	}
	return nil
}

func (e ProductImageSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductMediaSortKeys string

const (
	ProductMediaSortKeysPosition  ProductMediaSortKeys = "POSITION"
	ProductMediaSortKeysID        ProductMediaSortKeys = "ID"
	ProductMediaSortKeysRelevance ProductMediaSortKeys = "RELEVANCE"
)

var AllProductMediaSortKeys = []ProductMediaSortKeys{
	ProductMediaSortKeysPosition,
	ProductMediaSortKeysID,
	ProductMediaSortKeysRelevance,
}

func (e ProductMediaSortKeys) IsValid() bool {
	switch e {
	case ProductMediaSortKeysPosition, ProductMediaSortKeysID, ProductMediaSortKeysRelevance:
		return true
	}
	return false
}

func (e ProductMediaSortKeys) String() string {
	return string(e)
}

func (e *ProductMediaSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductMediaSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductMediaSortKeys", str)
	}
	return nil
}

func (e ProductMediaSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductSortKeys string

const (
	ProductSortKeysTitle          ProductSortKeys = "TITLE"
	ProductSortKeysProductType    ProductSortKeys = "PRODUCT_TYPE"
	ProductSortKeysVendor         ProductSortKeys = "VENDOR"
	ProductSortKeysInventoryTotal ProductSortKeys = "INVENTORY_TOTAL"
	ProductSortKeysUpdatedAt      ProductSortKeys = "UPDATED_AT"
	ProductSortKeysCreatedAt      ProductSortKeys = "CREATED_AT"
	ProductSortKeysPublishedAt    ProductSortKeys = "PUBLISHED_AT"
	ProductSortKeysID             ProductSortKeys = "ID"
	ProductSortKeysRelevance      ProductSortKeys = "RELEVANCE"
)

var AllProductSortKeys = []ProductSortKeys{
	ProductSortKeysTitle,
	ProductSortKeysProductType,
	ProductSortKeysVendor,
	ProductSortKeysInventoryTotal,
	ProductSortKeysUpdatedAt,
	ProductSortKeysCreatedAt,
	ProductSortKeysPublishedAt,
	ProductSortKeysID,
	ProductSortKeysRelevance,
}

func (e ProductSortKeys) IsValid() bool {
	switch e {
	case ProductSortKeysTitle, ProductSortKeysProductType, ProductSortKeysVendor, ProductSortKeysInventoryTotal, ProductSortKeysUpdatedAt, ProductSortKeysCreatedAt, ProductSortKeysPublishedAt, ProductSortKeysID, ProductSortKeysRelevance:
		return true
	}
	return false
}

func (e ProductSortKeys) String() string {
	return string(e)
}

func (e *ProductSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductSortKeys", str)
	}
	return nil
}

func (e ProductSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductStatus string

const (
	ProductStatusActive   ProductStatus = "ACTIVE"
	ProductStatusArchived ProductStatus = "ARCHIVED"
	ProductStatusDraft    ProductStatus = "DRAFT"
)

var AllProductStatus = []ProductStatus{
	ProductStatusActive,
	ProductStatusArchived,
	ProductStatusDraft,
}

func (e ProductStatus) IsValid() bool {
	switch e {
	case ProductStatusActive, ProductStatusArchived, ProductStatusDraft:
		return true
	}
	return false
}

func (e ProductStatus) String() string {
	return string(e)
}

func (e *ProductStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductStatus", str)
	}
	return nil
}

func (e ProductStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantInventoryPolicy string

const (
	ProductVariantInventoryPolicyDeny     ProductVariantInventoryPolicy = "DENY"
	ProductVariantInventoryPolicyContinue ProductVariantInventoryPolicy = "CONTINUE"
)

var AllProductVariantInventoryPolicy = []ProductVariantInventoryPolicy{
	ProductVariantInventoryPolicyDeny,
	ProductVariantInventoryPolicyContinue,
}

func (e ProductVariantInventoryPolicy) IsValid() bool {
	switch e {
	case ProductVariantInventoryPolicyDeny, ProductVariantInventoryPolicyContinue:
		return true
	}
	return false
}

func (e ProductVariantInventoryPolicy) String() string {
	return string(e)
}

func (e *ProductVariantInventoryPolicy) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantInventoryPolicy(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantInventoryPolicy", str)
	}
	return nil
}

func (e ProductVariantInventoryPolicy) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantSortKeys string

const (
	ProductVariantSortKeysTitle                    ProductVariantSortKeys = "TITLE"
	ProductVariantSortKeysName                     ProductVariantSortKeys = "NAME"
	ProductVariantSortKeysSku                      ProductVariantSortKeys = "SKU"
	ProductVariantSortKeysInventoryQuantity        ProductVariantSortKeys = "INVENTORY_QUANTITY"
	ProductVariantSortKeysInventoryManagement      ProductVariantSortKeys = "INVENTORY_MANAGEMENT"
	ProductVariantSortKeysInventoryLevelsAvailable ProductVariantSortKeys = "INVENTORY_LEVELS_AVAILABLE"
	ProductVariantSortKeysInventoryPolicy          ProductVariantSortKeys = "INVENTORY_POLICY"
	ProductVariantSortKeysFullTitle                ProductVariantSortKeys = "FULL_TITLE"
	ProductVariantSortKeysPopular                  ProductVariantSortKeys = "POPULAR"
	ProductVariantSortKeysPosition                 ProductVariantSortKeys = "POSITION"
	ProductVariantSortKeysID                       ProductVariantSortKeys = "ID"
	ProductVariantSortKeysRelevance                ProductVariantSortKeys = "RELEVANCE"
)

var AllProductVariantSortKeys = []ProductVariantSortKeys{
	ProductVariantSortKeysTitle,
	ProductVariantSortKeysName,
	ProductVariantSortKeysSku,
	ProductVariantSortKeysInventoryQuantity,
	ProductVariantSortKeysInventoryManagement,
	ProductVariantSortKeysInventoryLevelsAvailable,
	ProductVariantSortKeysInventoryPolicy,
	ProductVariantSortKeysFullTitle,
	ProductVariantSortKeysPopular,
	ProductVariantSortKeysPosition,
	ProductVariantSortKeysID,
	ProductVariantSortKeysRelevance,
}

func (e ProductVariantSortKeys) IsValid() bool {
	switch e {
	case ProductVariantSortKeysTitle, ProductVariantSortKeysName, ProductVariantSortKeysSku, ProductVariantSortKeysInventoryQuantity, ProductVariantSortKeysInventoryManagement, ProductVariantSortKeysInventoryLevelsAvailable, ProductVariantSortKeysInventoryPolicy, ProductVariantSortKeysFullTitle, ProductVariantSortKeysPopular, ProductVariantSortKeysPosition, ProductVariantSortKeysID, ProductVariantSortKeysRelevance:
		return true
	}
	return false
}

func (e ProductVariantSortKeys) String() string {
	return string(e)
}

func (e *ProductVariantSortKeys) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantSortKeys(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantSortKeys", str)
	}
	return nil
}

func (e ProductVariantSortKeys) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantsBulkCreateUserErrorCode string

const (
	ProductVariantsBulkCreateUserErrorCodeProductDoesNotExist                   ProductVariantsBulkCreateUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	ProductVariantsBulkCreateUserErrorCodeNoKeyOnCreate                         ProductVariantsBulkCreateUserErrorCode = "NO_KEY_ON_CREATE"
	ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExists                  ProductVariantsBulkCreateUserErrorCode = "VARIANT_ALREADY_EXISTS"
	ProductVariantsBulkCreateUserErrorCodeGreaterThanOrEqualTo                  ProductVariantsBulkCreateUserErrorCode = "GREATER_THAN_OR_EQUAL_TO"
	ProductVariantsBulkCreateUserErrorCodeNeedToAddOptionValues                 ProductVariantsBulkCreateUserErrorCode = "NEED_TO_ADD_OPTION_VALUES"
	ProductVariantsBulkCreateUserErrorCodeOptionValuesForNumberOfUnknownOptions ProductVariantsBulkCreateUserErrorCode = "OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS"
	ProductVariantsBulkCreateUserErrorCodeTooManyInventoryLocations             ProductVariantsBulkCreateUserErrorCode = "TOO_MANY_INVENTORY_LOCATIONS"
	ProductVariantsBulkCreateUserErrorCodeSubscriptionViolation                 ProductVariantsBulkCreateUserErrorCode = "SUBSCRIPTION_VIOLATION"
	ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExistsChangeOptionValue ProductVariantsBulkCreateUserErrorCode = "VARIANT_ALREADY_EXISTS_CHANGE_OPTION_VALUE"
	ProductVariantsBulkCreateUserErrorCodeTrackedVariantLocationNotFound        ProductVariantsBulkCreateUserErrorCode = "TRACKED_VARIANT_LOCATION_NOT_FOUND"
	ProductVariantsBulkCreateUserErrorCodeMustBeForThisProduct                  ProductVariantsBulkCreateUserErrorCode = "MUST_BE_FOR_THIS_PRODUCT"
	ProductVariantsBulkCreateUserErrorCodeNotDefinedForShop                     ProductVariantsBulkCreateUserErrorCode = "NOT_DEFINED_FOR_SHOP"
	ProductVariantsBulkCreateUserErrorCodeInvalid                               ProductVariantsBulkCreateUserErrorCode = "INVALID"
	ProductVariantsBulkCreateUserErrorCodeNegativePriceValue                    ProductVariantsBulkCreateUserErrorCode = "NEGATIVE_PRICE_VALUE"
)

var AllProductVariantsBulkCreateUserErrorCode = []ProductVariantsBulkCreateUserErrorCode{
	ProductVariantsBulkCreateUserErrorCodeProductDoesNotExist,
	ProductVariantsBulkCreateUserErrorCodeNoKeyOnCreate,
	ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExists,
	ProductVariantsBulkCreateUserErrorCodeGreaterThanOrEqualTo,
	ProductVariantsBulkCreateUserErrorCodeNeedToAddOptionValues,
	ProductVariantsBulkCreateUserErrorCodeOptionValuesForNumberOfUnknownOptions,
	ProductVariantsBulkCreateUserErrorCodeTooManyInventoryLocations,
	ProductVariantsBulkCreateUserErrorCodeSubscriptionViolation,
	ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExistsChangeOptionValue,
	ProductVariantsBulkCreateUserErrorCodeTrackedVariantLocationNotFound,
	ProductVariantsBulkCreateUserErrorCodeMustBeForThisProduct,
	ProductVariantsBulkCreateUserErrorCodeNotDefinedForShop,
	ProductVariantsBulkCreateUserErrorCodeInvalid,
	ProductVariantsBulkCreateUserErrorCodeNegativePriceValue,
}

func (e ProductVariantsBulkCreateUserErrorCode) IsValid() bool {
	switch e {
	case ProductVariantsBulkCreateUserErrorCodeProductDoesNotExist, ProductVariantsBulkCreateUserErrorCodeNoKeyOnCreate, ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExists, ProductVariantsBulkCreateUserErrorCodeGreaterThanOrEqualTo, ProductVariantsBulkCreateUserErrorCodeNeedToAddOptionValues, ProductVariantsBulkCreateUserErrorCodeOptionValuesForNumberOfUnknownOptions, ProductVariantsBulkCreateUserErrorCodeTooManyInventoryLocations, ProductVariantsBulkCreateUserErrorCodeSubscriptionViolation, ProductVariantsBulkCreateUserErrorCodeVariantAlreadyExistsChangeOptionValue, ProductVariantsBulkCreateUserErrorCodeTrackedVariantLocationNotFound, ProductVariantsBulkCreateUserErrorCodeMustBeForThisProduct, ProductVariantsBulkCreateUserErrorCodeNotDefinedForShop, ProductVariantsBulkCreateUserErrorCodeInvalid, ProductVariantsBulkCreateUserErrorCodeNegativePriceValue:
		return true
	}
	return false
}

func (e ProductVariantsBulkCreateUserErrorCode) String() string {
	return string(e)
}

func (e *ProductVariantsBulkCreateUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantsBulkCreateUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantsBulkCreateUserErrorCode", str)
	}
	return nil
}

func (e ProductVariantsBulkCreateUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantsBulkDeleteUserErrorCode string

const (
	ProductVariantsBulkDeleteUserErrorCodeProductDoesNotExist                        ProductVariantsBulkDeleteUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	ProductVariantsBulkDeleteUserErrorCodeCannotDeleteLastVariant                    ProductVariantsBulkDeleteUserErrorCode = "CANNOT_DELETE_LAST_VARIANT"
	ProductVariantsBulkDeleteUserErrorCodeAtLeastOneVariantDoesNotBelongToTheProduct ProductVariantsBulkDeleteUserErrorCode = "AT_LEAST_ONE_VARIANT_DOES_NOT_BELONG_TO_THE_PRODUCT"
)

var AllProductVariantsBulkDeleteUserErrorCode = []ProductVariantsBulkDeleteUserErrorCode{
	ProductVariantsBulkDeleteUserErrorCodeProductDoesNotExist,
	ProductVariantsBulkDeleteUserErrorCodeCannotDeleteLastVariant,
	ProductVariantsBulkDeleteUserErrorCodeAtLeastOneVariantDoesNotBelongToTheProduct,
}

func (e ProductVariantsBulkDeleteUserErrorCode) IsValid() bool {
	switch e {
	case ProductVariantsBulkDeleteUserErrorCodeProductDoesNotExist, ProductVariantsBulkDeleteUserErrorCodeCannotDeleteLastVariant, ProductVariantsBulkDeleteUserErrorCodeAtLeastOneVariantDoesNotBelongToTheProduct:
		return true
	}
	return false
}

func (e ProductVariantsBulkDeleteUserErrorCode) String() string {
	return string(e)
}

func (e *ProductVariantsBulkDeleteUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantsBulkDeleteUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantsBulkDeleteUserErrorCode", str)
	}
	return nil
}

func (e ProductVariantsBulkDeleteUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantsBulkReorderUserErrorCode string

const (
	ProductVariantsBulkReorderUserErrorCodeProductDoesNotExist ProductVariantsBulkReorderUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	ProductVariantsBulkReorderUserErrorCodeMissingVariant      ProductVariantsBulkReorderUserErrorCode = "MISSING_VARIANT"
	ProductVariantsBulkReorderUserErrorCodeInvalidPosition     ProductVariantsBulkReorderUserErrorCode = "INVALID_POSITION"
	ProductVariantsBulkReorderUserErrorCodeDuplicatedVariantID ProductVariantsBulkReorderUserErrorCode = "DUPLICATED_VARIANT_ID"
)

var AllProductVariantsBulkReorderUserErrorCode = []ProductVariantsBulkReorderUserErrorCode{
	ProductVariantsBulkReorderUserErrorCodeProductDoesNotExist,
	ProductVariantsBulkReorderUserErrorCodeMissingVariant,
	ProductVariantsBulkReorderUserErrorCodeInvalidPosition,
	ProductVariantsBulkReorderUserErrorCodeDuplicatedVariantID,
}

func (e ProductVariantsBulkReorderUserErrorCode) IsValid() bool {
	switch e {
	case ProductVariantsBulkReorderUserErrorCodeProductDoesNotExist, ProductVariantsBulkReorderUserErrorCodeMissingVariant, ProductVariantsBulkReorderUserErrorCodeInvalidPosition, ProductVariantsBulkReorderUserErrorCodeDuplicatedVariantID:
		return true
	}
	return false
}

func (e ProductVariantsBulkReorderUserErrorCode) String() string {
	return string(e)
}

func (e *ProductVariantsBulkReorderUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantsBulkReorderUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantsBulkReorderUserErrorCode", str)
	}
	return nil
}

func (e ProductVariantsBulkReorderUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ProductVariantsBulkUpdateUserErrorCode string

const (
	ProductVariantsBulkUpdateUserErrorCodeProductDoesNotExist                   ProductVariantsBulkUpdateUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	ProductVariantsBulkUpdateUserErrorCodeProductVariantIDMissing               ProductVariantsBulkUpdateUserErrorCode = "PRODUCT_VARIANT_ID_MISSING"
	ProductVariantsBulkUpdateUserErrorCodeProductVariantDoesNotExist            ProductVariantsBulkUpdateUserErrorCode = "PRODUCT_VARIANT_DOES_NOT_EXIST"
	ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitiesOnVariantsUpdate ProductVariantsBulkUpdateUserErrorCode = "NO_INVENTORY_QUANTITIES_ON_VARIANTS_UPDATE"
	ProductVariantsBulkUpdateUserErrorCodeVariantAlreadyExists                  ProductVariantsBulkUpdateUserErrorCode = "VARIANT_ALREADY_EXISTS"
	ProductVariantsBulkUpdateUserErrorCodeGreaterThanOrEqualTo                  ProductVariantsBulkUpdateUserErrorCode = "GREATER_THAN_OR_EQUAL_TO"
	ProductVariantsBulkUpdateUserErrorCodeNeedToAddOptionValues                 ProductVariantsBulkUpdateUserErrorCode = "NEED_TO_ADD_OPTION_VALUES"
	ProductVariantsBulkUpdateUserErrorCodeOptionValuesForNumberOfUnknownOptions ProductVariantsBulkUpdateUserErrorCode = "OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS"
	ProductVariantsBulkUpdateUserErrorCodeSubscriptionViolation                 ProductVariantsBulkUpdateUserErrorCode = "SUBSCRIPTION_VIOLATION"
	ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitesDuringUpdate      ProductVariantsBulkUpdateUserErrorCode = "NO_INVENTORY_QUANTITES_DURING_UPDATE"
	ProductVariantsBulkUpdateUserErrorCodeNegativePriceValue                    ProductVariantsBulkUpdateUserErrorCode = "NEGATIVE_PRICE_VALUE"
)

var AllProductVariantsBulkUpdateUserErrorCode = []ProductVariantsBulkUpdateUserErrorCode{
	ProductVariantsBulkUpdateUserErrorCodeProductDoesNotExist,
	ProductVariantsBulkUpdateUserErrorCodeProductVariantIDMissing,
	ProductVariantsBulkUpdateUserErrorCodeProductVariantDoesNotExist,
	ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitiesOnVariantsUpdate,
	ProductVariantsBulkUpdateUserErrorCodeVariantAlreadyExists,
	ProductVariantsBulkUpdateUserErrorCodeGreaterThanOrEqualTo,
	ProductVariantsBulkUpdateUserErrorCodeNeedToAddOptionValues,
	ProductVariantsBulkUpdateUserErrorCodeOptionValuesForNumberOfUnknownOptions,
	ProductVariantsBulkUpdateUserErrorCodeSubscriptionViolation,
	ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitesDuringUpdate,
	ProductVariantsBulkUpdateUserErrorCodeNegativePriceValue,
}

func (e ProductVariantsBulkUpdateUserErrorCode) IsValid() bool {
	switch e {
	case ProductVariantsBulkUpdateUserErrorCodeProductDoesNotExist, ProductVariantsBulkUpdateUserErrorCodeProductVariantIDMissing, ProductVariantsBulkUpdateUserErrorCodeProductVariantDoesNotExist, ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitiesOnVariantsUpdate, ProductVariantsBulkUpdateUserErrorCodeVariantAlreadyExists, ProductVariantsBulkUpdateUserErrorCodeGreaterThanOrEqualTo, ProductVariantsBulkUpdateUserErrorCodeNeedToAddOptionValues, ProductVariantsBulkUpdateUserErrorCodeOptionValuesForNumberOfUnknownOptions, ProductVariantsBulkUpdateUserErrorCodeSubscriptionViolation, ProductVariantsBulkUpdateUserErrorCodeNoInventoryQuantitesDuringUpdate, ProductVariantsBulkUpdateUserErrorCodeNegativePriceValue:
		return true
	}
	return false
}

func (e ProductVariantsBulkUpdateUserErrorCode) String() string {
	return string(e)
}

func (e *ProductVariantsBulkUpdateUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ProductVariantsBulkUpdateUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ProductVariantsBulkUpdateUserErrorCode", str)
	}
	return nil
}

func (e ProductVariantsBulkUpdateUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type RefundDutyRefundType string

const (
	RefundDutyRefundTypeProportional RefundDutyRefundType = "PROPORTIONAL"
	RefundDutyRefundTypeFull         RefundDutyRefundType = "FULL"
)

var AllRefundDutyRefundType = []RefundDutyRefundType{
	RefundDutyRefundTypeProportional,
	RefundDutyRefundTypeFull,
}

func (e RefundDutyRefundType) IsValid() bool {
	switch e {
	case RefundDutyRefundTypeProportional, RefundDutyRefundTypeFull:
		return true
	}
	return false
}

func (e RefundDutyRefundType) String() string {
	return string(e)
}

func (e *RefundDutyRefundType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = RefundDutyRefundType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid RefundDutyRefundType", str)
	}
	return nil
}

func (e RefundDutyRefundType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type RefundLineItemRestockType string

const (
	RefundLineItemRestockTypeReturn        RefundLineItemRestockType = "RETURN"
	RefundLineItemRestockTypeCancel        RefundLineItemRestockType = "CANCEL"
	RefundLineItemRestockTypeLegacyRestock RefundLineItemRestockType = "LEGACY_RESTOCK"
	RefundLineItemRestockTypeNoRestock     RefundLineItemRestockType = "NO_RESTOCK"
)

var AllRefundLineItemRestockType = []RefundLineItemRestockType{
	RefundLineItemRestockTypeReturn,
	RefundLineItemRestockTypeCancel,
	RefundLineItemRestockTypeLegacyRestock,
	RefundLineItemRestockTypeNoRestock,
}

func (e RefundLineItemRestockType) IsValid() bool {
	switch e {
	case RefundLineItemRestockTypeReturn, RefundLineItemRestockTypeCancel, RefundLineItemRestockTypeLegacyRestock, RefundLineItemRestockTypeNoRestock:
		return true
	}
	return false
}

func (e RefundLineItemRestockType) String() string {
	return string(e)
}

func (e *RefundLineItemRestockType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = RefundLineItemRestockType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid RefundLineItemRestockType", str)
	}
	return nil
}

func (e RefundLineItemRestockType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ResourceAlertIcon string

const (
	ResourceAlertIconCheckmarkCircle   ResourceAlertIcon = "CHECKMARK_CIRCLE"
	ResourceAlertIconInformationCircle ResourceAlertIcon = "INFORMATION_CIRCLE"
)

var AllResourceAlertIcon = []ResourceAlertIcon{
	ResourceAlertIconCheckmarkCircle,
	ResourceAlertIconInformationCircle,
}

func (e ResourceAlertIcon) IsValid() bool {
	switch e {
	case ResourceAlertIconCheckmarkCircle, ResourceAlertIconInformationCircle:
		return true
	}
	return false
}

func (e ResourceAlertIcon) String() string {
	return string(e)
}

func (e *ResourceAlertIcon) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ResourceAlertIcon(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ResourceAlertIcon", str)
	}
	return nil
}

func (e ResourceAlertIcon) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ResourceAlertSeverity string

const (
	ResourceAlertSeverityDefault  ResourceAlertSeverity = "DEFAULT"
	ResourceAlertSeverityInfo     ResourceAlertSeverity = "INFO"
	ResourceAlertSeverityWarning  ResourceAlertSeverity = "WARNING"
	ResourceAlertSeveritySuccess  ResourceAlertSeverity = "SUCCESS"
	ResourceAlertSeverityCritical ResourceAlertSeverity = "CRITICAL"
)

var AllResourceAlertSeverity = []ResourceAlertSeverity{
	ResourceAlertSeverityDefault,
	ResourceAlertSeverityInfo,
	ResourceAlertSeverityWarning,
	ResourceAlertSeveritySuccess,
	ResourceAlertSeverityCritical,
}

func (e ResourceAlertSeverity) IsValid() bool {
	switch e {
	case ResourceAlertSeverityDefault, ResourceAlertSeverityInfo, ResourceAlertSeverityWarning, ResourceAlertSeveritySuccess, ResourceAlertSeverityCritical:
		return true
	}
	return false
}

func (e ResourceAlertSeverity) String() string {
	return string(e)
}

func (e *ResourceAlertSeverity) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ResourceAlertSeverity(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ResourceAlertSeverity", str)
	}
	return nil
}

func (e ResourceAlertSeverity) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ResourceFeedbackState string

const (
	ResourceFeedbackStateAccepted       ResourceFeedbackState = "ACCEPTED"
	ResourceFeedbackStateRequiresAction ResourceFeedbackState = "REQUIRES_ACTION"
)

var AllResourceFeedbackState = []ResourceFeedbackState{
	ResourceFeedbackStateAccepted,
	ResourceFeedbackStateRequiresAction,
}

func (e ResourceFeedbackState) IsValid() bool {
	switch e {
	case ResourceFeedbackStateAccepted, ResourceFeedbackStateRequiresAction:
		return true
	}
	return false
}

func (e ResourceFeedbackState) String() string {
	return string(e)
}

func (e *ResourceFeedbackState) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ResourceFeedbackState(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ResourceFeedbackState", str)
	}
	return nil
}

func (e ResourceFeedbackState) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SaleActionType string

const (
	SaleActionTypeOrder   SaleActionType = "ORDER"
	SaleActionTypeReturn  SaleActionType = "RETURN"
	SaleActionTypeUpdate  SaleActionType = "UPDATE"
	SaleActionTypeUnknown SaleActionType = "UNKNOWN"
)

var AllSaleActionType = []SaleActionType{
	SaleActionTypeOrder,
	SaleActionTypeReturn,
	SaleActionTypeUpdate,
	SaleActionTypeUnknown,
}

func (e SaleActionType) IsValid() bool {
	switch e {
	case SaleActionTypeOrder, SaleActionTypeReturn, SaleActionTypeUpdate, SaleActionTypeUnknown:
		return true
	}
	return false
}

func (e SaleActionType) String() string {
	return string(e)
}

func (e *SaleActionType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SaleActionType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SaleActionType", str)
	}
	return nil
}

func (e SaleActionType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SaleLineType string

const (
	SaleLineTypeProduct    SaleLineType = "PRODUCT"
	SaleLineTypeTip        SaleLineType = "TIP"
	SaleLineTypeGiftCard   SaleLineType = "GIFT_CARD"
	SaleLineTypeShipping   SaleLineType = "SHIPPING"
	SaleLineTypeDuty       SaleLineType = "DUTY"
	SaleLineTypeUnknown    SaleLineType = "UNKNOWN"
	SaleLineTypeAdjustment SaleLineType = "ADJUSTMENT"
)

var AllSaleLineType = []SaleLineType{
	SaleLineTypeProduct,
	SaleLineTypeTip,
	SaleLineTypeGiftCard,
	SaleLineTypeShipping,
	SaleLineTypeDuty,
	SaleLineTypeUnknown,
	SaleLineTypeAdjustment,
}

func (e SaleLineType) IsValid() bool {
	switch e {
	case SaleLineTypeProduct, SaleLineTypeTip, SaleLineTypeGiftCard, SaleLineTypeShipping, SaleLineTypeDuty, SaleLineTypeUnknown, SaleLineTypeAdjustment:
		return true
	}
	return false
}

func (e SaleLineType) String() string {
	return string(e)
}

func (e *SaleLineType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SaleLineType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SaleLineType", str)
	}
	return nil
}

func (e SaleLineType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SearchResultType string

const (
	SearchResultTypeCustomer           SearchResultType = "CUSTOMER"
	SearchResultTypeDraftOrder         SearchResultType = "DRAFT_ORDER"
	SearchResultTypeProduct            SearchResultType = "PRODUCT"
	SearchResultTypeCollection         SearchResultType = "COLLECTION"
	SearchResultTypeFile               SearchResultType = "FILE"
	SearchResultTypeOnlineStorePage    SearchResultType = "ONLINE_STORE_PAGE"
	SearchResultTypeOnlineStoreBlog    SearchResultType = "ONLINE_STORE_BLOG"
	SearchResultTypeOnlineStoreArticle SearchResultType = "ONLINE_STORE_ARTICLE"
	SearchResultTypeURLRedirect        SearchResultType = "URL_REDIRECT"
	SearchResultTypePriceRule          SearchResultType = "PRICE_RULE"
	SearchResultTypeDiscountRedeemCode SearchResultType = "DISCOUNT_REDEEM_CODE"
	SearchResultTypeOrder              SearchResultType = "ORDER"
)

var AllSearchResultType = []SearchResultType{
	SearchResultTypeCustomer,
	SearchResultTypeDraftOrder,
	SearchResultTypeProduct,
	SearchResultTypeCollection,
	SearchResultTypeFile,
	SearchResultTypeOnlineStorePage,
	SearchResultTypeOnlineStoreBlog,
	SearchResultTypeOnlineStoreArticle,
	SearchResultTypeURLRedirect,
	SearchResultTypePriceRule,
	SearchResultTypeDiscountRedeemCode,
	SearchResultTypeOrder,
}

func (e SearchResultType) IsValid() bool {
	switch e {
	case SearchResultTypeCustomer, SearchResultTypeDraftOrder, SearchResultTypeProduct, SearchResultTypeCollection, SearchResultTypeFile, SearchResultTypeOnlineStorePage, SearchResultTypeOnlineStoreBlog, SearchResultTypeOnlineStoreArticle, SearchResultTypeURLRedirect, SearchResultTypePriceRule, SearchResultTypeDiscountRedeemCode, SearchResultTypeOrder:
		return true
	}
	return false
}

func (e SearchResultType) String() string {
	return string(e)
}

func (e *SearchResultType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SearchResultType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SearchResultType", str)
	}
	return nil
}

func (e SearchResultType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanAnchorType string

const (
	SellingPlanAnchorTypeWeekday  SellingPlanAnchorType = "WEEKDAY"
	SellingPlanAnchorTypeMonthday SellingPlanAnchorType = "MONTHDAY"
	SellingPlanAnchorTypeYearday  SellingPlanAnchorType = "YEARDAY"
)

var AllSellingPlanAnchorType = []SellingPlanAnchorType{
	SellingPlanAnchorTypeWeekday,
	SellingPlanAnchorTypeMonthday,
	SellingPlanAnchorTypeYearday,
}

func (e SellingPlanAnchorType) IsValid() bool {
	switch e {
	case SellingPlanAnchorTypeWeekday, SellingPlanAnchorTypeMonthday, SellingPlanAnchorTypeYearday:
		return true
	}
	return false
}

func (e SellingPlanAnchorType) String() string {
	return string(e)
}

func (e *SellingPlanAnchorType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanAnchorType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanAnchorType", str)
	}
	return nil
}

func (e SellingPlanAnchorType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanCategory string

const (
	SellingPlanCategoryOther           SellingPlanCategory = "OTHER"
	SellingPlanCategoryPreOrder        SellingPlanCategory = "PRE_ORDER"
	SellingPlanCategorySubscription    SellingPlanCategory = "SUBSCRIPTION"
	SellingPlanCategoryTryBeforeYouBuy SellingPlanCategory = "TRY_BEFORE_YOU_BUY"
)

var AllSellingPlanCategory = []SellingPlanCategory{
	SellingPlanCategoryOther,
	SellingPlanCategoryPreOrder,
	SellingPlanCategorySubscription,
	SellingPlanCategoryTryBeforeYouBuy,
}

func (e SellingPlanCategory) IsValid() bool {
	switch e {
	case SellingPlanCategoryOther, SellingPlanCategoryPreOrder, SellingPlanCategorySubscription, SellingPlanCategoryTryBeforeYouBuy:
		return true
	}
	return false
}

func (e SellingPlanCategory) String() string {
	return string(e)
}

func (e *SellingPlanCategory) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanCategory(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanCategory", str)
	}
	return nil
}

func (e SellingPlanCategory) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanCheckoutChargeType string

const (
	SellingPlanCheckoutChargeTypePercentage SellingPlanCheckoutChargeType = "PERCENTAGE"
	SellingPlanCheckoutChargeTypePrice      SellingPlanCheckoutChargeType = "PRICE"
)

var AllSellingPlanCheckoutChargeType = []SellingPlanCheckoutChargeType{
	SellingPlanCheckoutChargeTypePercentage,
	SellingPlanCheckoutChargeTypePrice,
}

func (e SellingPlanCheckoutChargeType) IsValid() bool {
	switch e {
	case SellingPlanCheckoutChargeTypePercentage, SellingPlanCheckoutChargeTypePrice:
		return true
	}
	return false
}

func (e SellingPlanCheckoutChargeType) String() string {
	return string(e)
}

func (e *SellingPlanCheckoutChargeType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanCheckoutChargeType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanCheckoutChargeType", str)
	}
	return nil
}

func (e SellingPlanCheckoutChargeType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanFixedDeliveryPolicyIntent string

const (
	SellingPlanFixedDeliveryPolicyIntentFulfillmentBegin SellingPlanFixedDeliveryPolicyIntent = "FULFILLMENT_BEGIN"
)

var AllSellingPlanFixedDeliveryPolicyIntent = []SellingPlanFixedDeliveryPolicyIntent{
	SellingPlanFixedDeliveryPolicyIntentFulfillmentBegin,
}

func (e SellingPlanFixedDeliveryPolicyIntent) IsValid() bool {
	switch e {
	case SellingPlanFixedDeliveryPolicyIntentFulfillmentBegin:
		return true
	}
	return false
}

func (e SellingPlanFixedDeliveryPolicyIntent) String() string {
	return string(e)
}

func (e *SellingPlanFixedDeliveryPolicyIntent) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanFixedDeliveryPolicyIntent(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanFixedDeliveryPolicyIntent", str)
	}
	return nil
}

func (e SellingPlanFixedDeliveryPolicyIntent) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanFixedDeliveryPolicyPreAnchorBehavior string

const (
	SellingPlanFixedDeliveryPolicyPreAnchorBehaviorAsap SellingPlanFixedDeliveryPolicyPreAnchorBehavior = "ASAP"
	SellingPlanFixedDeliveryPolicyPreAnchorBehaviorNext SellingPlanFixedDeliveryPolicyPreAnchorBehavior = "NEXT"
)

var AllSellingPlanFixedDeliveryPolicyPreAnchorBehavior = []SellingPlanFixedDeliveryPolicyPreAnchorBehavior{
	SellingPlanFixedDeliveryPolicyPreAnchorBehaviorAsap,
	SellingPlanFixedDeliveryPolicyPreAnchorBehaviorNext,
}

func (e SellingPlanFixedDeliveryPolicyPreAnchorBehavior) IsValid() bool {
	switch e {
	case SellingPlanFixedDeliveryPolicyPreAnchorBehaviorAsap, SellingPlanFixedDeliveryPolicyPreAnchorBehaviorNext:
		return true
	}
	return false
}

func (e SellingPlanFixedDeliveryPolicyPreAnchorBehavior) String() string {
	return string(e)
}

func (e *SellingPlanFixedDeliveryPolicyPreAnchorBehavior) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanFixedDeliveryPolicyPreAnchorBehavior(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanFixedDeliveryPolicyPreAnchorBehavior", str)
	}
	return nil
}

func (e SellingPlanFixedDeliveryPolicyPreAnchorBehavior) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanFulfillmentTrigger string

const (
	SellingPlanFulfillmentTriggerAnchor    SellingPlanFulfillmentTrigger = "ANCHOR"
	SellingPlanFulfillmentTriggerAsap      SellingPlanFulfillmentTrigger = "ASAP"
	SellingPlanFulfillmentTriggerExactTime SellingPlanFulfillmentTrigger = "EXACT_TIME"
	SellingPlanFulfillmentTriggerUnknown   SellingPlanFulfillmentTrigger = "UNKNOWN"
)

var AllSellingPlanFulfillmentTrigger = []SellingPlanFulfillmentTrigger{
	SellingPlanFulfillmentTriggerAnchor,
	SellingPlanFulfillmentTriggerAsap,
	SellingPlanFulfillmentTriggerExactTime,
	SellingPlanFulfillmentTriggerUnknown,
}

func (e SellingPlanFulfillmentTrigger) IsValid() bool {
	switch e {
	case SellingPlanFulfillmentTriggerAnchor, SellingPlanFulfillmentTriggerAsap, SellingPlanFulfillmentTriggerExactTime, SellingPlanFulfillmentTriggerUnknown:
		return true
	}
	return false
}

func (e SellingPlanFulfillmentTrigger) String() string {
	return string(e)
}

func (e *SellingPlanFulfillmentTrigger) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanFulfillmentTrigger(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanFulfillmentTrigger", str)
	}
	return nil
}

func (e SellingPlanFulfillmentTrigger) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanGroupUserErrorCode string

const (
	SellingPlanGroupUserErrorCodeBlank                                                                            SellingPlanGroupUserErrorCode = "BLANK"
	SellingPlanGroupUserErrorCodeEqualTo                                                                          SellingPlanGroupUserErrorCode = "EQUAL_TO"
	SellingPlanGroupUserErrorCodeGreaterThan                                                                      SellingPlanGroupUserErrorCode = "GREATER_THAN"
	SellingPlanGroupUserErrorCodeGreaterThanOrEqualTo                                                             SellingPlanGroupUserErrorCode = "GREATER_THAN_OR_EQUAL_TO"
	SellingPlanGroupUserErrorCodeInclusion                                                                        SellingPlanGroupUserErrorCode = "INCLUSION"
	SellingPlanGroupUserErrorCodeInvalid                                                                          SellingPlanGroupUserErrorCode = "INVALID"
	SellingPlanGroupUserErrorCodeLessThan                                                                         SellingPlanGroupUserErrorCode = "LESS_THAN"
	SellingPlanGroupUserErrorCodeLessThanOrEqualTo                                                                SellingPlanGroupUserErrorCode = "LESS_THAN_OR_EQUAL_TO"
	SellingPlanGroupUserErrorCodeNotANumber                                                                       SellingPlanGroupUserErrorCode = "NOT_A_NUMBER"
	SellingPlanGroupUserErrorCodeNotFound                                                                         SellingPlanGroupUserErrorCode = "NOT_FOUND"
	SellingPlanGroupUserErrorCodePresent                                                                          SellingPlanGroupUserErrorCode = "PRESENT"
	SellingPlanGroupUserErrorCodeTaken                                                                            SellingPlanGroupUserErrorCode = "TAKEN"
	SellingPlanGroupUserErrorCodeTooBig                                                                           SellingPlanGroupUserErrorCode = "TOO_BIG"
	SellingPlanGroupUserErrorCodeTooLong                                                                          SellingPlanGroupUserErrorCode = "TOO_LONG"
	SellingPlanGroupUserErrorCodeTooShort                                                                         SellingPlanGroupUserErrorCode = "TOO_SHORT"
	SellingPlanGroupUserErrorCodeWrongLength                                                                      SellingPlanGroupUserErrorCode = "WRONG_LENGTH"
	SellingPlanGroupUserErrorCodeSellingPlanCountUpperBound                                                       SellingPlanGroupUserErrorCode = "SELLING_PLAN_COUNT_UPPER_BOUND"
	SellingPlanGroupUserErrorCodeSellingPlanCountLowerBound                                                       SellingPlanGroupUserErrorCode = "SELLING_PLAN_COUNT_LOWER_BOUND"
	SellingPlanGroupUserErrorCodeSellingPlanMaxCyclesMustBeGreaterThanMinCycles                                   SellingPlanGroupUserErrorCode = "SELLING_PLAN_MAX_CYCLES_MUST_BE_GREATER_THAN_MIN_CYCLES"
	SellingPlanGroupUserErrorCodeSellingPlanBillingAndDeliveryPolicyAnchorsMustBeEqual                            SellingPlanGroupUserErrorCode = "SELLING_PLAN_BILLING_AND_DELIVERY_POLICY_ANCHORS_MUST_BE_EQUAL"
	SellingPlanGroupUserErrorCodeSellingPlanBillingCycleMustBeAMultipleOfDeliveryCycle                            SellingPlanGroupUserErrorCode = "SELLING_PLAN_BILLING_CYCLE_MUST_BE_A_MULTIPLE_OF_DELIVERY_CYCLE"
	SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesMustContainAFixedPricingPolicy                         SellingPlanGroupUserErrorCode = "SELLING_PLAN_PRICING_POLICIES_MUST_CONTAIN_A_FIXED_PRICING_POLICY"
	SellingPlanGroupUserErrorCodeSellingPlanMissingOption2LabelOnParentGroup                                      SellingPlanGroupUserErrorCode = "SELLING_PLAN_MISSING_OPTION2_LABEL_ON_PARENT_GROUP"
	SellingPlanGroupUserErrorCodeSellingPlanMissingOption3LabelOnParentGroup                                      SellingPlanGroupUserErrorCode = "SELLING_PLAN_MISSING_OPTION3_LABEL_ON_PARENT_GROUP"
	SellingPlanGroupUserErrorCodeSellingPlanOption2RequiredAsDefinedOnParentGroup                                 SellingPlanGroupUserErrorCode = "SELLING_PLAN_OPTION2_REQUIRED_AS_DEFINED_ON_PARENT_GROUP"
	SellingPlanGroupUserErrorCodeSellingPlanOption3RequiredAsDefinedOnParentGroup                                 SellingPlanGroupUserErrorCode = "SELLING_PLAN_OPTION3_REQUIRED_AS_DEFINED_ON_PARENT_GROUP"
	SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesLimit                                                  SellingPlanGroupUserErrorCode = "SELLING_PLAN_PRICING_POLICIES_LIMIT"
	SellingPlanGroupUserErrorCodeResourceListContainsInvalidIDS                                                   SellingPlanGroupUserErrorCode = "RESOURCE_LIST_CONTAINS_INVALID_IDS"
	SellingPlanGroupUserErrorCodeProductVariantDoesNotExist                                                       SellingPlanGroupUserErrorCode = "PRODUCT_VARIANT_DOES_NOT_EXIST"
	SellingPlanGroupUserErrorCodeProductDoesNotExist                                                              SellingPlanGroupUserErrorCode = "PRODUCT_DOES_NOT_EXIST"
	SellingPlanGroupUserErrorCodeGroupDoesNotExist                                                                SellingPlanGroupUserErrorCode = "GROUP_DOES_NOT_EXIST"
	SellingPlanGroupUserErrorCodeGroupCouldNotBeDeleted                                                           SellingPlanGroupUserErrorCode = "GROUP_COULD_NOT_BE_DELETED"
	SellingPlanGroupUserErrorCodeErrorAddingResourceToGroup                                                       SellingPlanGroupUserErrorCode = "ERROR_ADDING_RESOURCE_TO_GROUP"
	SellingPlanGroupUserErrorCodeSellingPlanDeliveryPolicyMissing                                                 SellingPlanGroupUserErrorCode = "SELLING_PLAN_DELIVERY_POLICY_MISSING"
	SellingPlanGroupUserErrorCodeSellingPlanBillingPolicyMissing                                                  SellingPlanGroupUserErrorCode = "SELLING_PLAN_BILLING_POLICY_MISSING"
	SellingPlanGroupUserErrorCodePlanDoesNotExist                                                                 SellingPlanGroupUserErrorCode = "PLAN_DOES_NOT_EXIST"
	SellingPlanGroupUserErrorCodePlanIDMustBeSpecifiedToUpdate                                                    SellingPlanGroupUserErrorCode = "PLAN_ID_MUST_BE_SPECIFIED_TO_UPDATE"
	SellingPlanGroupUserErrorCodeOnlyNeedOneBillingPolicyType                                                     SellingPlanGroupUserErrorCode = "ONLY_NEED_ONE_BILLING_POLICY_TYPE"
	SellingPlanGroupUserErrorCodeOnlyNeedOneDeliveryPolicyType                                                    SellingPlanGroupUserErrorCode = "ONLY_NEED_ONE_DELIVERY_POLICY_TYPE"
	SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyType                                                     SellingPlanGroupUserErrorCode = "ONLY_NEED_ONE_PRICING_POLICY_TYPE"
	SellingPlanGroupUserErrorCodeBillingAndDeliveryPolicyTypesMustBeTheSame                                       SellingPlanGroupUserErrorCode = "BILLING_AND_DELIVERY_POLICY_TYPES_MUST_BE_THE_SAME"
	SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyValue                                                    SellingPlanGroupUserErrorCode = "ONLY_NEED_ONE_PRICING_POLICY_VALUE"
	SellingPlanGroupUserErrorCodePricingPolicyAdjustmentValueAndTypeMustMatch                                     SellingPlanGroupUserErrorCode = "PRICING_POLICY_ADJUSTMENT_VALUE_AND_TYPE_MUST_MATCH"
	SellingPlanGroupUserErrorCodeSellingPlanDuplicateName                                                         SellingPlanGroupUserErrorCode = "SELLING_PLAN_DUPLICATE_NAME"
	SellingPlanGroupUserErrorCodeSellingPlanDuplicateOptions                                                      SellingPlanGroupUserErrorCode = "SELLING_PLAN_DUPLICATE_OPTIONS"
	SellingPlanGroupUserErrorCodeSellingPlanFixedPricingPoliciesLimit                                             SellingPlanGroupUserErrorCode = "SELLING_PLAN_FIXED_PRICING_POLICIES_LIMIT"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeRequired                                          SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_EXACT_TIME_REQUIRED"
	SellingPlanGroupUserErrorCodeCheckoutChargeValueAndTypeMustMatch                                              SellingPlanGroupUserErrorCode = "CHECKOUT_CHARGE_VALUE_AND_TYPE_MUST_MATCH"
	SellingPlanGroupUserErrorCodeOnlyNeedOneCheckoutChargeValue                                                   SellingPlanGroupUserErrorCode = "ONLY_NEED_ONE_CHECKOUT_CHARGE_VALUE"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeNotAllowed                                        SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_EXACT_TIME_NOT_ALLOWED"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTimeAfterCheckoutMustBeGreaterThanZero                     SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_TIME_AFTER_CHECKOUT_MUST_BE_GREATER_THAN_ZERO"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerOnFullCheckout                                      SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_TRIGGER_ON_FULL_CHECKOUT"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPartialPercentageCheckoutCharge SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PARTIAL_PERCENTAGE_CHECKOUT_CHARGE"
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPriceCheckoutCharge             SellingPlanGroupUserErrorCode = "REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PRICE_CHECKOUT_CHARGE"
	SellingPlanGroupUserErrorCodeFulfillmentExactTimeRequired                                                     SellingPlanGroupUserErrorCode = "FULFILLMENT_EXACT_TIME_REQUIRED"
	SellingPlanGroupUserErrorCodeFulfillmentExactTimeNotAllowed                                                   SellingPlanGroupUserErrorCode = "FULFILLMENT_EXACT_TIME_NOT_ALLOWED"
	SellingPlanGroupUserErrorCodeSellingPlanAnchorsNotAllowed                                                     SellingPlanGroupUserErrorCode = "SELLING_PLAN_ANCHORS_NOT_ALLOWED"
	SellingPlanGroupUserErrorCodeSellingPlanAnchorsRequired                                                       SellingPlanGroupUserErrorCode = "SELLING_PLAN_ANCHORS_REQUIRED"
	SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringBilling                                                 SellingPlanGroupUserErrorCode = "ONLY_ONE_OF_FIXED_OR_RECURRING_BILLING"
	SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringDelivery                                                SellingPlanGroupUserErrorCode = "ONLY_ONE_OF_FIXED_OR_RECURRING_DELIVERY"
)

var AllSellingPlanGroupUserErrorCode = []SellingPlanGroupUserErrorCode{
	SellingPlanGroupUserErrorCodeBlank,
	SellingPlanGroupUserErrorCodeEqualTo,
	SellingPlanGroupUserErrorCodeGreaterThan,
	SellingPlanGroupUserErrorCodeGreaterThanOrEqualTo,
	SellingPlanGroupUserErrorCodeInclusion,
	SellingPlanGroupUserErrorCodeInvalid,
	SellingPlanGroupUserErrorCodeLessThan,
	SellingPlanGroupUserErrorCodeLessThanOrEqualTo,
	SellingPlanGroupUserErrorCodeNotANumber,
	SellingPlanGroupUserErrorCodeNotFound,
	SellingPlanGroupUserErrorCodePresent,
	SellingPlanGroupUserErrorCodeTaken,
	SellingPlanGroupUserErrorCodeTooBig,
	SellingPlanGroupUserErrorCodeTooLong,
	SellingPlanGroupUserErrorCodeTooShort,
	SellingPlanGroupUserErrorCodeWrongLength,
	SellingPlanGroupUserErrorCodeSellingPlanCountUpperBound,
	SellingPlanGroupUserErrorCodeSellingPlanCountLowerBound,
	SellingPlanGroupUserErrorCodeSellingPlanMaxCyclesMustBeGreaterThanMinCycles,
	SellingPlanGroupUserErrorCodeSellingPlanBillingAndDeliveryPolicyAnchorsMustBeEqual,
	SellingPlanGroupUserErrorCodeSellingPlanBillingCycleMustBeAMultipleOfDeliveryCycle,
	SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesMustContainAFixedPricingPolicy,
	SellingPlanGroupUserErrorCodeSellingPlanMissingOption2LabelOnParentGroup,
	SellingPlanGroupUserErrorCodeSellingPlanMissingOption3LabelOnParentGroup,
	SellingPlanGroupUserErrorCodeSellingPlanOption2RequiredAsDefinedOnParentGroup,
	SellingPlanGroupUserErrorCodeSellingPlanOption3RequiredAsDefinedOnParentGroup,
	SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesLimit,
	SellingPlanGroupUserErrorCodeResourceListContainsInvalidIDS,
	SellingPlanGroupUserErrorCodeProductVariantDoesNotExist,
	SellingPlanGroupUserErrorCodeProductDoesNotExist,
	SellingPlanGroupUserErrorCodeGroupDoesNotExist,
	SellingPlanGroupUserErrorCodeGroupCouldNotBeDeleted,
	SellingPlanGroupUserErrorCodeErrorAddingResourceToGroup,
	SellingPlanGroupUserErrorCodeSellingPlanDeliveryPolicyMissing,
	SellingPlanGroupUserErrorCodeSellingPlanBillingPolicyMissing,
	SellingPlanGroupUserErrorCodePlanDoesNotExist,
	SellingPlanGroupUserErrorCodePlanIDMustBeSpecifiedToUpdate,
	SellingPlanGroupUserErrorCodeOnlyNeedOneBillingPolicyType,
	SellingPlanGroupUserErrorCodeOnlyNeedOneDeliveryPolicyType,
	SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyType,
	SellingPlanGroupUserErrorCodeBillingAndDeliveryPolicyTypesMustBeTheSame,
	SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyValue,
	SellingPlanGroupUserErrorCodePricingPolicyAdjustmentValueAndTypeMustMatch,
	SellingPlanGroupUserErrorCodeSellingPlanDuplicateName,
	SellingPlanGroupUserErrorCodeSellingPlanDuplicateOptions,
	SellingPlanGroupUserErrorCodeSellingPlanFixedPricingPoliciesLimit,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeRequired,
	SellingPlanGroupUserErrorCodeCheckoutChargeValueAndTypeMustMatch,
	SellingPlanGroupUserErrorCodeOnlyNeedOneCheckoutChargeValue,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeNotAllowed,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTimeAfterCheckoutMustBeGreaterThanZero,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerOnFullCheckout,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPartialPercentageCheckoutCharge,
	SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPriceCheckoutCharge,
	SellingPlanGroupUserErrorCodeFulfillmentExactTimeRequired,
	SellingPlanGroupUserErrorCodeFulfillmentExactTimeNotAllowed,
	SellingPlanGroupUserErrorCodeSellingPlanAnchorsNotAllowed,
	SellingPlanGroupUserErrorCodeSellingPlanAnchorsRequired,
	SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringBilling,
	SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringDelivery,
}

func (e SellingPlanGroupUserErrorCode) IsValid() bool {
	switch e {
	case SellingPlanGroupUserErrorCodeBlank, SellingPlanGroupUserErrorCodeEqualTo, SellingPlanGroupUserErrorCodeGreaterThan, SellingPlanGroupUserErrorCodeGreaterThanOrEqualTo, SellingPlanGroupUserErrorCodeInclusion, SellingPlanGroupUserErrorCodeInvalid, SellingPlanGroupUserErrorCodeLessThan, SellingPlanGroupUserErrorCodeLessThanOrEqualTo, SellingPlanGroupUserErrorCodeNotANumber, SellingPlanGroupUserErrorCodeNotFound, SellingPlanGroupUserErrorCodePresent, SellingPlanGroupUserErrorCodeTaken, SellingPlanGroupUserErrorCodeTooBig, SellingPlanGroupUserErrorCodeTooLong, SellingPlanGroupUserErrorCodeTooShort, SellingPlanGroupUserErrorCodeWrongLength, SellingPlanGroupUserErrorCodeSellingPlanCountUpperBound, SellingPlanGroupUserErrorCodeSellingPlanCountLowerBound, SellingPlanGroupUserErrorCodeSellingPlanMaxCyclesMustBeGreaterThanMinCycles, SellingPlanGroupUserErrorCodeSellingPlanBillingAndDeliveryPolicyAnchorsMustBeEqual, SellingPlanGroupUserErrorCodeSellingPlanBillingCycleMustBeAMultipleOfDeliveryCycle, SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesMustContainAFixedPricingPolicy, SellingPlanGroupUserErrorCodeSellingPlanMissingOption2LabelOnParentGroup, SellingPlanGroupUserErrorCodeSellingPlanMissingOption3LabelOnParentGroup, SellingPlanGroupUserErrorCodeSellingPlanOption2RequiredAsDefinedOnParentGroup, SellingPlanGroupUserErrorCodeSellingPlanOption3RequiredAsDefinedOnParentGroup, SellingPlanGroupUserErrorCodeSellingPlanPricingPoliciesLimit, SellingPlanGroupUserErrorCodeResourceListContainsInvalidIDS, SellingPlanGroupUserErrorCodeProductVariantDoesNotExist, SellingPlanGroupUserErrorCodeProductDoesNotExist, SellingPlanGroupUserErrorCodeGroupDoesNotExist, SellingPlanGroupUserErrorCodeGroupCouldNotBeDeleted, SellingPlanGroupUserErrorCodeErrorAddingResourceToGroup, SellingPlanGroupUserErrorCodeSellingPlanDeliveryPolicyMissing, SellingPlanGroupUserErrorCodeSellingPlanBillingPolicyMissing, SellingPlanGroupUserErrorCodePlanDoesNotExist, SellingPlanGroupUserErrorCodePlanIDMustBeSpecifiedToUpdate, SellingPlanGroupUserErrorCodeOnlyNeedOneBillingPolicyType, SellingPlanGroupUserErrorCodeOnlyNeedOneDeliveryPolicyType, SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyType, SellingPlanGroupUserErrorCodeBillingAndDeliveryPolicyTypesMustBeTheSame, SellingPlanGroupUserErrorCodeOnlyNeedOnePricingPolicyValue, SellingPlanGroupUserErrorCodePricingPolicyAdjustmentValueAndTypeMustMatch, SellingPlanGroupUserErrorCodeSellingPlanDuplicateName, SellingPlanGroupUserErrorCodeSellingPlanDuplicateOptions, SellingPlanGroupUserErrorCodeSellingPlanFixedPricingPoliciesLimit, SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeRequired, SellingPlanGroupUserErrorCodeCheckoutChargeValueAndTypeMustMatch, SellingPlanGroupUserErrorCodeOnlyNeedOneCheckoutChargeValue, SellingPlanGroupUserErrorCodeRemainingBalanceChargeExactTimeNotAllowed, SellingPlanGroupUserErrorCodeRemainingBalanceChargeTimeAfterCheckoutMustBeGreaterThanZero, SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerOnFullCheckout, SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPartialPercentageCheckoutCharge, SellingPlanGroupUserErrorCodeRemainingBalanceChargeTriggerNoRemainingBalanceOnPriceCheckoutCharge, SellingPlanGroupUserErrorCodeFulfillmentExactTimeRequired, SellingPlanGroupUserErrorCodeFulfillmentExactTimeNotAllowed, SellingPlanGroupUserErrorCodeSellingPlanAnchorsNotAllowed, SellingPlanGroupUserErrorCodeSellingPlanAnchorsRequired, SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringBilling, SellingPlanGroupUserErrorCodeOnlyOneOfFixedOrRecurringDelivery:
		return true
	}
	return false
}

func (e SellingPlanGroupUserErrorCode) String() string {
	return string(e)
}

func (e *SellingPlanGroupUserErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanGroupUserErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanGroupUserErrorCode", str)
	}
	return nil
}

func (e SellingPlanGroupUserErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanInterval string

const (
	SellingPlanIntervalDay   SellingPlanInterval = "DAY"
	SellingPlanIntervalWeek  SellingPlanInterval = "WEEK"
	SellingPlanIntervalMonth SellingPlanInterval = "MONTH"
	SellingPlanIntervalYear  SellingPlanInterval = "YEAR"
)

var AllSellingPlanInterval = []SellingPlanInterval{
	SellingPlanIntervalDay,
	SellingPlanIntervalWeek,
	SellingPlanIntervalMonth,
	SellingPlanIntervalYear,
}

func (e SellingPlanInterval) IsValid() bool {
	switch e {
	case SellingPlanIntervalDay, SellingPlanIntervalWeek, SellingPlanIntervalMonth, SellingPlanIntervalYear:
		return true
	}
	return false
}

func (e SellingPlanInterval) String() string {
	return string(e)
}

func (e *SellingPlanInterval) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanInterval(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanInterval", str)
	}
	return nil
}

func (e SellingPlanInterval) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanPricingPolicyAdjustmentType string

const (
	SellingPlanPricingPolicyAdjustmentTypePercentage  SellingPlanPricingPolicyAdjustmentType = "PERCENTAGE"
	SellingPlanPricingPolicyAdjustmentTypeFixedAmount SellingPlanPricingPolicyAdjustmentType = "FIXED_AMOUNT"
	SellingPlanPricingPolicyAdjustmentTypePrice       SellingPlanPricingPolicyAdjustmentType = "PRICE"
)

var AllSellingPlanPricingPolicyAdjustmentType = []SellingPlanPricingPolicyAdjustmentType{
	SellingPlanPricingPolicyAdjustmentTypePercentage,
	SellingPlanPricingPolicyAdjustmentTypeFixedAmount,
	SellingPlanPricingPolicyAdjustmentTypePrice,
}

func (e SellingPlanPricingPolicyAdjustmentType) IsValid() bool {
	switch e {
	case SellingPlanPricingPolicyAdjustmentTypePercentage, SellingPlanPricingPolicyAdjustmentTypeFixedAmount, SellingPlanPricingPolicyAdjustmentTypePrice:
		return true
	}
	return false
}

func (e SellingPlanPricingPolicyAdjustmentType) String() string {
	return string(e)
}

func (e *SellingPlanPricingPolicyAdjustmentType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanPricingPolicyAdjustmentType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanPricingPolicyAdjustmentType", str)
	}
	return nil
}

func (e SellingPlanPricingPolicyAdjustmentType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanRecurringDeliveryPolicyIntent string

const (
	SellingPlanRecurringDeliveryPolicyIntentFulfillmentBegin SellingPlanRecurringDeliveryPolicyIntent = "FULFILLMENT_BEGIN"
)

var AllSellingPlanRecurringDeliveryPolicyIntent = []SellingPlanRecurringDeliveryPolicyIntent{
	SellingPlanRecurringDeliveryPolicyIntentFulfillmentBegin,
}

func (e SellingPlanRecurringDeliveryPolicyIntent) IsValid() bool {
	switch e {
	case SellingPlanRecurringDeliveryPolicyIntentFulfillmentBegin:
		return true
	}
	return false
}

func (e SellingPlanRecurringDeliveryPolicyIntent) String() string {
	return string(e)
}

func (e *SellingPlanRecurringDeliveryPolicyIntent) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanRecurringDeliveryPolicyIntent(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanRecurringDeliveryPolicyIntent", str)
	}
	return nil
}

func (e SellingPlanRecurringDeliveryPolicyIntent) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanRecurringDeliveryPolicyPreAnchorBehavior string

const (
	SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorAsap SellingPlanRecurringDeliveryPolicyPreAnchorBehavior = "ASAP"
	SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorNext SellingPlanRecurringDeliveryPolicyPreAnchorBehavior = "NEXT"
)

var AllSellingPlanRecurringDeliveryPolicyPreAnchorBehavior = []SellingPlanRecurringDeliveryPolicyPreAnchorBehavior{
	SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorAsap,
	SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorNext,
}

func (e SellingPlanRecurringDeliveryPolicyPreAnchorBehavior) IsValid() bool {
	switch e {
	case SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorAsap, SellingPlanRecurringDeliveryPolicyPreAnchorBehaviorNext:
		return true
	}
	return false
}

func (e SellingPlanRecurringDeliveryPolicyPreAnchorBehavior) String() string {
	return string(e)
}

func (e *SellingPlanRecurringDeliveryPolicyPreAnchorBehavior) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanRecurringDeliveryPolicyPreAnchorBehavior(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanRecurringDeliveryPolicyPreAnchorBehavior", str)
	}
	return nil
}

func (e SellingPlanRecurringDeliveryPolicyPreAnchorBehavior) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanRemainingBalanceChargeTrigger string

const (
	SellingPlanRemainingBalanceChargeTriggerNoRemainingBalance SellingPlanRemainingBalanceChargeTrigger = "NO_REMAINING_BALANCE"
	SellingPlanRemainingBalanceChargeTriggerExactTime          SellingPlanRemainingBalanceChargeTrigger = "EXACT_TIME"
	SellingPlanRemainingBalanceChargeTriggerTimeAfterCheckout  SellingPlanRemainingBalanceChargeTrigger = "TIME_AFTER_CHECKOUT"
)

var AllSellingPlanRemainingBalanceChargeTrigger = []SellingPlanRemainingBalanceChargeTrigger{
	SellingPlanRemainingBalanceChargeTriggerNoRemainingBalance,
	SellingPlanRemainingBalanceChargeTriggerExactTime,
	SellingPlanRemainingBalanceChargeTriggerTimeAfterCheckout,
}

func (e SellingPlanRemainingBalanceChargeTrigger) IsValid() bool {
	switch e {
	case SellingPlanRemainingBalanceChargeTriggerNoRemainingBalance, SellingPlanRemainingBalanceChargeTriggerExactTime, SellingPlanRemainingBalanceChargeTriggerTimeAfterCheckout:
		return true
	}
	return false
}

func (e SellingPlanRemainingBalanceChargeTrigger) String() string {
	return string(e)
}

func (e *SellingPlanRemainingBalanceChargeTrigger) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanRemainingBalanceChargeTrigger(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanRemainingBalanceChargeTrigger", str)
	}
	return nil
}

func (e SellingPlanRemainingBalanceChargeTrigger) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SellingPlanReserve string

const (
	SellingPlanReserveOnFulfillment SellingPlanReserve = "ON_FULFILLMENT"
	SellingPlanReserveOnSale        SellingPlanReserve = "ON_SALE"
)

var AllSellingPlanReserve = []SellingPlanReserve{
	SellingPlanReserveOnFulfillment,
	SellingPlanReserveOnSale,
}

func (e SellingPlanReserve) IsValid() bool {
	switch e {
	case SellingPlanReserveOnFulfillment, SellingPlanReserveOnSale:
		return true
	}
	return false
}

func (e SellingPlanReserve) String() string {
	return string(e)
}

func (e *SellingPlanReserve) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SellingPlanReserve(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SellingPlanReserve", str)
	}
	return nil
}

func (e SellingPlanReserve) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ShopBranding string

const (
	ShopBrandingShopifyGold ShopBranding = "SHOPIFY_GOLD"
	ShopBrandingShopifyPlus ShopBranding = "SHOPIFY_PLUS"
	ShopBrandingRogers      ShopBranding = "ROGERS"
	ShopBrandingShopify     ShopBranding = "SHOPIFY"
)

var AllShopBranding = []ShopBranding{
	ShopBrandingShopifyGold,
	ShopBrandingShopifyPlus,
	ShopBrandingRogers,
	ShopBrandingShopify,
}

func (e ShopBranding) IsValid() bool {
	switch e {
	case ShopBrandingShopifyGold, ShopBrandingShopifyPlus, ShopBrandingRogers, ShopBrandingShopify:
		return true
	}
	return false
}

func (e ShopBranding) String() string {
	return string(e)
}

func (e *ShopBranding) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ShopBranding(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ShopBranding", str)
	}
	return nil
}

func (e ShopBranding) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ShopCustomerAccountsSetting string

const (
	ShopCustomerAccountsSettingRequired ShopCustomerAccountsSetting = "REQUIRED"
	ShopCustomerAccountsSettingOptional ShopCustomerAccountsSetting = "OPTIONAL"
	ShopCustomerAccountsSettingDisabled ShopCustomerAccountsSetting = "DISABLED"
)

var AllShopCustomerAccountsSetting = []ShopCustomerAccountsSetting{
	ShopCustomerAccountsSettingRequired,
	ShopCustomerAccountsSettingOptional,
	ShopCustomerAccountsSettingDisabled,
}

func (e ShopCustomerAccountsSetting) IsValid() bool {
	switch e {
	case ShopCustomerAccountsSettingRequired, ShopCustomerAccountsSettingOptional, ShopCustomerAccountsSettingDisabled:
		return true
	}
	return false
}

func (e ShopCustomerAccountsSetting) String() string {
	return string(e)
}

func (e *ShopCustomerAccountsSetting) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ShopCustomerAccountsSetting(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ShopCustomerAccountsSetting", str)
	}
	return nil
}

func (e ShopCustomerAccountsSetting) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ShopPolicyType string

const (
	ShopPolicyTypeRefundPolicy       ShopPolicyType = "REFUND_POLICY"
	ShopPolicyTypeShippingPolicy     ShopPolicyType = "SHIPPING_POLICY"
	ShopPolicyTypePrivacyPolicy      ShopPolicyType = "PRIVACY_POLICY"
	ShopPolicyTypeTermsOfService     ShopPolicyType = "TERMS_OF_SERVICE"
	ShopPolicyTypeTermsOfSale        ShopPolicyType = "TERMS_OF_SALE"
	ShopPolicyTypeLegalNotice        ShopPolicyType = "LEGAL_NOTICE"
	ShopPolicyTypeSubscriptionPolicy ShopPolicyType = "SUBSCRIPTION_POLICY"
)

var AllShopPolicyType = []ShopPolicyType{
	ShopPolicyTypeRefundPolicy,
	ShopPolicyTypeShippingPolicy,
	ShopPolicyTypePrivacyPolicy,
	ShopPolicyTypeTermsOfService,
	ShopPolicyTypeTermsOfSale,
	ShopPolicyTypeLegalNotice,
	ShopPolicyTypeSubscriptionPolicy,
}

func (e ShopPolicyType) IsValid() bool {
	switch e {
	case ShopPolicyTypeRefundPolicy, ShopPolicyTypeShippingPolicy, ShopPolicyTypePrivacyPolicy, ShopPolicyTypeTermsOfService, ShopPolicyTypeTermsOfSale, ShopPolicyTypeLegalNotice, ShopPolicyTypeSubscriptionPolicy:
		return true
	}
	return false
}

func (e ShopPolicyType) String() string {
	return string(e)
}

func (e *ShopPolicyType) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ShopPolicyType(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ShopPolicyType", str)
	}
	return nil
}

func (e ShopPolicyType) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type ShopTagSort string

const (
	ShopTagSortAlphabetical ShopTagSort = "ALPHABETICAL"
	ShopTagSortPopular      ShopTagSort = "POPULAR"
)

var AllShopTagSort = []ShopTagSort{
	ShopTagSortAlphabetical,
	ShopTagSortPopular,
}

func (e ShopTagSort) IsValid() bool {
	switch e {
	case ShopTagSortAlphabetical, ShopTagSortPopular:
		return true
	}
	return false
}

func (e ShopTagSort) String() string {
	return string(e)
}

func (e *ShopTagSort) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = ShopTagSort(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid ShopTagSort", str)
	}
	return nil
}

func (e ShopTagSort) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type StaffMemberDefaultImage string

const (
	StaffMemberDefaultImageDefault     StaffMemberDefaultImage = "DEFAULT"
	StaffMemberDefaultImageTransparent StaffMemberDefaultImage = "TRANSPARENT"
	StaffMemberDefaultImageNotFound    StaffMemberDefaultImage = "NOT_FOUND"
)

var AllStaffMemberDefaultImage = []StaffMemberDefaultImage{
	StaffMemberDefaultImageDefault,
	StaffMemberDefaultImageTransparent,
	StaffMemberDefaultImageNotFound,
}

func (e StaffMemberDefaultImage) IsValid() bool {
	switch e {
	case StaffMemberDefaultImageDefault, StaffMemberDefaultImageTransparent, StaffMemberDefaultImageNotFound:
		return true
	}
	return false
}

func (e StaffMemberDefaultImage) String() string {
	return string(e)
}

func (e *StaffMemberDefaultImage) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = StaffMemberDefaultImage(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid StaffMemberDefaultImage", str)
	}
	return nil
}

func (e StaffMemberDefaultImage) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SubscriptionBillingAttemptErrorCode string

const (
	SubscriptionBillingAttemptErrorCodePaymentMethodNotFound                      SubscriptionBillingAttemptErrorCode = "PAYMENT_METHOD_NOT_FOUND"
	SubscriptionBillingAttemptErrorCodePaymentProviderIsNotEnabled                SubscriptionBillingAttemptErrorCode = "PAYMENT_PROVIDER_IS_NOT_ENABLED"
	SubscriptionBillingAttemptErrorCodeInvalidPaymentMethod                       SubscriptionBillingAttemptErrorCode = "INVALID_PAYMENT_METHOD"
	SubscriptionBillingAttemptErrorCodeUnexpectedError                            SubscriptionBillingAttemptErrorCode = "UNEXPECTED_ERROR"
	SubscriptionBillingAttemptErrorCodeExpiredPaymentMethod                       SubscriptionBillingAttemptErrorCode = "EXPIRED_PAYMENT_METHOD"
	SubscriptionBillingAttemptErrorCodePaymentMethodDeclined                      SubscriptionBillingAttemptErrorCode = "PAYMENT_METHOD_DECLINED"
	SubscriptionBillingAttemptErrorCodeAuthenticationError                        SubscriptionBillingAttemptErrorCode = "AUTHENTICATION_ERROR"
	SubscriptionBillingAttemptErrorCodeTestMode                                   SubscriptionBillingAttemptErrorCode = "TEST_MODE"
	SubscriptionBillingAttemptErrorCodeBuyerCanceledPaymentMethod                 SubscriptionBillingAttemptErrorCode = "BUYER_CANCELED_PAYMENT_METHOD"
	SubscriptionBillingAttemptErrorCodeCustomerNotFound                           SubscriptionBillingAttemptErrorCode = "CUSTOMER_NOT_FOUND"
	SubscriptionBillingAttemptErrorCodeCustomerInvalid                            SubscriptionBillingAttemptErrorCode = "CUSTOMER_INVALID"
	SubscriptionBillingAttemptErrorCodeInvalidShippingAddress                     SubscriptionBillingAttemptErrorCode = "INVALID_SHIPPING_ADDRESS"
	SubscriptionBillingAttemptErrorCodeInvalidCustomerBillingAgreement            SubscriptionBillingAttemptErrorCode = "INVALID_CUSTOMER_BILLING_AGREEMENT"
	SubscriptionBillingAttemptErrorCodeInvoiceAlreadyPaid                         SubscriptionBillingAttemptErrorCode = "INVOICE_ALREADY_PAID"
	SubscriptionBillingAttemptErrorCodePaymentMethodIncompatibleWithGatewayConfig SubscriptionBillingAttemptErrorCode = "PAYMENT_METHOD_INCOMPATIBLE_WITH_GATEWAY_CONFIG"
	SubscriptionBillingAttemptErrorCodeAmountTooSmall                             SubscriptionBillingAttemptErrorCode = "AMOUNT_TOO_SMALL"
)

var AllSubscriptionBillingAttemptErrorCode = []SubscriptionBillingAttemptErrorCode{
	SubscriptionBillingAttemptErrorCodePaymentMethodNotFound,
	SubscriptionBillingAttemptErrorCodePaymentProviderIsNotEnabled,
	SubscriptionBillingAttemptErrorCodeInvalidPaymentMethod,
	SubscriptionBillingAttemptErrorCodeUnexpectedError,
	SubscriptionBillingAttemptErrorCodeExpiredPaymentMethod,
	SubscriptionBillingAttemptErrorCodePaymentMethodDeclined,
	SubscriptionBillingAttemptErrorCodeAuthenticationError,
	SubscriptionBillingAttemptErrorCodeTestMode,
	SubscriptionBillingAttemptErrorCodeBuyerCanceledPaymentMethod,
	SubscriptionBillingAttemptErrorCodeCustomerNotFound,
	SubscriptionBillingAttemptErrorCodeCustomerInvalid,
	SubscriptionBillingAttemptErrorCodeInvalidShippingAddress,
	SubscriptionBillingAttemptErrorCodeInvalidCustomerBillingAgreement,
	SubscriptionBillingAttemptErrorCodeInvoiceAlreadyPaid,
	SubscriptionBillingAttemptErrorCodePaymentMethodIncompatibleWithGatewayConfig,
	SubscriptionBillingAttemptErrorCodeAmountTooSmall,
}

func (e SubscriptionBillingAttemptErrorCode) IsValid() bool {
	switch e {
	case SubscriptionBillingAttemptErrorCodePaymentMethodNotFound, SubscriptionBillingAttemptErrorCodePaymentProviderIsNotEnabled, SubscriptionBillingAttemptErrorCodeInvalidPaymentMethod, SubscriptionBillingAttemptErrorCodeUnexpectedError, SubscriptionBillingAttemptErrorCodeExpiredPaymentMethod, SubscriptionBillingAttemptErrorCodePaymentMethodDeclined, SubscriptionBillingAttemptErrorCodeAuthenticationError, SubscriptionBillingAttemptErrorCodeTestMode, SubscriptionBillingAttemptErrorCodeBuyerCanceledPaymentMethod, SubscriptionBillingAttemptErrorCodeCustomerNotFound, SubscriptionBillingAttemptErrorCodeCustomerInvalid, SubscriptionBillingAttemptErrorCodeInvalidShippingAddress, SubscriptionBillingAttemptErrorCodeInvalidCustomerBillingAgreement, SubscriptionBillingAttemptErrorCodeInvoiceAlreadyPaid, SubscriptionBillingAttemptErrorCodePaymentMethodIncompatibleWithGatewayConfig, SubscriptionBillingAttemptErrorCodeAmountTooSmall:
		return true
	}
	return false
}

func (e SubscriptionBillingAttemptErrorCode) String() string {
	return string(e)
}

func (e *SubscriptionBillingAttemptErrorCode) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SubscriptionBillingAttemptErrorCode(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SubscriptionBillingAttemptErrorCode", str)
	}
	return nil
}

func (e SubscriptionBillingAttemptErrorCode) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SubscriptionContractLastPaymentStatus string

const (
	SubscriptionContractLastPaymentStatusSucceeded SubscriptionContractLastPaymentStatus = "SUCCEEDED"
	SubscriptionContractLastPaymentStatusFailed    SubscriptionContractLastPaymentStatus = "FAILED"
)

var AllSubscriptionContractLastPaymentStatus = []SubscriptionContractLastPaymentStatus{
	SubscriptionContractLastPaymentStatusSucceeded,
	SubscriptionContractLastPaymentStatusFailed,
}

func (e SubscriptionContractLastPaymentStatus) IsValid() bool {
	switch e {
	case SubscriptionContractLastPaymentStatusSucceeded, SubscriptionContractLastPaymentStatusFailed:
		return true
	}
	return false
}

func (e SubscriptionContractLastPaymentStatus) String() string {
	return string(e)
}

func (e *SubscriptionContractLastPaymentStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SubscriptionContractLastPaymentStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SubscriptionContractLastPaymentStatus", str)
	}
	return nil
}

func (e SubscriptionContractLastPaymentStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SubscriptionContractSubscriptionStatus string

const (
	SubscriptionContractSubscriptionStatusActive    SubscriptionContractSubscriptionStatus = "ACTIVE"
	SubscriptionContractSubscriptionStatusPaused    SubscriptionContractSubscriptionStatus = "PAUSED"
	SubscriptionContractSubscriptionStatusCancelled SubscriptionContractSubscriptionStatus = "CANCELLED"
	SubscriptionContractSubscriptionStatusExpired   SubscriptionContractSubscriptionStatus = "EXPIRED"
	SubscriptionContractSubscriptionStatusFailed    SubscriptionContractSubscriptionStatus = "FAILED"
)

var AllSubscriptionContractSubscriptionStatus = []SubscriptionContractSubscriptionStatus{
	SubscriptionContractSubscriptionStatusActive,
	SubscriptionContractSubscriptionStatusPaused,
	SubscriptionContractSubscriptionStatusCancelled,
	SubscriptionContractSubscriptionStatusExpired,
	SubscriptionContractSubscriptionStatusFailed,
}

func (e SubscriptionContractSubscriptionStatus) IsValid() bool {
	switch e {
	case SubscriptionContractSubscriptionStatusActive, SubscriptionContractSubscriptionStatusPaused, SubscriptionContractSubscriptionStatusCancelled, SubscriptionContractSubscriptionStatusExpired, SubscriptionContractSubscriptionStatusFailed:
		return true
	}
	return false
}

func (e SubscriptionContractSubscriptionStatus) String() string {
	return string(e)
}

func (e *SubscriptionContractSubscriptionStatus) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SubscriptionContractSubscriptionStatus(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SubscriptionContractSubscriptionStatus", str)
	}
	return nil
}

func (e SubscriptionContractSubscriptionStatus) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SubscriptionDiscountRejectionReason string

const (
	SubscriptionDiscountRejectionReasonNotFound                  SubscriptionDiscountRejectionReason = "NOT_FOUND"
	SubscriptionDiscountRejectionReasonNoEntitledLineItems       SubscriptionDiscountRejectionReason = "NO_ENTITLED_LINE_ITEMS"
	SubscriptionDiscountRejectionReasonQuantityNotInRange        SubscriptionDiscountRejectionReason = "QUANTITY_NOT_IN_RANGE"
	SubscriptionDiscountRejectionReasonPurchaseNotInRange        SubscriptionDiscountRejectionReason = "PURCHASE_NOT_IN_RANGE"
	SubscriptionDiscountRejectionReasonCustomerNotEligible       SubscriptionDiscountRejectionReason = "CUSTOMER_NOT_ELIGIBLE"
	SubscriptionDiscountRejectionReasonUsageLimitReached         SubscriptionDiscountRejectionReason = "USAGE_LIMIT_REACHED"
	SubscriptionDiscountRejectionReasonCustomerUsageLimitReached SubscriptionDiscountRejectionReason = "CUSTOMER_USAGE_LIMIT_REACHED"
	SubscriptionDiscountRejectionReasonCurrentlyInactive         SubscriptionDiscountRejectionReason = "CURRENTLY_INACTIVE"
	SubscriptionDiscountRejectionReasonNoEntitledShippingLines   SubscriptionDiscountRejectionReason = "NO_ENTITLED_SHIPPING_LINES"
	SubscriptionDiscountRejectionReasonIncompatiblePurchaseType  SubscriptionDiscountRejectionReason = "INCOMPATIBLE_PURCHASE_TYPE"
	SubscriptionDiscountRejectionReasonInternalError             SubscriptionDiscountRejectionReason = "INTERNAL_ERROR"
)

var AllSubscriptionDiscountRejectionReason = []SubscriptionDiscountRejectionReason{
	SubscriptionDiscountRejectionReasonNotFound,
	SubscriptionDiscountRejectionReasonNoEntitledLineItems,
	SubscriptionDiscountRejectionReasonQuantityNotInRange,
	SubscriptionDiscountRejectionReasonPurchaseNotInRange,
	SubscriptionDiscountRejectionReasonCustomerNotEligible,
	SubscriptionDiscountRejectionReasonUsageLimitReached,
	SubscriptionDiscountRejectionReasonCustomerUsageLimitReached,
	SubscriptionDiscountRejectionReasonCurrentlyInactive,
	SubscriptionDiscountRejectionReasonNoEntitledShippingLines,
	SubscriptionDiscountRejectionReasonIncompatiblePurchaseType,
	SubscriptionDiscountRejectionReasonInternalError,
}

func (e SubscriptionDiscountRejectionReason) IsValid() bool {
	switch e {
	case SubscriptionDiscountRejectionReasonNotFound, SubscriptionDiscountRejectionReasonNoEntitledLineItems, SubscriptionDiscountRejectionReasonQuantityNotInRange, SubscriptionDiscountRejectionReasonPurchaseNotInRange, SubscriptionDiscountRejectionReasonCustomerNotEligible, SubscriptionDiscountRejectionReasonUsageLimitReached, SubscriptionDiscountRejectionReasonCustomerUsageLimitReached, SubscriptionDiscountRejectionReasonCurrentlyInactive, SubscriptionDiscountRejectionReasonNoEntitledShippingLines, SubscriptionDiscountRejectionReasonIncompatiblePurchaseType, SubscriptionDiscountRejectionReasonInternalError:
		return true
	}
	return false
}

func (e SubscriptionDiscountRejectionReason) String() string {
	return string(e)
}

func (e *SubscriptionDiscountRejectionReason) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SubscriptionDiscountRejectionReason(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SubscriptionDiscountRejectionReason", str)
	}
	return nil
}

func (e SubscriptionDiscountRejectionReason) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type SuggestedOrderTransactionKind string

const (
	SuggestedOrderTransactionKindSuggestedRefund SuggestedOrderTransactionKind = "SUGGESTED_REFUND"
)

var AllSuggestedOrderTransactionKind = []SuggestedOrderTransactionKind{
	SuggestedOrderTransactionKindSuggestedRefund,
}

func (e SuggestedOrderTransactionKind) IsValid() bool {
	switch e {
	case SuggestedOrderTransactionKindSuggestedRefund:
		return true
	}
	return false
}

func (e SuggestedOrderTransactionKind) String() string {
	return string(e)
}

func (e *SuggestedOrderTransactionKind) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = SuggestedOrderTransactionKind(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid SuggestedOrderTransactionKind", str)
	}
	return nil
}

func (e SuggestedOrderTransactionKind) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type TaxExemption string

const (
	TaxExemptionCaStatusCardExemption               TaxExemption = "CA_STATUS_CARD_EXEMPTION"
	TaxExemptionCaBcResellerExemption               TaxExemption = "CA_BC_RESELLER_EXEMPTION"
	TaxExemptionCaMbResellerExemption               TaxExemption = "CA_MB_RESELLER_EXEMPTION"
	TaxExemptionCaSkResellerExemption               TaxExemption = "CA_SK_RESELLER_EXEMPTION"
	TaxExemptionCaDiplomatExemption                 TaxExemption = "CA_DIPLOMAT_EXEMPTION"
	TaxExemptionCaBcCommercialFisheryExemption      TaxExemption = "CA_BC_COMMERCIAL_FISHERY_EXEMPTION"
	TaxExemptionCaMbCommercialFisheryExemption      TaxExemption = "CA_MB_COMMERCIAL_FISHERY_EXEMPTION"
	TaxExemptionCaNsCommercialFisheryExemption      TaxExemption = "CA_NS_COMMERCIAL_FISHERY_EXEMPTION"
	TaxExemptionCaPeCommercialFisheryExemption      TaxExemption = "CA_PE_COMMERCIAL_FISHERY_EXEMPTION"
	TaxExemptionCaSkCommercialFisheryExemption      TaxExemption = "CA_SK_COMMERCIAL_FISHERY_EXEMPTION"
	TaxExemptionCaBcProductionAndMachineryExemption TaxExemption = "CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION"
	TaxExemptionCaSkProductionAndMachineryExemption TaxExemption = "CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION"
	TaxExemptionCaBcSubContractorExemption          TaxExemption = "CA_BC_SUB_CONTRACTOR_EXEMPTION"
	TaxExemptionCaSkSubContractorExemption          TaxExemption = "CA_SK_SUB_CONTRACTOR_EXEMPTION"
	TaxExemptionCaBcContractorExemption             TaxExemption = "CA_BC_CONTRACTOR_EXEMPTION"
	TaxExemptionCaSkContractorExemption             TaxExemption = "CA_SK_CONTRACTOR_EXEMPTION"
	TaxExemptionCaOnPurchaseExemption               TaxExemption = "CA_ON_PURCHASE_EXEMPTION"
	TaxExemptionCaMbFarmerExemption                 TaxExemption = "CA_MB_FARMER_EXEMPTION"
	TaxExemptionCaNsFarmerExemption                 TaxExemption = "CA_NS_FARMER_EXEMPTION"
	TaxExemptionCaSkFarmerExemption                 TaxExemption = "CA_SK_FARMER_EXEMPTION"
	TaxExemptionEuReverseChargeExemptionRule        TaxExemption = "EU_REVERSE_CHARGE_EXEMPTION_RULE"
	TaxExemptionUsAlResellerExemption               TaxExemption = "US_AL_RESELLER_EXEMPTION"
	TaxExemptionUsAkResellerExemption               TaxExemption = "US_AK_RESELLER_EXEMPTION"
	TaxExemptionUsAzResellerExemption               TaxExemption = "US_AZ_RESELLER_EXEMPTION"
	TaxExemptionUsArResellerExemption               TaxExemption = "US_AR_RESELLER_EXEMPTION"
	TaxExemptionUsCaResellerExemption               TaxExemption = "US_CA_RESELLER_EXEMPTION"
	TaxExemptionUsCoResellerExemption               TaxExemption = "US_CO_RESELLER_EXEMPTION"
	TaxExemptionUsCtResellerExemption               TaxExemption = "US_CT_RESELLER_EXEMPTION"
	TaxExemptionUsDeResellerExemption               TaxExemption = "US_DE_RESELLER_EXEMPTION"
	TaxExemptionUsFlResellerExemption               TaxExemption = "US_FL_RESELLER_EXEMPTION"
	TaxExemptionUsGaResellerExemption               TaxExemption = "US_GA_RESELLER_EXEMPTION"
	TaxExemptionUsHiResellerExemption               TaxExemption = "US_HI_RESELLER_EXEMPTION"
	TaxExemptionUsIDResellerExemption               TaxExemption = "US_ID_RESELLER_EXEMPTION"
	TaxExemptionUsIlResellerExemption               TaxExemption = "US_IL_RESELLER_EXEMPTION"
	TaxExemptionUsInResellerExemption               TaxExemption = "US_IN_RESELLER_EXEMPTION"
	TaxExemptionUsIaResellerExemption               TaxExemption = "US_IA_RESELLER_EXEMPTION"
	TaxExemptionUsKsResellerExemption               TaxExemption = "US_KS_RESELLER_EXEMPTION"
	TaxExemptionUsKyResellerExemption               TaxExemption = "US_KY_RESELLER_EXEMPTION"
	TaxExemptionUsLaResellerExemption               TaxExemption = "US_LA_RESELLER_EXEMPTION"
	TaxExemptionUsMeResellerExemption               TaxExemption = "US_ME_RESELLER_EXEMPTION"
	TaxExemptionUsMdResellerExemption               TaxExemption = "US_MD_RESELLER_EXEMPTION"
	TaxExemptionUsMaResellerExemption               TaxExemption = "US_MA_RESELLER_EXEMPTION"
	TaxExemptionUsMiResellerExemption               TaxExemption = "US_MI_RESELLER_EXEMPTION"
	TaxExemptionUsMnResellerExemption               TaxExemption = "US_MN_RESELLER_EXEMPTION"
	TaxExemptionUsMsResellerExemption               TaxExemption = "US_MS_RESELLER_EXEMPTION"
	TaxExemptionUsMoResellerExemption               TaxExemption = "US_MO_RESELLER_EXEMPTION"
	TaxExemptionUsMtResellerExemption               TaxExemption = "US_MT_RESELLER_EXEMPTION"
	TaxExemptionUsNeResellerExemption               TaxExemption = "US_NE_RESELLER_EXEMPTION"
	TaxExemptionUsNvResellerExemption               TaxExemption = "US_NV_RESELLER_EXEMPTION"
	TaxExemptionUsNhResellerExemption               TaxExemption = "US_NH_RESELLER_EXEMPTION"
	TaxExemptionUsNjResellerExemption               TaxExemption = "US_NJ_RESELLER_EXEMPTION"
	TaxExemptionUsNmResellerExemption               TaxExemption = "US_NM_RESELLER_EXEMPTION"
	TaxExemptionUsNyResellerExemption               TaxExemption = "US_NY_RESELLER_EXEMPTION"
	TaxExemptionUsNcResellerExemption               TaxExemption = "US_NC_RESELLER_EXEMPTION"
	TaxExemptionUsNdResellerExemption               TaxExemption = "US_ND_RESELLER_EXEMPTION"
	TaxExemptionUsOhResellerExemption               TaxExemption = "US_OH_RESELLER_EXEMPTION"
	TaxExemptionUsOkResellerExemption               TaxExemption = "US_OK_RESELLER_EXEMPTION"
	TaxExemptionUsOrResellerExemption               TaxExemption = "US_OR_RESELLER_EXEMPTION"
	TaxExemptionUsPaResellerExemption               TaxExemption = "US_PA_RESELLER_EXEMPTION"
	TaxExemptionUsRiResellerExemption               TaxExemption = "US_RI_RESELLER_EXEMPTION"
	TaxExemptionUsScResellerExemption               TaxExemption = "US_SC_RESELLER_EXEMPTION"
	TaxExemptionUsSdResellerExemption               TaxExemption = "US_SD_RESELLER_EXEMPTION"
	TaxExemptionUsTnResellerExemption               TaxExemption = "US_TN_RESELLER_EXEMPTION"
	TaxExemptionUsTxResellerExemption               TaxExemption = "US_TX_RESELLER_EXEMPTION"
	TaxExemptionUsUtResellerExemption               TaxExemption = "US_UT_RESELLER_EXEMPTION"
	TaxExemptionUsVtResellerExemption               TaxExemption = "US_VT_RESELLER_EXEMPTION"
	TaxExemptionUsVaResellerExemption               TaxExemption = "US_VA_RESELLER_EXEMPTION"
	TaxExemptionUsWaResellerExemption               TaxExemption = "US_WA_RESELLER_EXEMPTION"
	TaxExemptionUsWvResellerExemption               TaxExemption = "US_WV_RESELLER_EXEMPTION"
	TaxExemptionUsWiResellerExemption               TaxExemption = "US_WI_RESELLER_EXEMPTION"
	TaxExemptionUsWyResellerExemption               TaxExemption = "US_WY_RESELLER_EXEMPTION"
	TaxExemptionUsDcResellerExemption               TaxExemption = "US_DC_RESELLER_EXEMPTION"
)

var AllTaxExemption = []TaxExemption{
	TaxExemptionCaStatusCardExemption,
	TaxExemptionCaBcResellerExemption,
	TaxExemptionCaMbResellerExemption,
	TaxExemptionCaSkResellerExemption,
	TaxExemptionCaDiplomatExemption,
	TaxExemptionCaBcCommercialFisheryExemption,
	TaxExemptionCaMbCommercialFisheryExemption,
	TaxExemptionCaNsCommercialFisheryExemption,
	TaxExemptionCaPeCommercialFisheryExemption,
	TaxExemptionCaSkCommercialFisheryExemption,
	TaxExemptionCaBcProductionAndMachineryExemption,
	TaxExemptionCaSkProductionAndMachineryExemption,
	TaxExemptionCaBcSubContractorExemption,
	TaxExemptionCaSkSubContractorExemption,
	TaxExemptionCaBcContractorExemption,
	TaxExemptionCaSkContractorExemption,
	TaxExemptionCaOnPurchaseExemption,
	TaxExemptionCaMbFarmerExemption,
	TaxExemptionCaNsFarmerExemption,
	TaxExemptionCaSkFarmerExemption,
	TaxExemptionEuReverseChargeExemptionRule,
	TaxExemptionUsAlResellerExemption,
	TaxExemptionUsAkResellerExemption,
	TaxExemptionUsAzResellerExemption,
	TaxExemptionUsArResellerExemption,
	TaxExemptionUsCaResellerExemption,
	TaxExemptionUsCoResellerExemption,
	TaxExemptionUsCtResellerExemption,
	TaxExemptionUsDeResellerExemption,
	TaxExemptionUsFlResellerExemption,
	TaxExemptionUsGaResellerExemption,
	TaxExemptionUsHiResellerExemption,
	TaxExemptionUsIDResellerExemption,
	TaxExemptionUsIlResellerExemption,
	TaxExemptionUsInResellerExemption,
	TaxExemptionUsIaResellerExemption,
	TaxExemptionUsKsResellerExemption,
	TaxExemptionUsKyResellerExemption,
	TaxExemptionUsLaResellerExemption,
	TaxExemptionUsMeResellerExemption,
	TaxExemptionUsMdResellerExemption,
	TaxExemptionUsMaResellerExemption,
	TaxExemptionUsMiResellerExemption,
	TaxExemptionUsMnResellerExemption,
	TaxExemptionUsMsResellerExemption,
	TaxExemptionUsMoResellerExemption,
	TaxExemptionUsMtResellerExemption,
	TaxExemptionUsNeResellerExemption,
	TaxExemptionUsNvResellerExemption,
	TaxExemptionUsNhResellerExemption,
	TaxExemptionUsNjResellerExemption,
	TaxExemptionUsNmResellerExemption,
	TaxExemptionUsNyResellerExemption,
	TaxExemptionUsNcResellerExemption,
	TaxExemptionUsNdResellerExemption,
	TaxExemptionUsOhResellerExemption,
	TaxExemptionUsOkResellerExemption,
	TaxExemptionUsOrResellerExemption,
	TaxExemptionUsPaResellerExemption,
	TaxExemptionUsRiResellerExemption,
	TaxExemptionUsScResellerExemption,
	TaxExemptionUsSdResellerExemption,
	TaxExemptionUsTnResellerExemption,
	TaxExemptionUsTxResellerExemption,
	TaxExemptionUsUtResellerExemption,
	TaxExemptionUsVtResellerExemption,
	TaxExemptionUsVaResellerExemption,
	TaxExemptionUsWaResellerExemption,
	TaxExemptionUsWvResellerExemption,
	TaxExemptionUsWiResellerExemption,
	TaxExemptionUsWyResellerExemption,
	TaxExemptionUsDcResellerExemption,
}

func (e TaxExemption) IsValid() bool {
	switch e {
	case TaxExemptionCaStatusCardExemption, TaxExemptionCaBcResellerExemption, TaxExemptionCaMbResellerExemption, TaxExemptionCaSkResellerExemption, TaxExemptionCaDiplomatExemption, TaxExemptionCaBcCommercialFisheryExemption, TaxExemptionCaMbCommercialFisheryExemption, TaxExemptionCaNsCommercialFisheryExemption, TaxExemptionCaPeCommercialFisheryExemption, TaxExemptionCaSkCommercialFisheryExemption, TaxExemptionCaBcProductionAndMachineryExemption, TaxExemptionCaSkProductionAndMachineryExemption, TaxExemptionCaBcSubContractorExemption, TaxExemptionCaSkSubContractorExemption, TaxExemptionCaBcContractorExemption, TaxExemptionCaSkContractorExemption, TaxExemptionCaOnPurchaseExemption, TaxExemptionCaMbFarmerExemption, TaxExemptionCaNsFarmerExemption, TaxExemptionCaSkFarmerExemption, TaxExemptionEuReverseChargeExemptionRule, TaxExemptionUsAlResellerExemption, TaxExemptionUsAkResellerExemption, TaxExemptionUsAzResellerExemption, TaxExemptionUsArResellerExemption, TaxExemptionUsCaResellerExemption, TaxExemptionUsCoResellerExemption, TaxExemptionUsCtResellerExemption, TaxExemptionUsDeResellerExemption, TaxExemptionUsFlResellerExemption, TaxExemptionUsGaResellerExemption, TaxExemptionUsHiResellerExemption, TaxExemptionUsIDResellerExemption, TaxExemptionUsIlResellerExemption, TaxExemptionUsInResellerExemption, TaxExemptionUsIaResellerExemption, TaxExemptionUsKsResellerExemption, TaxExemptionUsKyResellerExemption, TaxExemptionUsLaResellerExemption, TaxExemptionUsMeResellerExemption, TaxExemptionUsMdResellerExemption, TaxExemptionUsMaResellerExemption, TaxExemptionUsMiResellerExemption, TaxExemptionUsMnResellerExemption, TaxExemptionUsMsResellerExemption, TaxExemptionUsMoResellerExemption, TaxExemptionUsMtResellerExemption, TaxExemptionUsNeResellerExemption, TaxExemptionUsNvResellerExemption, TaxExemptionUsNhResellerExemption, TaxExemptionUsNjResellerExemption, TaxExemptionUsNmResellerExemption, TaxExemptionUsNyResellerExemption, TaxExemptionUsNcResellerExemption, TaxExemptionUsNdResellerExemption, TaxExemptionUsOhResellerExemption, TaxExemptionUsOkResellerExemption, TaxExemptionUsOrResellerExemption, TaxExemptionUsPaResellerExemption, TaxExemptionUsRiResellerExemption, TaxExemptionUsScResellerExemption, TaxExemptionUsSdResellerExemption, TaxExemptionUsTnResellerExemption, TaxExemptionUsTxResellerExemption, TaxExemptionUsUtResellerExemption, TaxExemptionUsVtResellerExemption, TaxExemptionUsVaResellerExemption, TaxExemptionUsWaResellerExemption, TaxExemptionUsWvResellerExemption, TaxExemptionUsWiResellerExemption, TaxExemptionUsWyResellerExemption, TaxExemptionUsDcResellerExemption:
		return true
	}
	return false
}

func (e TaxExemption) String() string {
	return string(e)
}

func (e *TaxExemption) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = TaxExemption(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid TaxExemption", str)
	}
	return nil
}

func (e TaxExemption) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type UnitSystem string

const (
	UnitSystemImperialSystem UnitSystem = "IMPERIAL_SYSTEM"
	UnitSystemMetricSystem   UnitSystem = "METRIC_SYSTEM"
)

var AllUnitSystem = []UnitSystem{
	UnitSystemImperialSystem,
	UnitSystemMetricSystem,
}

func (e UnitSystem) IsValid() bool {
	switch e {
	case UnitSystemImperialSystem, UnitSystemMetricSystem:
		return true
	}
	return false
}

func (e UnitSystem) String() string {
	return string(e)
}

func (e *UnitSystem) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = UnitSystem(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid UnitSystem", str)
	}
	return nil
}

func (e UnitSystem) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}

type WeightUnit string

const (
	WeightUnitKilograms WeightUnit = "KILOGRAMS"
	WeightUnitGrams     WeightUnit = "GRAMS"
	WeightUnitPounds    WeightUnit = "POUNDS"
	WeightUnitOunces    WeightUnit = "OUNCES"
)

var AllWeightUnit = []WeightUnit{
	WeightUnitKilograms,
	WeightUnitGrams,
	WeightUnitPounds,
	WeightUnitOunces,
}

func (e WeightUnit) IsValid() bool {
	switch e {
	case WeightUnitKilograms, WeightUnitGrams, WeightUnitPounds, WeightUnitOunces:
		return true
	}
	return false
}

func (e WeightUnit) String() string {
	return string(e)
}

func (e *WeightUnit) UnmarshalGQL(v interface{}) error {
	str, ok := v.(string)
	if !ok {
		return fmt.Errorf("enums must be strings")
	}

	*e = WeightUnit(str)
	if !e.IsValid() {
		return fmt.Errorf("%s is not a valid WeightUnit", str)
	}
	return nil
}

func (e WeightUnit) MarshalGQL(w io.Writer) {
	fmt.Fprint(w, strconv.Quote(e.String()))
}
