// Code generated by introspect; EDIT WITH CAUTION.

package schema

type Customer struct {
	Addresses               []any                               `json:"addresses"`
	AddressesV2             MailingAddressConnection            `json:"addressesV2"`
	AmountSpent             MoneyV2                             `json:"amountSpent"`
	CanDelete               bool                                `json:"canDelete"`
	CompanyContactProfiles  []any                               `json:"companyContactProfiles"`
	CreatedAt               string                              `json:"createdAt"`
	DataSaleOptOut          bool                                `json:"dataSaleOptOut"`
	DefaultAddress          *MailingAddress                     `json:"defaultAddress,omitempty"`
	DisplayName             string                              `json:"displayName"`
	Email                   *string                             `json:"email,omitempty"`
	EmailMarketingConsent   *CustomerEmailMarketingConsentState `json:"emailMarketingConsent,omitempty"`
	Events                  EventConnection                     `json:"events"`
	FirstName               *string                             `json:"firstName,omitempty"`
	ID                      string                              `json:"id"`
	Image                   *Image                              `json:"image"`
	LastName                *string                             `json:"lastName,omitempty"`
	LastOrder               *Order                              `json:"lastOrder"`
	LegacyResourceID        string                              `json:"legacyResourceId"`
	LifetimeDuration        string                              `json:"lifetimeDuration"`
	Locale                  string                              `json:"locale"`
	Market                  *Market                             `json:"market"`
	Mergeable               CustomerMergeable                   `json:"mergeable"`
	Metafield               *Metafield                          `json:"metafield"`
	Metafields              MetafieldConnection                 `json:"metafields"`
	MultipassIdentifier     *string                             `json:"multipassIdentifier,omitempty"`
	Note                    *string                             `json:"note,omitempty"`
	NumberOfOrders          string                              `json:"numberOfOrders"`
	Orders                  OrderConnection                     `json:"orders"`
	PaymentMethods          CustomerPaymentMethodConnection     `json:"paymentMethods"`
	Phone                   *string                             `json:"phone,omitempty"`
	ProductSubscriberStatus CustomerProductSubscriberStatus     `json:"productSubscriberStatus"`
	SmsMarketingConsent     *CustomerSmsMarketingConsentState   `json:"smsMarketingConsent,omitempty"`
	State                   CustomerState                       `json:"state"`
	Statistics              CustomerStatistics                  `json:"statistics"`
	StoreCreditAccounts     StoreCreditAccountConnection        `json:"storeCreditAccounts"`
	SubscriptionContracts   SubscriptionContractConnection      `json:"subscriptionContracts"`
	Tags                    []any                               `json:"tags"`
	TaxExempt               bool                                `json:"taxExempt"`
	TaxExemptions           []any                               `json:"taxExemptions"`
	UnsubscribeURL          string                              `json:"unsubscribeUrl"`
	UpdatedAt               string                              `json:"updatedAt"`
	ValidEmailAddress       bool                                `json:"validEmailAddress"`
	VerifiedEmail           bool                                `json:"verifiedEmail"`
}

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

type CustomerMarketingOptInLevel string

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

type CustomerEmailMarketingState string

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

type Order struct {
	AdditionalFees                       []any                         `json:"additionalFees"`
	Agreements                           SalesAgreementConnection      `json:"agreements"`
	Alerts                               []any                         `json:"alerts"`
	App                                  *OrderApp                     `json:"app"`
	BillingAddress                       *MailingAddress               `json:"billingAddress,omitempty"`
	BillingAddressMatchesShippingAddress bool                          `json:"billingAddressMatchesShippingAddress"`
	CanMarkAsPaID                        bool                          `json:"canMarkAsPaid"`
	CanNotifyCustomer                    bool                          `json:"canNotifyCustomer"`
	CancelReason                         *OrderCancelReason            `json:"cancelReason,omitempty"`
	Cancellation                         *OrderCancellation            `json:"cancellation,omitempty"`
	CancelledAt                          *string                       `json:"cancelledAt,omitempty"`
	Capturable                           bool                          `json:"capturable"`
	CartDiscountAmountSet                *MoneyBag                     `json:"cartDiscountAmountSet,omitempty"`
	ChannelInformation                   *ChannelInformation           `json:"channelInformation"`
	ClientIp                             *string                       `json:"clientIp,omitempty"`
	Closed                               bool                          `json:"closed"`
	ClosedAt                             *string                       `json:"closedAt,omitempty"`
	ConfirmationNumber                   *string                       `json:"confirmationNumber,omitempty"`
	Confirmed                            bool                          `json:"confirmed"`
	CreatedAt                            string                        `json:"createdAt"`
	CurrencyCode                         CurrencyCode                  `json:"currencyCode"`
	CurrentCartDiscountAmountSet         MoneyBag                      `json:"currentCartDiscountAmountSet"`
	CurrentShippingPriceSet              MoneyBag                      `json:"currentShippingPriceSet"`
	CurrentSubtotalLineItemsQuantity     int                           `json:"currentSubtotalLineItemsQuantity"`
	CurrentSubtotalPriceSet              MoneyBag                      `json:"currentSubtotalPriceSet"`
	CurrentTaxLines                      []any                         `json:"currentTaxLines"`
	CurrentTotalAdditionalFeesSet        *MoneyBag                     `json:"currentTotalAdditionalFeesSet,omitempty"`
	CurrentTotalDiscountsSet             MoneyBag                      `json:"currentTotalDiscountsSet"`
	CurrentTotalDutiesSet                *MoneyBag                     `json:"currentTotalDutiesSet,omitempty"`
	CurrentTotalPriceSet                 MoneyBag                      `json:"currentTotalPriceSet"`
	CurrentTotalTaxSet                   MoneyBag                      `json:"currentTotalTaxSet"`
	CurrentTotalWeight                   string                        `json:"currentTotalWeight"`
	CustomAttributes                     []any                         `json:"customAttributes"`
	Customer                             *Customer                     `json:"customer"`
	CustomerAcceptsMarketing             bool                          `json:"customerAcceptsMarketing"`
	CustomerJourneySummary               *CustomerJourneySummary       `json:"customerJourneySummary"`
	CustomerLocale                       *string                       `json:"customerLocale,omitempty"`
	DiscountApplications                 DiscountApplicationConnection `json:"discountApplications"`
	DiscountCode                         *string                       `json:"discountCode,omitempty"`
	DiscountCodes                        []any                         `json:"discountCodes"`
	DisplayAddress                       *MailingAddress               `json:"displayAddress,omitempty"`
	DisplayFinancialStatus               *OrderDisplayFinancialStatus  `json:"displayFinancialStatus,omitempty"`
	DisplayFulfillmentStatus             OrderDisplayFulfillmentStatus `json:"displayFulfillmentStatus"`
	Disputes                             []any                         `json:"disputes"`
	DutiesIncluded                       bool                          `json:"dutiesIncluded"`
	Edited                               bool                          `json:"edited"`
	Email                                *string                       `json:"email,omitempty"`
	EstimatedTaxes                       bool                          `json:"estimatedTaxes"`
	Events                               EventConnection               `json:"events"`
	ExchangeV2s                          ExchangeV2Connection          `json:"exchangeV2s"`
	Fulfillable                          bool                          `json:"fulfillable"`
	FulfillmentOrders                    FulfillmentOrderConnection    `json:"fulfillmentOrders"`
	Fulfillments                         []any                         `json:"fulfillments"`
	FulfillmentsCount                    *Count                        `json:"fulfillmentsCount,omitempty"`
	FullyPaID                            bool                          `json:"fullyPaid"`
	HasTimelineComment                   bool                          `json:"hasTimelineComment"`
	ID                                   string                        `json:"id"`
	LegacyResourceID                     string                        `json:"legacyResourceId"`
	LineItems                            LineItemConnection            `json:"lineItems"`
	MerchantBusinessEntity               *BusinessEntity               `json:"merchantBusinessEntity"`
	MerchantEditable                     bool                          `json:"merchantEditable"`
	MerchantEditableErrors               []any                         `json:"merchantEditableErrors"`
	MerchantOfRecordApp                  *OrderApp                     `json:"merchantOfRecordApp"`
	Metafield                            *Metafield                    `json:"metafield"`
	Metafields                           MetafieldConnection           `json:"metafields"`
	Name                                 string                        `json:"name"`
	NetPaymentSet                        MoneyBag                      `json:"netPaymentSet"`
	NonFulfillableLineItems              LineItemConnection            `json:"nonFulfillableLineItems"`
	Note                                 *string                       `json:"note,omitempty"`
	OriginalTotalAdditionalFeesSet       *MoneyBag                     `json:"originalTotalAdditionalFeesSet,omitempty"`
	OriginalTotalDutiesSet               *MoneyBag                     `json:"originalTotalDutiesSet,omitempty"`
	OriginalTotalPriceSet                MoneyBag                      `json:"originalTotalPriceSet"`
	PaymentCollectionDetails             OrderPaymentCollectionDetails `json:"paymentCollectionDetails"`
	PaymentGatewayNames                  []any                         `json:"paymentGatewayNames"`
	PaymentTerms                         *PaymentTerms                 `json:"paymentTerms"`
	Phone                                *string                       `json:"phone,omitempty"`
	PoNumber                             *string                       `json:"poNumber,omitempty"`
	PresentmentCurrencyCode              CurrencyCode                  `json:"presentmentCurrencyCode"`
	ProcessedAt                          string                        `json:"processedAt"`
	Publication                          *Publication                  `json:"publication"`
	PurchasingEntity                     *any                          `json:"purchasingEntity,omitempty"`
	RefundDiscrepancySet                 MoneyBag                      `json:"refundDiscrepancySet"`
	Refundable                           bool                          `json:"refundable"`
	Refunds                              []any                         `json:"refunds"`
	RegisteredSourceURL                  *string                       `json:"registeredSourceUrl,omitempty"`
	RequiresShipping                     bool                          `json:"requiresShipping"`
	Restockable                          bool                          `json:"restockable"`
	RetailLocation                       *Location                     `json:"retailLocation"`
	ReturnStatus                         OrderReturnStatus             `json:"returnStatus"`
	Returns                              ReturnConnection              `json:"returns"`
	Risk                                 OrderRiskSummary              `json:"risk"`
	ShippingAddress                      *MailingAddress               `json:"shippingAddress,omitempty"`
	ShippingLine                         *ShippingLine                 `json:"shippingLine,omitempty"`
	ShippingLines                        ShippingLineConnection        `json:"shippingLines"`
	ShopifyProtect                       *ShopifyProtectOrderSummary   `json:"shopifyProtect"`
	SourceIdentifier                     *string                       `json:"sourceIdentifier,omitempty"`
	SourceName                           *string                       `json:"sourceName,omitempty"`
	StaffMember                          *StaffMember                  `json:"staffMember"`
	StatusPageURL                        string                        `json:"statusPageUrl"`
	SubtotalLineItemsQuantity            int                           `json:"subtotalLineItemsQuantity"`
	SubtotalPriceSet                     *MoneyBag                     `json:"subtotalPriceSet,omitempty"`
	SuggestedRefund                      *SuggestedRefund              `json:"suggestedRefund"`
	Tags                                 []any                         `json:"tags"`
	TaxExempt                            bool                          `json:"taxExempt"`
	TaxLines                             []any                         `json:"taxLines"`
	TaxesIncluded                        bool                          `json:"taxesIncluded"`
	Test                                 bool                          `json:"test"`
	TotalCapturableSet                   MoneyBag                      `json:"totalCapturableSet"`
	TotalCashRoundingAdjustment          CashRoundingAdjustment        `json:"totalCashRoundingAdjustment"`
	TotalDiscountsSet                    *MoneyBag                     `json:"totalDiscountsSet,omitempty"`
	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,omitempty"`
	TotalTipReceivedSet                  MoneyBag                      `json:"totalTipReceivedSet"`
	TotalWeight                          *string                       `json:"totalWeight,omitempty"`
	Transactions                         []any                         `json:"transactions"`
	TransactionsCount                    *Count                        `json:"transactionsCount,omitempty"`
	UnpaID                               bool                          `json:"unpaid"`
	UpdatedAt                            string                        `json:"updatedAt"`
}

type BusinessEntity struct {
	Address                BusinessEntityAddress   `json:"address"`
	CompanyName            *string                 `json:"companyName,omitempty"`
	DisplayName            string                  `json:"displayName"`
	ID                     string                  `json:"id"`
	Primary                bool                    `json:"primary"`
	ShopifyPaymentsAccount *ShopifyPaymentsAccount `json:"shopifyPaymentsAccount"`
}

type BusinessEntityAddress struct {
	Address1    *string     `json:"address1,omitempty"`
	Address2    *string     `json:"address2,omitempty"`
	City        *string     `json:"city,omitempty"`
	CountryCode CountryCode `json:"countryCode"`
	Province    *string     `json:"province,omitempty"`
	Zip         *string     `json:"zip,omitempty"`
}

type ShopifyPaymentsAccount struct {
	Activated                  bool                                        `json:"activated"`
	Balance                    []any                                       `json:"balance"`
	BalanceTransactions        ShopifyPaymentsBalanceTransactionConnection `json:"balanceTransactions"`
	BankAccounts               ShopifyPaymentsBankAccountConnection        `json:"bankAccounts"`
	ChargeStatementDescriptors *ShopifyPaymentsChargeStatementDescriptor   `json:"chargeStatementDescriptors,omitempty"`
	Country                    string                                      `json:"country"`
	DefaultCurrency            CurrencyCode                                `json:"defaultCurrency"`
	Disputes                   ShopifyPaymentsDisputeConnection            `json:"disputes"`
	ID                         string                                      `json:"id"`
	Onboardable                bool                                        `json:"onboardable"`
	PayoutSchedule             ShopifyPaymentsPayoutSchedule               `json:"payoutSchedule"`
	PayoutStatementDescriptor  *string                                     `json:"payoutStatementDescriptor,omitempty"`
	Payouts                    ShopifyPaymentsPayoutConnection             `json:"payouts"`
}

type ShopifyPaymentsPayoutSchedule struct {
	Interval      ShopifyPaymentsPayoutInterval `json:"interval"`
	MonthlyAnchor *int                          `json:"monthlyAnchor,omitempty"`
	WeeklyAnchor  *DayOfTheWeek                 `json:"weeklyAnchor,omitempty"`
}

type ShopifyPaymentsPayoutInterval string

const (
	ShopifyPaymentsPayoutIntervalDaily   ShopifyPaymentsPayoutInterval = "DAILY"
	ShopifyPaymentsPayoutIntervalWeekly  ShopifyPaymentsPayoutInterval = "WEEKLY"
	ShopifyPaymentsPayoutIntervalMonthly ShopifyPaymentsPayoutInterval = "MONTHLY"
	ShopifyPaymentsPayoutIntervalManual  ShopifyPaymentsPayoutInterval = "MANUAL"
)

type DayOfTheWeek string

const (
	DayOfTheWeekMonday    DayOfTheWeek = "MONDAY"
	DayOfTheWeekTuesday   DayOfTheWeek = "TUESDAY"
	DayOfTheWeekWednesday DayOfTheWeek = "WEDNESDAY"
	DayOfTheWeekThursday  DayOfTheWeek = "THURSDAY"
	DayOfTheWeekFriday    DayOfTheWeek = "FRIDAY"
	DayOfTheWeekSaturday  DayOfTheWeek = "SATURDAY"
	DayOfTheWeekSunday    DayOfTheWeek = "SUNDAY"
)

type ShopifyPaymentsBalanceTransactionConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type ShopifyPaymentsBankAccountConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type ShopifyPaymentsChargeStatementDescriptor interface {
	Default() string
	Prefix() string
}

type ShopifyPaymentsDisputeConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type ShopifyPaymentsPayoutConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

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

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

type MailingAddressValidationResult string

const (
	MailingAddressValidationResultNoIssues MailingAddressValidationResult = "NO_ISSUES"
	MailingAddressValidationResultError    MailingAddressValidationResult = "ERROR"
	MailingAddressValidationResultWarning  MailingAddressValidationResult = "WARNING"
)

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

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

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

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

type MarketingChannel string

const (
	MarketingChannelSearch   MarketingChannel = "SEARCH"
	MarketingChannelDisplay  MarketingChannel = "DISPLAY"
	MarketingChannelSocial   MarketingChannel = "SOCIAL"
	MarketingChannelEmail    MarketingChannel = "EMAIL"
	MarketingChannelReferral MarketingChannel = "REFERRAL"
)

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"
	MarketingTacticStorefrontApp MarketingTactic = "STOREFRONT_APP"
	MarketingTacticSeo           MarketingTactic = "SEO"
)

type App struct {
	ApiKey                 string            `json:"apiKey"`
	AppStoreAppURL         *string           `json:"appStoreAppUrl,omitempty"`
	AppStoreDeveloperURL   *string           `json:"appStoreDeveloperUrl,omitempty"`
	AvailableAccessScopes  []any             `json:"availableAccessScopes"`
	Banner                 *Image            `json:"banner"`
	Description            *string           `json:"description,omitempty"`
	DeveloperName          *string           `json:"developerName,omitempty"`
	DeveloperType          AppDeveloperType  `json:"developerType"`
	Embedded               bool              `json:"embedded"`
	FailedRequirements     []any             `json:"failedRequirements"`
	Features               []any             `json:"features"`
	Feedback               *AppFeedback      `json:"feedback"`
	Handle                 *string           `json:"handle,omitempty"`
	Icon                   *Image            `json:"icon"`
	ID                     string            `json:"id"`
	InstallURL             *string           `json:"installUrl,omitempty"`
	Installation           *AppInstallation  `json:"installation"`
	IsPostPurchaseAppInUse bool              `json:"isPostPurchaseAppInUse"`
	OptionalAccessScopes   []any             `json:"optionalAccessScopes"`
	PreviouslyInstalled    bool              `json:"previouslyInstalled"`
	PricingDetails         *string           `json:"pricingDetails,omitempty"`
	PricingDetailsSummary  string            `json:"pricingDetailsSummary"`
	PrivacyPolicyURL       *string           `json:"privacyPolicyUrl,omitempty"`
	PublicCategory         AppPublicCategory `json:"publicCategory"`
	Published              bool              `json:"published"`
	RequestedAccessScopes  []any             `json:"requestedAccessScopes"`
	Screenshots            []any             `json:"screenshots"`
	ShopifyDeveloped       bool              `json:"shopifyDeveloped"`
	Title                  string            `json:"title"`
	UninstallMessage       string            `json:"uninstallMessage"`
	WebhookApiVersion      string            `json:"webhookApiVersion"`
}

type AppDeveloperType string

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

type AppFeedback struct {
	App                 *App                  `json:"app"`
	FeedbackGeneratedAt string                `json:"feedbackGeneratedAt"`
	Link                *Link                 `json:"link,omitempty"`
	Messages            []any                 `json:"messages"`
	State               ResourceFeedbackState `json:"state"`
}

type ResourceFeedbackState string

const (
	ResourceFeedbackStateAccepted       ResourceFeedbackState = "ACCEPTED"
	ResourceFeedbackStateRequiresAction ResourceFeedbackState = "REQUIRES_ACTION"
)

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

type AppInstallation struct {
	AccessScopes              []any                                 `json:"accessScopes"`
	ActiveSubscriptions       []any                                 `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"`
	Publication               *Publication                          `json:"publication"`
	RevenueAttributionRecords AppRevenueAttributionRecordConnection `json:"revenueAttributionRecords"`
	UninstallURL              *string                               `json:"uninstallUrl,omitempty"`
}

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

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

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

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

type AppPublicCategory string

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

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

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

type OrderReturnStatus string

const (
	OrderReturnStatusInProgress         OrderReturnStatus = "IN_PROGRESS"
	OrderReturnStatusInspectionComplete OrderReturnStatus = "INSPECTION_COMPLETE"
	OrderReturnStatusNoReturn           OrderReturnStatus = "NO_RETURN"
	OrderReturnStatusReturned           OrderReturnStatus = "RETURNED"
	OrderReturnStatusReturnFailed       OrderReturnStatus = "RETURN_FAILED"
	OrderReturnStatusReturnRequested    OrderReturnStatus = "RETURN_REQUESTED"
)

type ShopifyProtectOrderSummary struct {
	Eligibility ShopifyProtectOrderEligibility `json:"eligibility"`
	Status      ShopifyProtectStatus           `json:"status"`
}

type ShopifyProtectOrderEligibility struct {
	Status ShopifyProtectEligibilityStatus `json:"status"`
}

type ShopifyProtectEligibilityStatus string

const (
	ShopifyProtectEligibilityStatusPending     ShopifyProtectEligibilityStatus = "PENDING"
	ShopifyProtectEligibilityStatusEligible    ShopifyProtectEligibilityStatus = "ELIGIBLE"
	ShopifyProtectEligibilityStatusNotEligible ShopifyProtectEligibilityStatus = "NOT_ELIGIBLE"
)

type ShopifyProtectStatus string

const (
	ShopifyProtectStatusPending      ShopifyProtectStatus = "PENDING"
	ShopifyProtectStatusActive       ShopifyProtectStatus = "ACTIVE"
	ShopifyProtectStatusInactive     ShopifyProtectStatus = "INACTIVE"
	ShopifyProtectStatusProtected    ShopifyProtectStatus = "PROTECTED"
	ShopifyProtectStatusNotProtected ShopifyProtectStatus = "NOT_PROTECTED"
)

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

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

type ChannelDefinition struct {
	ChannelName    string  `json:"channelName"`
	Handle         string  `json:"handle"`
	ID             string  `json:"id"`
	IsMarketplace  bool    `json:"isMarketplace"`
	SubChannelName string  `json:"subChannelName"`
	SvgIcon        *string `json:"svgIcon,omitempty"`
}

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

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

type AccountType string

const (
	AccountTypeRegular                AccountType = "REGULAR"
	AccountTypeRestricted             AccountType = "RESTRICTED"
	AccountTypeInvited                AccountType = "INVITED"
	AccountTypeRequested              AccountType = "REQUESTED"
	AccountTypeCollaborator           AccountType = "COLLABORATOR"
	AccountTypeCollaboratorTeamMember AccountType = "COLLABORATOR_TEAM_MEMBER"
	AccountTypeSaml                   AccountType = "SAML"
	AccountTypeInvitedStoreOwner      AccountType = "INVITED_STORE_OWNER"
)

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

type ShippingLine struct {
	CarrierIdentifier         *string  `json:"carrierIdentifier,omitempty"`
	Code                      *string  `json:"code,omitempty"`
	CurrentDiscountedPriceSet MoneyBag `json:"currentDiscountedPriceSet"`
	Custom                    bool     `json:"custom"`
	DeliveryCategory          *string  `json:"deliveryCategory,omitempty"`
	DiscountAllocations       []any    `json:"discountAllocations"`
	DiscountedPriceSet        MoneyBag `json:"discountedPriceSet"`
	ID                        *string  `json:"id,omitempty"`
	IsRemoved                 bool     `json:"isRemoved"`
	OriginalPriceSet          MoneyBag `json:"originalPriceSet"`
	Phone                     *string  `json:"phone,omitempty"`
	ShippingRateHandle        *string  `json:"shippingRateHandle,omitempty"`
	Source                    *string  `json:"source,omitempty"`
	TaxLines                  []any    `json:"taxLines"`
	Title                     string   `json:"title"`
}

type OrderCancelReason string

const (
	OrderCancelReasonCustomer  OrderCancelReason = "CUSTOMER"
	OrderCancelReasonDeclined  OrderCancelReason = "DECLINED"
	OrderCancelReasonFraud     OrderCancelReason = "FRAUD"
	OrderCancelReasonInventory OrderCancelReason = "INVENTORY"
	OrderCancelReasonStaff     OrderCancelReason = "STAFF"
	OrderCancelReasonOther     OrderCancelReason = "OTHER"
)

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

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"
)

type ExchangeV2Connection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type PurchasingEntity struct {
}

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"
	OrderDisplayFulfillmentStatusRequestDeclined    OrderDisplayFulfillmentStatus = "REQUEST_DECLINED"
)

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

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

type PaymentTermsType string

const (
	PaymentTermsTypeReceipt     PaymentTermsType = "RECEIPT"
	PaymentTermsTypeNet         PaymentTermsType = "NET"
	PaymentTermsTypeFixed       PaymentTermsType = "FIXED"
	PaymentTermsTypeFulfillment PaymentTermsType = "FULFILLMENT"
	PaymentTermsTypeUnknown     PaymentTermsType = "UNKNOWN"
)

type DraftOrder struct {
	AcceptAutomaticDiscounts             *bool                        `json:"acceptAutomaticDiscounts,omitempty"`
	AllowDiscountCodesInCheckout         bool                         `json:"allowDiscountCodesInCheckout"`
	AppliedDiscount                      *DraftOrderAppliedDiscount   `json:"appliedDiscount"`
	BillingAddress                       *MailingAddress              `json:"billingAddress,omitempty"`
	BillingAddressMatchesShippingAddress bool                         `json:"billingAddressMatchesShippingAddress"`
	CompletedAt                          *string                      `json:"completedAt,omitempty"`
	CreatedAt                            string                       `json:"createdAt"`
	CurrencyCode                         CurrencyCode                 `json:"currencyCode"`
	CustomAttributes                     []any                        `json:"customAttributes"`
	Customer                             *Customer                    `json:"customer"`
	DefaultCursor                        string                       `json:"defaultCursor"`
	DiscountCodes                        []any                        `json:"discountCodes"`
	Email                                *string                      `json:"email,omitempty"`
	Events                               EventConnection              `json:"events"`
	HasTimelineComment                   bool                         `json:"hasTimelineComment"`
	ID                                   string                       `json:"id"`
	InvoiceEmailTemplateSubject          string                       `json:"invoiceEmailTemplateSubject"`
	InvoiceSentAt                        *string                      `json:"invoiceSentAt,omitempty"`
	InvoiceURL                           *string                      `json:"invoiceUrl,omitempty"`
	LegacyResourceID                     string                       `json:"legacyResourceId"`
	LineItems                            DraftOrderLineItemConnection `json:"lineItems"`
	LineItemsSubtotalPrice               MoneyBag                     `json:"lineItemsSubtotalPrice"`
	Metafield                            *Metafield                   `json:"metafield"`
	Metafields                           MetafieldConnection          `json:"metafields"`
	Name                                 string                       `json:"name"`
	Note2                                *string                      `json:"note2,omitempty"`
	Order                                *Order                       `json:"order"`
	PaymentTerms                         *PaymentTerms                `json:"paymentTerms"`
	Phone                                *string                      `json:"phone,omitempty"`
	PlatformDiscounts                    []any                        `json:"platformDiscounts"`
	PoNumber                             *string                      `json:"poNumber,omitempty"`
	PresentmentCurrencyCode              CurrencyCode                 `json:"presentmentCurrencyCode"`
	PurchasingEntity                     *any                         `json:"purchasingEntity,omitempty"`
	Ready                                bool                         `json:"ready"`
	ReserveInventoryUntil                *string                      `json:"reserveInventoryUntil,omitempty"`
	ShippingAddress                      *MailingAddress              `json:"shippingAddress,omitempty"`
	ShippingLine                         *ShippingLine                `json:"shippingLine,omitempty"`
	Status                               DraftOrderStatus             `json:"status"`
	SubtotalPriceSet                     MoneyBag                     `json:"subtotalPriceSet"`
	Tags                                 []any                        `json:"tags"`
	TaxExempt                            bool                         `json:"taxExempt"`
	TaxLines                             []any                        `json:"taxLines"`
	TaxesIncluded                        bool                         `json:"taxesIncluded"`
	TotalDiscountsSet                    MoneyBag                     `json:"totalDiscountsSet"`
	TotalLineItemsPriceSet               MoneyBag                     `json:"totalLineItemsPriceSet"`
	TotalPriceSet                        MoneyBag                     `json:"totalPriceSet"`
	TotalQuantityOfLineItems             int                          `json:"totalQuantityOfLineItems"`
	TotalShippingPriceSet                MoneyBag                     `json:"totalShippingPriceSet"`
	TotalTaxSet                          MoneyBag                     `json:"totalTaxSet"`
	TotalWeight                          string                       `json:"totalWeight"`
	TransformerFingerprint               *string                      `json:"transformerFingerprint,omitempty"`
	UpdatedAt                            string                       `json:"updatedAt"`
	VisibleToCustomer                    bool                         `json:"visibleToCustomer"`
	Warnings                             []any                        `json:"warnings"`
}

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

type DraftOrderAppliedDiscountType string

const (
	DraftOrderAppliedDiscountTypeFixedAmount DraftOrderAppliedDiscountType = "FIXED_AMOUNT"
	DraftOrderAppliedDiscountTypePercentage  DraftOrderAppliedDiscountType = "PERCENTAGE"
)

type DraftOrderStatus string

const (
	DraftOrderStatusCompleted   DraftOrderStatus = "COMPLETED"
	DraftOrderStatusInvoiceSent DraftOrderStatus = "INVOICE_SENT"
	DraftOrderStatusOpen        DraftOrderStatus = "OPEN"
)

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

type ReturnConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type OrderRiskSummary struct {
	Assessments    []any                         `json:"assessments"`
	Recommendation OrderRiskRecommendationResult `json:"recommendation"`
}

type OrderRiskRecommendationResult string

const (
	OrderRiskRecommendationResultCancel      OrderRiskRecommendationResult = "CANCEL"
	OrderRiskRecommendationResultInvestigate OrderRiskRecommendationResult = "INVESTIGATE"
	OrderRiskRecommendationResultAccept      OrderRiskRecommendationResult = "ACCEPT"
	OrderRiskRecommendationResultNone        OrderRiskRecommendationResult = "NONE"
)

type OrderCancellation struct {
	StaffNote *string `json:"staffNote,omitempty"`
}

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

type CashRoundingAdjustment struct {
	PaymentSet MoneyBag `json:"paymentSet"`
	RefundSet  MoneyBag `json:"refundSet"`
}

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

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

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

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

type CustomerMergeable struct {
	ErrorFields     []any                 `json:"errorFields"`
	IsMergeable     bool                  `json:"isMergeable"`
	MergeInProgress *CustomerMergeRequest `json:"mergeInProgress,omitempty"`
	Reason          *string               `json:"reason,omitempty"`
}

type CustomerMergeRequest struct {
	CustomerMergeErrors []any                      `json:"customerMergeErrors"`
	JobID               *string                    `json:"jobId,omitempty"`
	ResultingCustomerID string                     `json:"resultingCustomerId"`
	Status              CustomerMergeRequestStatus `json:"status"`
}

type CustomerMergeRequestStatus string

const (
	CustomerMergeRequestStatusRequested  CustomerMergeRequestStatus = "REQUESTED"
	CustomerMergeRequestStatusInProgress CustomerMergeRequestStatus = "IN_PROGRESS"
	CustomerMergeRequestStatusCompleted  CustomerMergeRequestStatus = "COMPLETED"
	CustomerMergeRequestStatusFailed     CustomerMergeRequestStatus = "FAILED"
)

type CustomerState string

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

type Market struct {
	Catalogs         MarketCatalogConnection     `json:"catalogs"`
	CatalogsCount    *Count                      `json:"catalogsCount,omitempty"`
	CurrencySettings MarketCurrencySettings      `json:"currencySettings"`
	Handle           string                      `json:"handle"`
	ID               string                      `json:"id"`
	Metafield        *Metafield                  `json:"metafield"`
	Metafields       MetafieldConnection         `json:"metafields"`
	Name             string                      `json:"name"`
	WebPresences     MarketWebPresenceConnection `json:"webPresences"`
}

type MarketWebPresenceConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type MarketCatalogConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

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

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

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

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

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

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

type CustomerConsentCollectedFrom string

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

type CustomerSmsMarketingState string

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

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

type CustomerPredictedSpendTier string

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

type MailingAddressConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}

type CustomerProductSubscriberStatus string

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

type StoreCreditAccountConnection struct {
	Edges    []any    `json:"edges"`
	Nodes    []any    `json:"nodes"`
	PageInfo PageInfo `json:"pageInfo"`
}
