Skip to main content

Overview

EverShop’s GraphQL schema includes a comprehensive set of types organized by domain. This reference covers all the types, their fields, and relationships.

Catalog Types

Product

Represents a product in the catalog.
type Product {
  productId: Int!
  uuid: String!
  name: String!
  status: Int!
  sku: String!
  weight: Weight!
  noShippingRequired: Boolean
  taxClass: Int
  description: JSON
  urlKey: String
  metaTitle: String
  metaDescription: String
  metaKeywords: String
  variantGroupId: ID
  visibility: Int
  groupId: ID
  url: String
  
  # Extended fields
  price: ProductPrice!
  image: Image
  gallery: [Image]
  inventory: Inventory!
  category: Category
  collections: [Collection]
  variantGroup: VariantGroup
  
  # Admin only
  editUrl: String
  updateApi: String!
  deleteApi: String!
  removeFromCategoryUrl: String
}
Key Fields:
  • productId - Internal product ID
  • uuid - Universal unique identifier
  • sku - Stock keeping unit (unique)
  • status - 0 = disabled, 1 = enabled
  • weight - Product weight with unit
  • price - Regular and special pricing
  • inventory - Stock availability

ProductPrice

Product pricing information.
type ProductPrice {
  regular: Price!
  special: Price!
}

Image

Product image.
type Image {
  id: ID!
  uuid: String!
  alt: String
  url: String
  listing: String @deprecated
  single: String @deprecated
  thumb: String @deprecated
  origin: String @deprecated
}

Inventory

Product inventory information.
type Inventory {
  isInStock: Boolean!
  stockAvailability: Int!
  manageStock: Int!
}
Values:
  • isInStock - Boolean availability
  • stockAvailability - Quantity available
  • manageStock - 0 = don’t track, 1 = track inventory

ProductCollection

Paginated collection of products.
type ProductCollection {
  items: [Product]
  currentPage: Int!
  total: Int!
  currentFilters: [Filter]
}

Category

Product category.
type Category {
  categoryId: Int!
  uuid: String!
  name: String!
  status: Int!
  includeInNav: Int!
  showProducts: Int!
  description: JSON
  urlKey: String
  metaTitle: String
  metaDescription: String
  metaKeywords: String
  url: String
  hasChildren: Boolean!
  
  image: CategoryImage
  products(filters: [FilterInput]): ProductCollection
  children: [Category]
  parent: Category
  path: [Category]
  availableAttributes: [FilterAttribute]
  priceRange: PriceRange
  
  # Admin only
  editUrl: String
  updateApi: String!
  deleteApi: String!
  addProductUrl: String
}

CategoryImage

type CategoryImage {
  alt: String!
  url: String!
}

Collection

Product collection.
type Collection {
  collectionId: Int!
  uuid: String!
  name: String!
  description: JSON
  code: String!
  products(filters: [FilterInput]): ProductCollection
}

Attribute

Product attribute definition.
type Attribute {
  attributeId: ID!
  uuid: String!
  attributeCode: String!
  attributeName: String!
  type: String!
  isRequired: Int!
  displayOnFrontend: Int!
  sortOrder: Int!
  isFilterable: Int!
  options: [AttributeOption]
}
Attribute Types:
  • text - Text input
  • textarea - Multi-line text
  • select - Single select dropdown
  • multiselect - Multiple select

AttributeOption

type AttributeOption {
  attributeOptionId: ID!
  uuid: String!
  optionText: String!
}

VariantGroup

Product variants group.
type VariantGroup {
  variantGroupId: Int!
  variantAttributes: [VariantAttribute]!
  items: [Variant]
  addItemApi: String!
}

Variant

Single product variant.
type Variant {
  id: String!
  product: Product!
  attributes: [VariantAttributeIndex]!
  removeUrl: String!
}

VariantAttribute

type VariantAttribute {
  attributeId: Int!
  attributeCode: String!
  attributeName: String!
  options: [VariantAttributeOption]
}

Checkout Types

Cart

Shopping cart implementing ShoppingCart interface.
type Cart implements ShoppingCart {
  cartId: ID!
  uuid: String!
  status: Int!
  currency: String!
  customerId: Int
  customerGroupId: Int
  customerEmail: String
  customerFullName: String
  userIp: String
  userId: String
  coupon: String
  noShippingRequired: Boolean!
  
  items: [CartItem]
  shippingAddress: CartAddress
  billingAddress: CartAddress
  
  # Pricing
  subTotal: Price!
  subTotalInclTax: Price!
  subTotalWithDiscount: Price!
  subTotalWithDiscountInclTax: Price!
  shippingFeeExclTax: Price!
  shippingFeeInclTax: Price!
  shippingTaxAmount: Price!
  taxAmount: Price!
  taxAmountBeforeDiscount: Price!
  totalTaxAmount: Price!
  discountAmount: Price!
  grandTotal: Price!
  
  totalQty: Int!
  totalWeight: Weight!
  
  shippingMethod: String
  shippingMethodName: String
  paymentMethod: String
  paymentMethodName: String
  shippingNote: String
  
  # API endpoints
  addItemApi: String!
  addPaymentMethodApi: String!
  addShippingMethodApi: String!
  addContactInfoApi: String!
  addAddressApi: String!
  addNoteApi: String!
  checkoutApi: String!
  
  # Available methods
  availableShippingMethods(
    country: String
    province: String
    postcode: String
  ): [AvailableShippingMethod]
  availablePaymentMethods: [AvailablePaymentMethod]
  
  createdAt: Date!
  updatedAt: Date!
}

CartItem

Item in shopping cart.
type CartItem implements ShoppingCartItem {
  cartItemId: ID
  uuid: String!
  cartId: ID!
  productId: ID!
  productSku: String!
  productName: String
  thumbnail: String
  qty: Int!
  noShippingRequired: Boolean!
  
  productWeight: Weight!
  productPrice: Price!
  productPriceInclTax: Price!
  finalPrice: Price!
  finalPriceInclTax: Price!
  
  taxPercent: Float!
  taxAmount: Price!
  taxAmountBeforeDiscount: Price!
  discountAmount: Price!
  
  lineTotal: Price!
  lineTotalWithDiscount: Price!
  lineTotalWithDiscountInclTax: Price!
  lineTotalInclTax: Price!
  
  subTotal: Price! @deprecated
  total: Price! @deprecated
  
  variantGroupId: Int
  variantOptions: [VariantOption]
  productCustomOptions: String
  productUrl: String
  errors: [String!]
  
  removeApi: String!
  updateQtyApi: String!
}

CartAddress

Address in cart.
type CartAddress implements Address {
  cartAddressId: Int!
  uuid: String!
  fullName: String
  postcode: String
  telephone: String
  country: Country
  province: Province
  city: String
  address1: String
  address2: String
}

AvailableShippingMethod

type AvailableShippingMethod {
  id: String!
  code: String!
  name: String!
  cost: Price!
}

AvailablePaymentMethod

type AvailablePaymentMethod {
  code: String!
  name: String!
}

Price

Monetary value.
type Price {
  value: Float!
  currency(currency: String): String!
  text(currency: String): String!
}
Example:
{
  "value": 29.99,
  "currency": "USD",
  "text": "$29.99"
}

Weight

Weight measurement.
type Weight {
  value: Float!
  unit: String!
  text: String!
}
Example:
{
  "value": 1.5,
  "unit": "kg",
  "text": "1.5 kg"
}

Customer Types

Customer

Customer account.
type Customer {
  customerId: Int!
  uuid: String!
  status: Int!
  email: String!
  fullName: String!
  createdAt: Date!
  
  addresses: [CustomerAddress]
  orders: [Order]
  
  addAddressApi: String!
  
  # Admin only
  editUrl: String!
  updateApi: String!
  deleteApi: String!
}

CustomerAddress

type CustomerAddress implements Address {
  cartAddressId: Int!
  uuid: String!
  fullName: String
  postcode: String
  telephone: String
  country: Country
  province: Province
  city: String
  address1: String
  address2: String
  isDefault: Boolean
  updateApi: String!
  deleteApi: String!
}

CustomerCollection

type CustomerCollection {
  items: [Customer]
  currentPage: Int!
  total: Int!
  currentFilters: [Filter]
}

Order Types

Order

Order implementing ShoppingCart interface.
type Order implements ShoppingCart {
  orderId: ID!
  uuid: String!
  orderNumber: String!
  status: Status
  paymentStatus: PaymentStatus
  shipmentStatus: ShipmentStatus
  
  # Inherits all ShoppingCart fields
  currency: String!
  items: [OrderItem]
  shippingAddress: OrderAddress
  billingAddress: OrderAddress
  
  # Pricing (same as Cart)
  subTotal: Price!
  grandTotal: Price!
  # ... all pricing fields
  
  activities: [Activity]
  shipment: Shipment
  
  createdAt: Date!
  updatedAt: Date!
  
  # Admin only
  customerUrl: String
  editUrl: String!
  createShipmentApi: String!
  cancelApi: String!
}

OrderItem

type OrderItem implements ShoppingCartItem {
  orderItemId: ID!
  uuid: String!
  orderId: ID!
  productId: ID!
  productSku: String!
  productName: String
  qty: Int!
  
  # All pricing fields from ShoppingCartItem
  productPrice: Price!
  finalPrice: Price!
  lineTotal: Price!
  # ... etc
  
  variantOptions: [VariantOption]
}

OrderAddress

type OrderAddress implements Address {
  orderAddressId: Int!
  uuid: String!
  fullName: String
  postcode: String
  telephone: String
  country: Country
  province: Province
  city: String
  address1: String
  address2: String
}

Status

Order status.
type Status {
  name: String
  code: String
  badge: String
}

PaymentStatus

type PaymentStatus {
  name: String
  code: String
  badge: String
  isDefault: Boolean
  isCancelable: Boolean
}

ShipmentStatus

type ShipmentStatus {
  name: String
  code: String
  badge: String
  isDefault: Boolean
  isCancelable: Boolean
}

Shipment

type Shipment {
  shipmentId: Int!
  uuid: String!
  carrier: String
  trackingNumber: String
  createdAt: DateTime!
  updatedAt: DateTime
  
  # Admin only
  updateShipmentApi: String!
}

Activity

Order activity log.
type Activity {
  orderActivityId: Int!
  comment: String
  customerNotified: Int!
  createdAt: DateTime
  updatedAt: DateTime
}

OrderCollection

type OrderCollection {
  items: [Order]
  currentPage: Int!
  total: Int!
  currentFilters: [Filter]
}

CMS Types

CmsPage

type CmsPage {
  cmsPageId: Int
  uuid: String!
  status: Int!
  urlKey: String!
  name: String!
  content: JSON!
  metaTitle: String
  metaKeywords: String
  metaDescription: String
  url: String!
  editUrl: String!
  updateApi: String!
  deleteApi: String!
}

CmsPageCollection

type CmsPageCollection {
  items: [CmsPage]
  currentPage: Int!
  total: Int!
  currentFilters: [Filter]
}
type Menu {
  items: [MenuItem]
}
type MenuItem {
  name: String!
  url: String!
  children: [MenuItem]
}

Base Types

Country

type Country {
  name: String!
  code: String!
  provinces: [Province]
}

Province

State or province.
type Province {
  name: String!
  code: String!
  countryCode: String!
}

Date

Date scalar.
scalar Date
Represents a date in ISO 8601 format (YYYY-MM-DD).

DateTime

DateTime scalar.
scalar DateTime
Represents a timestamp in ISO 8601 format.

JSON

JSON scalar.
scalar JSON
Represents arbitrary JSON data.

Interface Types

ShoppingCart

Shared interface for Cart and Order.
interface ShoppingCart {
  uuid: String!
  currency: String!
  customerId: Int
  customerGroupId: Int
  customerEmail: String
  customerFullName: String
  noShippingRequired: Boolean!
  
  shippingFeeExclTax: Price!
  shippingFeeInclTax: Price!
  shippingTaxAmount: Price!
  discountAmount: Price!
  subTotal: Price!
  subTotalInclTax: Price!
  grandTotal: Price!
  
  totalQty: Int!
  totalWeight: Weight!
  
  shippingMethod: String
  shippingMethodName: String
  shippingAddress: Address
  paymentMethod: String
  paymentMethodName: String
  billingAddress: Address
  shippingNote: String
  
  createdAt: Date!
  updatedAt: Date!
}

ShoppingCartItem

Shared interface for CartItem and OrderItem.
interface ShoppingCartItem {
  uuid: String!
  productId: ID!
  productSku: String!
  productName: String
  thumbnail: String
  noShippingRequired: Boolean!
  productWeight: Weight!
  qty: Int!
  
  productPrice: Price!
  productPriceInclTax: Price!
  finalPrice: Price!
  finalPriceInclTax: Price!
  
  taxPercent: Float!
  taxAmount: Price!
  discountAmount: Price!
  
  lineTotal: Price!
  lineTotalWithDiscount: Price!
  lineTotalInclTax: Price!
  
  variantGroupId: Int
  variantOptions: [VariantOption]
  productUrl: String
}

Address

Shared address interface.
interface Address {
  fullName: String
  postcode: String
  telephone: String
  country: Country
  province: Province
  city: String
  address1: String
  address2: String
}

Input Types

FilterInput

Input for filtering collections.
input FilterInput {
  key: String!
  operation: FilterOperation!
  value: ID
}

FilterOperation

Filter operations enum.
enum FilterOperation {
  eq      # Equal
  neq     # Not equal
  gt      # Greater than
  gteq    # Greater than or equal
  lt      # Less than
  lteq    # Less than or equal
  like    # Pattern match
  nlike   # Not like
  in      # In array
  nin     # Not in array
}

Filter

Applied filter.
type Filter {
  key: String!
  operation: String!
  value: String!
}

Common Patterns

Pagination

All collection types follow this pattern:
type EntityCollection {
  items: [Entity]
  currentPage: Int!
  total: Int!
  currentFilters: [Filter]
}

API URLs

Many types include API endpoint URLs:
type Entity {
  # ... fields
  updateApi: String!
  deleteApi: String!
}

Variant Options

Variant selections:
type VariantOption {
  attributeCode: String!
  attributeName: String!
  attributeId: Int!
  optionId: Int!
  optionText: String!
}

Next Steps

Schema

Learn how the GraphQL schema is built

Queries

Explore available GraphQL queries

Build docs developers (and LLMs) love