type Connection = { edges: Array> } type Edge = { node: T } interface Address { firstName: string lastName: string address1: string address2?: string city: string countryCode: string stateOrProvince: string phone: string postalCode: string } interface BigCommerceAddress { address1: string address2: string address_type: string city: string company: string country: string country_code: string customer_id: number first_name: string id: number last_name: string phone: string postal_code: string state_or_province: string form_fields: [] } interface RegisterCustomerInput { firstName?: string lastName?: string email: string password: string phone?: string address?: Address } interface BigCommerceRegisterCustomerOperation { customer: { registerCustomer: { input: RegisterCustomerInput } } } interface BigCommerceCartOperation { data: { site: { cart: BigCommerceCart } } variables: { entityId: string } } interface BigCommerceCreateCartOperation { data: { cart: { createCart: { cart: BigCommerceCart } } } variables: { createCartInput: { lineItems: CartItem[] } } } interface BigCommerceAddToCartOperation { data: { cart: { addCartLineItems: { cart: BigCommerceCart } } } variables: { addCartLineItemsInput: { cartEntityId: string data: { lineItems: CartItem[] } } } } interface BigCommerceDeleteCartItemOperation { data: { cart: { deleteCartLineItem: { cart: BigCommerceCart } } } variables: { deleteCartLineItemInput: { cartEntityId: string lineItemEntityId: string } } } interface BigCommerceUpdateCartItemOperation { data: { cart: { updateCartLineItem: { cart: BigCommerceCart } } } variables: { updateCartLineItemInput: { cartEntityId: string lineItemEntityId: string data: { lineItem: CartItem } } } } interface BigCommerceCheckoutOperation { data: { site: { checkout: BigCommerceCheckout } } variables: { entityId: string } } interface BigCommerceProductOperation { data: { site: { product: BigCommerceProduct } } variables: { productId: number } } interface BigCommerceProductByHandleOperation { data: { site: { route: { node: BigCommerceProduct } } } variables: { path: string } } interface BigCommerceProductsOperation { data: { site: { products: Connection } } variables: { entityIds: number[] | [] } } interface BigCommerceEntityIdOperation { data: { site: { route: { node: { __typename: | "Product" | "Category" | "Brand" | "NormalPage" | "ContactPage" | "RawHtmlPage" | "BlogIndexPage" entityId: number } } } } variables: { path: string } } interface WishlistProduct { addToWishlistUrl: string } interface WishlistItem { product: WishlistProduct } interface Wishlist { items: { edges: { node: WishlistItem }[] } } interface Customer { addressCount: number phone: string email: string entityId: number firstName: string lastName: string wishlists: { edges: { node: Wishlist }[] } } interface BigCommerceWishlistQueryOperation { data: { customer: { wishlists: { edges: { node: Wishlist }[] } } } variables: { customerEntityId: number } } interface BigCommerceCustomerQueryOperation { data: { customer: Customer } variables: { customerEntityId: number } } interface BigCommerceRecommendationsOperation { data: { site: { product: { relatedProducts: Connection } } } variables: { productId: number | string } } interface BigCommerceSearchProductsOperation { data: { site: { search: { searchProducts: { products: Connection } } } } variables: { filters: { searchTerm: string } sort: string | null } } interface BigCommerceMenuOperation { data: { site: { categoryTree: BigCommerceCategoryTreeItem[] } } } interface BigCommerceCategoryOperation { data: { site: { categoryTree: BigCommerceCategory[] } } variables: { entityId: number } } interface BigCommerceProductsCategoryOperation { data: { site: { category: { products: Connection } } } variables: { entityId: number hideOutOfStock: boolean sortBy: string first: number } } interface BigCommerceNewestProductsOperation { data: { site: { newestProducts: Connection } } variables: { first: number } } interface BigCommerceFeaturedProductsOperation { data: { site: { featuredProducts: Connection } } variables: { first?: number } } interface BigCommercePopularProductsOperation { data: { site: { bestSellingProducts: Connection } } variables: { first: number } } interface Category { name: string path: string entityId: number description: string children: Category[] } interface BigCommerceCategoryOperation { data: { site: { categoryTree: Category[] } } } interface BigCommercePageOperation { data: { site: { content: { page: BigCommercePage } } } variables: { entityId: number } } interface BigCommercePagesOperation { data: { site: { content: { pages: Connection } } } } interface BigCommerceCheckout { subtotal: BigCommerceMoney grandTotal: BigCommerceMoney taxTotal: BigCommerceMoney } interface BigCommerceSEO { pageTitle: string metaDescription: string metaKeywords: string } interface BigCommerceCategory { entityId: number name: string path: string description: string seo: BigCommerceSEO children: BigCommerceCategory[] } interface BigCommerceCart { entityId: string currencyCode: string isTaxIncluded: boolean baseAmount: BigCommerceMoney discountedAmount: BigCommerceMoney amount: BigCommerceMoney discounts: CartDiscount[] lineItems: CartLineItems createdAt: { utc: Date } updatedAt: { utc: Date } locale: string } interface CartLineItems { physicalItems: PhysicalItem[] digitalItems: PhysicalItem[] customItems: CartCustomItem[] giftCertificates: CartGiftCertificate[] totalQuantity: number } interface CartItem { quantity: number productEntityId: number variantEntityId?: number } interface BigCommerceCategoryTreeItem { name: string path: string hasChildren: boolean entityId: number children?: BigCommerceCategoryTreeItem[] } interface BigCommercePage { __typename: "NormalPage" | "ContactPage" | "RawHtmlPage" | "BlogIndexPage" entityId: number name: string isVisibleInNavigation: boolean seo: BigCommerceSEO path: string plainTextSummary?: string htmlBody?: string } interface BigCommerceMoney { value: number currencyCode: string } interface CartDiscount { entityId: string discountedAmount: BigCommerceMoney } interface CartGiftCertificatePersonDetails { name: string email: string } interface PhysicalItem { entityId: number parentEntityId: number | null productEntityId: number variantEntityId: number | null sku: string name: string url: string imageUrl: string | null brand: string | null quantity: number isTaxable: boolean listPrice: BigCommerceMoney extendedListPrice: BigCommerceMoney selectedOptions: { entityId: number name: string value?: string date?: { utc: Date } text?: string number?: string fileName?: ScrollSetting }[] isShippingRequired: boolean } interface CartCustomItem { entityId: string productEntityId: undefined sku: string name: string quantity: number listPrice: BigCommerceMoney extendedListPrice: BigCommerceMoney } interface CartGiftCertificate { entityId: number productEntityId: undefined name: string amount: BigCommerceMoney isTaxable: boolean message: string sender: CartGiftCertificatePersonDetails recipient: CartGiftCertificatePersonDetails } interface BigCommerceProductVariant { id: number entityId: number sku: string upc: string | null isPurchasable: boolean defaultImage: { url: string altText: string } prices: { price: BigCommerceMoney priceRange: { min: BigCommerceMoney max: BigCommerceMoney } } options: { edges: Array<{ node: { entityId: number displayName: string values: { edges: Array<{ node: { entityId: number label: string } }> } } }> } } interface BigCommerceProductOption { __typename: string entityId: number displayName: string isRequired: boolean displayStyle: string values: { edges: Array<{ node: { entityId: number label: string isDefault: boolean hexColors: string[] imageUrl: string | null isSelected: boolean } }> } } interface BigCommerceProduct { id: number entityId: number sku: string categories: { edges: { node: { name: string description: string path: string entityId: number } }[] } upc: string | null name: string brand: { name: string } | null plainTextDescription: string description: string availabilityV2: { status: "Available" | "Unavailable" | "Preorder" description: string } defaultImage: { url: string altText: string } images: { edges: Array<{ node: { url: string altText: string } }> } reviews: { edges: Array<{ node: { rating: number } }> } seo: BigCommerceSEO path: string prices: { price: BigCommerceMoney salePrice: BigCommerceMoney | null retailPrice: BigCommerceMoney | null priceRange: { min: BigCommerceMoney max: BigCommerceMoney } } createdAt: { utc: Date } variants: Connection productOptions: Connection } interface BigCommerceCustomer { id: number company: string first_name: string last_name: string email: string phone: string store_credit: string registration_ip_address: string customer_group_id: number notes: string tax_exempt_category: string authentication?: { force_password_reset: boolean new_password: string } form_fields: ( | { name: "birthday" value: Date | string customer_id?: number } | { name: "gender" value: "male" | "female" customer_id?: number } | { name: "username" value: string customer_id?: number } )[] addresses: { url: string resource: string } } type BigCommerceError = { __typename: "EmailAlreadyInUseError" message: string } interface BigCommerceRegisterCustomerOperation { data: { customer: { registerCustomer: { customer: BigCommerceCustomer errors?: BigCommerceError[] } } } variables: { registerCustomerInput: RegisterCustomerInput } } interface AddWishlistItemsInput { entityId: number items: { productEntityId: number }[] } interface CreateWishlistInput { name: string isPublic: boolean } interface DeleteWishlistItemsInput { entityId: number itemEntityIds: number[] } interface DeleteWishlistsInput { entityIds: number[] } interface UpdateWishlistInput { entityId: number data: { name: string } } interface BigCommerceWishlist { entityId: number name: string items: { edges: { node: { product: BigCommerceProduct } }[] } } interface BigCommerceAddWishlistItemsOperation { data: { wishlist: { addWishlistItems: { result: BigCommerceWishlist } } } variables: { addWishlistItemsInput: AddWishlistItemsInput } } interface BigCommerceCreateWishlistOperation { data: { wishlist: { createWishlist: { result: { entityId: number name: string } } } } variables: { createWishlistInput: CreateWishlistInput } } interface BigCommerceDeleteWishlistItemsOperation { data: { wishlist: { deleteWishlistItems: { result: BigCommerceWishlist } } } variables: { deleteWishlistItemsInput: DeleteWishlistItemsInput } } interface BigCommerceDeleteWishlistsOperation { data: { wishlist: { deleteWishlists: { result: boolean } } } variables: { deleteWishlistsInput: DeleteWishlistsInput } } interface BigCommerceUpdateWishlistOperation { data: { wishlist: { updateWishlist: { result: BigCommerceWishlist } } } variables: { updateWishlistInput: UpdateWishlistInput } }