schema.graphql•955 kB
# Saleor GraphQL Schema, v3.21
# https://github.com/saleor/saleor/blob/3.21/saleor/graphql/schema.graphql
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
"""
Groups fields and operations into named groups.
"""
directive @doc(
"""
Name of the grouping category
"""
category: String!
) on ENUM | FIELD | FIELD_DEFINITION | INPUT_OBJECT | OBJECT
"""
Webhook events triggered by a specific location.
"""
directive @webhookEventsInfo(
"""
List of asynchronous webhook events triggered by a specific location.
"""
asyncEvents: [WebhookEventTypeAsyncEnum!]!
"""
List of synchronous webhook events triggered by a specific location.
"""
syncEvents: [WebhookEventTypeSyncEnum!]!
) on FIELD | FIELD_DEFINITION | INPUT_OBJECT | OBJECT
type Query {
"""
Look up a webhook by ID. Requires one of the following permissions: MANAGE_APPS, OWNER.
"""
webhook(
"""
ID of the webhook.
"""
id: ID!
): Webhook @doc(category: "Webhooks")
"""
List of all available webhook events.
Requires one of the following permissions: MANAGE_APPS.
"""
webhookEvents: [WebhookEvent!]
@doc(category: "Webhooks")
@deprecated(
reason: "Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types."
)
"""
Retrieve a sample payload for a given webhook event based on real data. It can be useful for some integrations where sample payload is required.
"""
webhookSamplePayload(
"""
Name of the requested event type.
"""
eventType: WebhookSampleEventTypeEnum!
): JSONString @doc(category: "Webhooks")
"""
Look up a warehouse by ID.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING.
"""
warehouse(
"""
ID of a warehouse.
"""
id: ID
"""
External ID of a warehouse.
"""
externalReference: String
): Warehouse @doc(category: "Products")
"""
List of warehouses.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING.
"""
warehouses(
filter: WarehouseFilterInput
sortBy: WarehouseSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): WarehouseCountableConnection @doc(category: "Products")
"""
Returns a list of all translatable items of a given kind.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
translations(
"""
Kind of objects to retrieve.
"""
kind: TranslatableKinds!
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): TranslatableItemConnection
"""
Lookup a translatable item by ID.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
translation(
"""
ID of the object to retrieve.
"""
id: ID!
"""
Kind of the object to retrieve.
"""
kind: TranslatableKinds!
): TranslatableItem
"""
Look up a tax configuration.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxConfiguration(
"""
ID of a tax configuration.
"""
id: ID!
): TaxConfiguration @doc(category: "Taxes")
"""
List of tax configurations.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxConfigurations(
"""
Filtering options for tax configurations.
"""
filter: TaxConfigurationFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): TaxConfigurationCountableConnection @doc(category: "Taxes")
"""
Look up a tax class.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClass(
"""
ID of a tax class.
"""
id: ID!
): TaxClass @doc(category: "Taxes")
"""
List of tax classes.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClasses(
"""
Sort tax classes.
"""
sortBy: TaxClassSortingInput
"""
Filtering options for tax classes.
"""
filter: TaxClassFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): TaxClassCountableConnection @doc(category: "Taxes")
"""
Tax class rates grouped by country.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxCountryConfiguration(
"""
Country for which to return tax class rates.
"""
countryCode: CountryCode!
): TaxCountryConfiguration @doc(category: "Taxes")
"\\n\\nRequires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP."
taxCountryConfigurations: [TaxCountryConfiguration!] @doc(category: "Taxes")
"""
Look up a stock by ID
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
stock(
"""
ID of a stock
"""
id: ID!
): Stock @doc(category: "Products")
"""
List of stocks.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
stocks(
filter: StockFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): StockCountableConnection @doc(category: "Products")
"""
Return information about the shop.
"""
shop: Shop!
"""
Order related settings from site settings. Returns `orderSettings` for the first `channel` in alphabetical order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderSettings: OrderSettings
@doc(category: "Orders")
@deprecated(
reason: "Use the `channel` query to fetch the `orderSettings` field instead."
)
"""
Gift card related settings from site settings.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCardSettings: GiftCardSettings! @doc(category: "Gift cards")
"""
Look up a shipping zone by ID.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZone(
"""
ID of the shipping zone.
"""
id: ID!
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone @doc(category: "Shipping")
"""
List of the shop's shipping zones.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZones(
"""
Filtering options for shipping zones.
"""
filter: ShippingZoneFilterInput
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ShippingZoneCountableConnection @doc(category: "Shipping")
"""
Look up digital content by ID.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContent(
"""
ID of the digital content.
"""
id: ID!
): DigitalContent @doc(category: "Products")
"""
List of digital content.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContents(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): DigitalContentCountableConnection @doc(category: "Products")
"""
List of the shop's categories.
"""
categories(
"""
Filtering options for categories.
"""
filter: CategoryFilterInput
"""
Where filtering options.
"""
where: CategoryWhereInput
"""
Sort categories.
"""
sortBy: CategorySortingInput
"""
Filter categories by the nesting level in the category tree.
"""
level: Int
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CategoryCountableConnection @doc(category: "Products")
"""
Look up a category by ID or slug.
"""
category(
"""
ID of the category.
"""
id: ID
"""
Slug of the category
"""
slug: String
"""
Language code of the category slug, omit to use primary slug.
Added in Saleor 3.21.
"""
slugLanguageCode: LanguageCodeEnum
): Category @doc(category: "Products")
"""
Look up a collection by ID or slug. If slugLanguageCode is provided, category will be fetched by slug translation. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
collection(
"""
ID of the collection.
"""
id: ID
"""
Slug of the collection
"""
slug: String
"""
Language code of the collection slug, omit to use primary slug.
Added in Saleor 3.21.
"""
slugLanguageCode: LanguageCodeEnum
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Collection @doc(category: "Products")
"""
List of the shop's collections. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
collections(
"""
Filtering options for collections.
"""
filter: CollectionFilterInput
"""
Where filtering options.
"""
where: CollectionWhereInput
"""
Sort collections.
"""
sortBy: CollectionSortingInput
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CollectionCountableConnection @doc(category: "Products")
"""
Look up a product by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
product(
"""
ID of the product.
"""
id: ID
"""
Slug of the product.
"""
slug: String
"""
Language code of the product slug, omit to use primary slug.
Added in Saleor 3.21.
"""
slugLanguageCode: LanguageCodeEnum
"""
External ID of the product.
"""
externalReference: String
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Product @doc(category: "Products")
"""
List of the shop's products. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
products(
"""
Filtering options for products.
"""
filter: ProductFilterInput
"""
Where filtering options.
"""
where: ProductWhereInput
"""
Sort products.
"""
sortBy: ProductOrder
"""
Search products.
"""
search: String
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection @doc(category: "Products")
"""
Look up a product type by ID.
"""
productType(
"""
ID of the product type.
"""
id: ID!
): ProductType @doc(category: "Products")
"""
List of the shop's product types.
"""
productTypes(
"""
Filtering options for product types.
"""
filter: ProductTypeFilterInput
"""
Sort product types.
"""
sortBy: ProductTypeSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductTypeCountableConnection @doc(category: "Products")
"""
Look up a product variant by ID or SKU. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
productVariant(
"""
ID of the product variant.
"""
id: ID
"""
SKU of the product variant.
"""
sku: String
"""
External ID of the product.
"""
externalReference: String
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant @doc(category: "Products")
"""
List of product variants. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
productVariants(
"""
Filter product variants by given IDs.
"""
ids: [ID!]
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Filtering options for product variant.
"""
filter: ProductVariantFilterInput
"""
Where filtering options.
"""
where: ProductVariantWhereInput
"""
Sort products variants.
"""
sortBy: ProductVariantSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductVariantCountableConnection @doc(category: "Products")
"""
List of top selling products.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
reportProductSales(
"""
Span of time.
"""
period: ReportingPeriod!
"""
Slug of a channel for which the data should be returned.
"""
channel: String!
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductVariantCountableConnection @doc(category: "Products") @deprecated
"""
Look up a payment by ID.
Requires one of the following permissions: MANAGE_ORDERS.
"""
payment(
"""
ID of the payment.
"""
id: ID!
): Payment @doc(category: "Payments")
"""
List of payments.
Requires one of the following permissions: MANAGE_ORDERS.
"""
payments(
"""
Filtering options for payments.
"""
filter: PaymentFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): PaymentCountableConnection @doc(category: "Payments")
"""
Look up a transaction by ID.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
transaction(
"""
ID of a transaction. Either it or token is required to fetch the transaction data.
"""
id: ID
"""
Token of a transaction. Either it or ID is required to fetch the transaction data.
"""
token: UUID
): TransactionItem @doc(category: "Payments")
"""
Look up a page by ID or slug.
"""
page(
"""
ID of the page.
"""
id: ID
"""
The slug of the page.
"""
slug: String
"""
Language code of the page slug, omit to use primary slug.
Added in Saleor 3.21.
"""
slugLanguageCode: LanguageCodeEnum
): Page @doc(category: "Pages")
"""
List of the shop's pages.
"""
pages(
"""
Sort pages.
"""
sortBy: PageSortingInput
"""
Filtering options for pages.
"""
filter: PageFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): PageCountableConnection @doc(category: "Pages")
"""
Look up a page type by ID.
"""
pageType(
"""
ID of the page type.
"""
id: ID!
): PageType @doc(category: "Pages")
"""
List of the page types.
"""
pageTypes(
"""
Sort page types.
"""
sortBy: PageTypeSortingInput
"""
Filtering options for page types.
"""
filter: PageTypeFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): PageTypeCountableConnection @doc(category: "Pages")
"""
List of activity events to display on homepage (at the moment it only contains order-events).
Requires one of the following permissions: MANAGE_ORDERS.
"""
homepageEvents(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): OrderEventCountableConnection @doc(category: "Orders") @deprecated
"""
Look up an order by ID or external reference.
"""
order(
"""
ID of an order.
"""
id: ID
"""
External ID of an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
externalReference: String
): Order @doc(category: "Orders")
"""
List of orders. The query will not initiate any external requests, including filtering available shipping methods, or performing external tax calculations.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orders(
"""
Sort orders.
"""
sortBy: OrderSortingInput
"""
Filtering options for orders.
"""
filter: OrderFilterInput
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): OrderCountableConnection @doc(category: "Orders")
"""
List of draft orders. The query will not initiate any external requests, including filtering available shipping methods, or performing external tax calculations.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrders(
"""
Sort draft orders.
"""
sortBy: OrderSortingInput
"""
Filtering options for draft orders.
"""
filter: OrderDraftFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): OrderCountableConnection @doc(category: "Orders")
"""
Return the total sales amount from a specific period.
Requires one of the following permissions: MANAGE_ORDERS.
"""
ordersTotal(
"""
A period of time.
"""
period: ReportingPeriod
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): TaxedMoney @doc(category: "Orders") @deprecated
"""
Look up an order by token.
"""
orderByToken(
"""
The order's token.
"""
token: UUID!
): Order @doc(category: "Orders") @deprecated
"""
Look up a navigation menu by ID or name.
"""
menu(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
ID of the menu.
"""
id: ID
"""
The menu's name.
"""
name: String
"""
The menu's slug.
"""
slug: String
): Menu @doc(category: "Menu")
"""
List of the storefront's menus.
"""
menus(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Sort menus.
"""
sortBy: MenuSortingInput
"""
Filtering options for menus.
`slug`: Use `slugs` instead.
"""
filter: MenuFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): MenuCountableConnection @doc(category: "Menu")
"""
Look up a menu item by ID.
"""
menuItem(
"""
ID of the menu item.
"""
id: ID!
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): MenuItem @doc(category: "Menu")
"""
List of the storefronts's menu items.
"""
menuItems(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Sort menus items.
"""
sortBy: MenuItemSortingInput
"""
Filtering options for menu items.
"""
filter: MenuItemFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): MenuItemCountableConnection @doc(category: "Menu")
"""
Look up a gift card by ID.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCard(
"""
ID of the gift card.
"""
id: ID!
): GiftCard @doc(category: "Gift cards")
"""
List of gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCards(
"""
Sort gift cards.
"""
sortBy: GiftCardSortingInput
"""
Filtering options for gift cards.
"""
filter: GiftCardFilterInput
"""
Search gift cards by email and name of user, who created or used the gift card, and by code.
"""
search: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): GiftCardCountableConnection @doc(category: "Gift cards")
"""
List of gift card currencies.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCardCurrencies: [String!]! @doc(category: "Gift cards")
"""
List of gift card tags.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCardTags(
"""
Filtering options for gift card tags.
"""
filter: GiftCardTagFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): GiftCardTagCountableConnection @doc(category: "Gift cards")
"""
Look up a plugin by ID.
Requires one of the following permissions: MANAGE_PLUGINS.
"""
plugin(
"""
ID of the plugin.
"""
id: ID!
): Plugin
"""
List of plugins.
Requires one of the following permissions: MANAGE_PLUGINS.
"""
plugins(
"""
Filtering options for plugins.
"""
filter: PluginFilterInput
"""
Sort plugins.
"""
sortBy: PluginSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): PluginCountableConnection
"""
Look up a sale by ID.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
sale(
"""
ID of the sale.
"""
id: ID!
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Sale
@doc(category: "Discounts")
@deprecated(reason: "Use the `promotion` query instead.")
"""
List of the shop's sales.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
sales(
"""
Filtering options for sales.
"""
filter: SaleFilterInput
"""
Sort sales.
"""
sortBy: SaleSortingInput
"""
Search sales by name, value or type.
"""
query: String @deprecated(reason: "Use `filter.search` input instead.")
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): SaleCountableConnection
@doc(category: "Discounts")
@deprecated(reason: "Use the `promotions` query instead.")
"""
Look up a voucher by ID.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
voucher(
"""
ID of the voucher.
"""
id: ID!
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Voucher @doc(category: "Discounts")
"""
List of the shop's vouchers.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
vouchers(
"""
Filtering options for vouchers.
"""
filter: VoucherFilterInput
"""
Sort voucher.
"""
sortBy: VoucherSortingInput
"""
Search vouchers by name or code.
"""
query: String @deprecated(reason: "Use `filter.search` input instead.")
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): VoucherCountableConnection @doc(category: "Discounts")
"""
Look up a promotion by ID.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
promotion(
"""
ID of the promotion.
"""
id: ID!
): Promotion @doc(category: "Discounts")
"""
List of the promotions.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
promotions(
"""
Where filtering options.
"""
where: PromotionWhereInput
"""
Sort promotions.
"""
sortBy: PromotionSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): PromotionCountableConnection @doc(category: "Discounts")
"""
Look up a export file by ID.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
exportFile(
"""
ID of the export file job.
"""
id: ID!
): ExportFile
"""
List of export files.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
exportFiles(
"""
Filtering options for export files.
"""
filter: ExportFileFilterInput
"""
Sort export files.
"""
sortBy: ExportFileSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ExportFileCountableConnection
"""
List of all tax rates available from tax gateway.
"""
taxTypes: [TaxType!]
@doc(category: "Taxes")
@deprecated(reason: "Use `taxClasses` field instead.")
"""
Look up a checkout by id.
Requires one of the following permissions to query a checkout, if a checkout is in inactive channel: MANAGE_CHECKOUTS, IMPERSONATE_USER, HANDLE_PAYMENTS.
"""
checkout(
"""
The checkout's ID.
"""
id: ID
"""
The checkout's token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): Checkout @doc(category: "Checkout")
"""
List of checkouts. The query will not initiate any external requests, including fetching external shipping methods, filtering available shipping methods, or performing external tax calculations.
Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS.
"""
checkouts(
"""
Sort checkouts.
"""
sortBy: CheckoutSortingInput
"""
Filtering options for checkouts.
"""
filter: CheckoutFilterInput
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CheckoutCountableConnection @doc(category: "Checkout")
"""
List of checkout lines. The query will not initiate any external requests, including fetching external shipping methods, filtering available shipping methods, or performing external tax calculations.
Requires one of the following permissions: MANAGE_CHECKOUTS.
"""
checkoutLines(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CheckoutLineCountableConnection @doc(category: "Checkout")
"""
Look up a channel by ID or slug.
"""
channel(
"""
ID of the channel.
"""
id: ID
"""
Slug of the channel.
"""
slug: String
): Channel @doc(category: "Channels")
"""
List of all channels.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
channels: [Channel!] @doc(category: "Channels")
"""
List of the shop's attributes.
"""
attributes(
"""
Filtering options for attributes.
"""
filter: AttributeFilterInput
"""
Filtering options for attributes.
"""
where: AttributeWhereInput
"""
Search attributes.
"""
search: String
"""
Sorting options for attributes.
"""
sortBy: AttributeSortingInput
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AttributeCountableConnection @doc(category: "Attributes")
"""
Look up an attribute by ID, slug or external reference.
"""
attribute(
"""
ID of the attribute.
"""
id: ID
"""
Slug of the attribute.
"""
slug: String
"""
External ID of the attribute.
"""
externalReference: String
): Attribute @doc(category: "Attributes")
"""
List of all apps installations
Requires one of the following permissions: MANAGE_APPS.
"""
appsInstallations: [AppInstallation!]! @doc(category: "Apps")
"""
List of the apps.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS.
"""
apps(
"""
Filtering options for apps.
"""
filter: AppFilterInput
"""
Sort apps.
"""
sortBy: AppSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AppCountableConnection @doc(category: "Apps")
"""
Look up an app by ID. If ID is not provided, return the currently authenticated app.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER AUTHENTICATED_APP. The authenticated app has access to its resources. Fetching different apps requires MANAGE_APPS permission.
"""
app(
"""
ID of the app.
"""
id: ID
): App @doc(category: "Apps")
"""
List of all extensions.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
appExtensions(
"""
Filtering options for apps extensions.
"""
filter: AppExtensionFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AppExtensionCountableConnection @doc(category: "Apps")
"""
Look up an app extension by ID.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
appExtension(
"""
ID of the app extension.
"""
id: ID!
): AppExtension @doc(category: "Apps")
"""
Returns address validation rules.
"""
addressValidationRules(
"""
Two-letter ISO 3166-1 country code.
"""
countryCode: CountryCode!
"""
Designation of a region, province or state.
"""
countryArea: String
"""
City or a town name.
"""
city: String
"""
Sublocality like a district.
"""
cityArea: String
): AddressValidationData @doc(category: "Users")
"""
Look up an address by ID.
Requires one of the following permissions: MANAGE_USERS, OWNER.
"""
address(
"""
ID of an address.
"""
id: ID!
): Address @doc(category: "Users")
"""
List of the shop's customers. This list includes all users who registered through the accountRegister mutation. Additionally, staff users who have placed an order using their account will also appear in this list.
Requires one of the following permissions: MANAGE_ORDERS, MANAGE_USERS.
"""
customers(
"""
Filtering options for customers.
"""
filter: CustomerFilterInput
"""
Sort customers.
"""
sortBy: UserSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): UserCountableConnection @doc(category: "Users")
"""
List of permission groups.
Requires one of the following permissions: MANAGE_STAFF.
"""
permissionGroups(
"""
Filtering options for permission groups.
"""
filter: PermissionGroupFilterInput
"""
Sort permission groups.
"""
sortBy: PermissionGroupSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): GroupCountableConnection @doc(category: "Users")
"""
Look up permission group by ID.
Requires one of the following permissions: MANAGE_STAFF.
"""
permissionGroup(
"""
ID of the group.
"""
id: ID!
): Group @doc(category: "Users")
"""
Return the currently authenticated user.
"""
me: User @doc(category: "Users")
"""
List of the shop's staff users.
Requires one of the following permissions: MANAGE_STAFF.
"""
staffUsers(
"""
Filtering options for staff users.
"""
filter: StaffUserInput
"""
Sort staff users.
"""
sortBy: UserSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): UserCountableConnection @doc(category: "Users")
"""
Look up a user by ID or email address.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_USERS, MANAGE_ORDERS.
"""
user(
"""
ID of the user.
"""
id: ID
"""
Email address of the user.
"""
email: String
"""
External ID of the user.
"""
externalReference: String
): User @doc(category: "Users")
_entities(representations: [_Any]): [_Entity]
_service: _Service
}
"""
Webhook.
"""
type Webhook implements Node @doc(category: "Webhooks") {
"""
The ID of webhook.
"""
id: ID!
"""
The name of webhook.
"""
name: String
"""
List of webhook events.
"""
events: [WebhookEvent!]!
@deprecated(reason: "Use `asyncEvents` or `syncEvents` instead.")
"""
List of synchronous webhook events.
"""
syncEvents: [WebhookEventSync!]!
"""
List of asynchronous webhook events.
"""
asyncEvents: [WebhookEventAsync!]!
"""
The app associated with Webhook.
"""
app: App!
"""
Event deliveries.
"""
eventDeliveries(
"""
Event delivery sorter.
"""
sortBy: EventDeliverySortingInput
"""
Event delivery filter options.
"""
filter: EventDeliveryFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): EventDeliveryCountableConnection
"""
Target URL for webhook.
"""
targetUrl: String!
"""
Informs if webhook is activated.
"""
isActive: Boolean!
"""
Used to create a hash signature for each payload.
"""
secretKey: String
@deprecated(
reason: "As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS."
)
"""
Used to define payloads for specific events.
"""
subscriptionQuery: String
"""
Custom headers, which will be added to HTTP request.
"""
customHeaders: JSONString
}
"""
An object with an ID
"""
interface Node {
"""
The ID of the object.
"""
id: ID!
}
"""
Webhook event.
"""
type WebhookEvent @doc(category: "Webhooks") {
"""
Display name of the event.
"""
name: String!
"""
Internal name of the event type.
"""
eventType: WebhookEventTypeEnum!
}
"""
Enum determining type of webhook.
"""
enum WebhookEventTypeEnum @doc(category: "Webhooks") {
"""
All the events.
"""
ANY_EVENTS @deprecated
"""
An account confirmation is requested.
"""
ACCOUNT_CONFIRMATION_REQUESTED
"""
An account email change is requested.
"""
ACCOUNT_CHANGE_EMAIL_REQUESTED
"""
An account email was changed
"""
ACCOUNT_EMAIL_CHANGED
"""
Setting a new password for the account is requested.
"""
ACCOUNT_SET_PASSWORD_REQUESTED
"""
An account is confirmed.
"""
ACCOUNT_CONFIRMED
"""
An account delete is requested.
"""
ACCOUNT_DELETE_REQUESTED
"""
An account is deleted.
"""
ACCOUNT_DELETED
"""
A new address created.
"""
ADDRESS_CREATED
"""
An address updated.
"""
ADDRESS_UPDATED
"""
An address deleted.
"""
ADDRESS_DELETED
"""
A new app installed.
"""
APP_INSTALLED
"""
An app updated.
"""
APP_UPDATED
"""
An app deleted.
"""
APP_DELETED
"""
An app status is changed.
"""
APP_STATUS_CHANGED
"""
A new attribute is created.
"""
ATTRIBUTE_CREATED
"""
An attribute is updated.
"""
ATTRIBUTE_UPDATED
"""
An attribute is deleted.
"""
ATTRIBUTE_DELETED
"""
A new attribute value is created.
"""
ATTRIBUTE_VALUE_CREATED
"""
An attribute value is updated.
"""
ATTRIBUTE_VALUE_UPDATED
"""
An attribute value is deleted.
"""
ATTRIBUTE_VALUE_DELETED
"""
A new category created.
"""
CATEGORY_CREATED
"""
A category is updated.
"""
CATEGORY_UPDATED
"""
A category is deleted.
"""
CATEGORY_DELETED
"""
A new channel created.
"""
CHANNEL_CREATED
"""
A channel is updated.
"""
CHANNEL_UPDATED
"""
A channel is deleted.
"""
CHANNEL_DELETED
"""
A channel status is changed.
"""
CHANNEL_STATUS_CHANGED
"""
A channel metadata is updated.
"""
CHANNEL_METADATA_UPDATED
"""
A new gift card created.
"""
GIFT_CARD_CREATED
"""
A gift card is updated.
"""
GIFT_CARD_UPDATED
"""
A gift card is deleted.
"""
GIFT_CARD_DELETED
"""
A gift card has been sent.
"""
GIFT_CARD_SENT
"""
A gift card status is changed.
"""
GIFT_CARD_STATUS_CHANGED
"""
A gift card metadata is updated.
"""
GIFT_CARD_METADATA_UPDATED
"""
A gift card export is completed.
"""
GIFT_CARD_EXPORT_COMPLETED
"""
A new menu created.
"""
MENU_CREATED
"""
A menu is updated.
"""
MENU_UPDATED
"""
A menu is deleted.
"""
MENU_DELETED
"""
A new menu item created.
"""
MENU_ITEM_CREATED
"""
A menu item is updated.
"""
MENU_ITEM_UPDATED
"""
A menu item is deleted.
"""
MENU_ITEM_DELETED
"""
A new order is placed.
"""
ORDER_CREATED
"""
An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled.
"""
ORDER_CONFIRMED
"""
Payment has been made. The order may be partially or fully paid.
"""
ORDER_PAID
"""
Payment is made and an order is fully paid.
"""
ORDER_FULLY_PAID
"""
The order received a refund. The order may be partially or fully refunded.
"""
ORDER_REFUNDED
"""
The order is fully refunded.
"""
ORDER_FULLY_REFUNDED
"""
An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED.
"""
ORDER_UPDATED
"""
An order is cancelled.
"""
ORDER_CANCELLED
"""
An order is expired.
"""
ORDER_EXPIRED
"""
An order is fulfilled.
"""
ORDER_FULFILLED
"""
An order metadata is updated.
"""
ORDER_METADATA_UPDATED
"""
Orders are imported.
"""
ORDER_BULK_CREATED
"""
A new fulfillment is created.
"""
FULFILLMENT_CREATED
"""
A fulfillment is cancelled.
"""
FULFILLMENT_CANCELED
"""
A fulfillment is approved.
"""
FULFILLMENT_APPROVED
"""
A fulfillment metadata is updated.
"""
FULFILLMENT_METADATA_UPDATED
FULFILLMENT_TRACKING_NUMBER_UPDATED
"""
A draft order is created.
"""
DRAFT_ORDER_CREATED
"""
A draft order is updated.
"""
DRAFT_ORDER_UPDATED
"""
A draft order is deleted.
"""
DRAFT_ORDER_DELETED
"""
A sale is created.
"""
SALE_CREATED
"""
A sale is updated.
"""
SALE_UPDATED
"""
A sale is deleted.
"""
SALE_DELETED
"""
A sale is activated or deactivated.
"""
SALE_TOGGLE
"""
A promotion is created.
"""
PROMOTION_CREATED
"""
A promotion is updated.
"""
PROMOTION_UPDATED
"""
A promotion is deleted.
"""
PROMOTION_DELETED
"""
A promotion is activated.
"""
PROMOTION_STARTED
"""
A promotion is deactivated.
"""
PROMOTION_ENDED
"""
A promotion rule is created.
"""
PROMOTION_RULE_CREATED
"""
A promotion rule is updated.
"""
PROMOTION_RULE_UPDATED
"""
A promotion rule is deleted.
"""
PROMOTION_RULE_DELETED
"""
An invoice for order requested.
"""
INVOICE_REQUESTED
"""
An invoice is deleted.
"""
INVOICE_DELETED
"""
Invoice has been sent.
"""
INVOICE_SENT
"""
A new customer account is created.
"""
CUSTOMER_CREATED
"""
A customer account is updated.
"""
CUSTOMER_UPDATED
"""
A customer account is deleted.
"""
CUSTOMER_DELETED
"""
A customer account metadata is updated.
"""
CUSTOMER_METADATA_UPDATED
"""
A new collection is created.
"""
COLLECTION_CREATED
"""
A collection is updated.
"""
COLLECTION_UPDATED
"""
A collection is deleted.
"""
COLLECTION_DELETED
"""
A collection metadata is updated.
"""
COLLECTION_METADATA_UPDATED
"""
A new product is created.
"""
PRODUCT_CREATED
"""
A product is updated.
"""
PRODUCT_UPDATED
"""
A product is deleted.
"""
PRODUCT_DELETED
"""
A product metadata is updated.
"""
PRODUCT_METADATA_UPDATED
"""
A product export is completed.
"""
PRODUCT_EXPORT_COMPLETED
"""
A new product media is created.
"""
PRODUCT_MEDIA_CREATED
"""
A product media is updated.
"""
PRODUCT_MEDIA_UPDATED
"""
A product media is deleted.
"""
PRODUCT_MEDIA_DELETED
"""
A new product variant is created.
"""
PRODUCT_VARIANT_CREATED
"""
A product variant is updated.
"""
PRODUCT_VARIANT_UPDATED
"""
A product variant is deleted. Warning: this event will not be executed when parent product has been deleted. Check PRODUCT_DELETED.
"""
PRODUCT_VARIANT_DELETED
"""
A product variant metadata is updated.
"""
PRODUCT_VARIANT_METADATA_UPDATED
"""
A product variant is out of stock.
"""
PRODUCT_VARIANT_OUT_OF_STOCK
"""
A product variant is back in stock.
"""
PRODUCT_VARIANT_BACK_IN_STOCK
"""
A product variant stock is updated
"""
PRODUCT_VARIANT_STOCK_UPDATED
"""
A new checkout is created.
"""
CHECKOUT_CREATED
"""
A checkout is updated. It also triggers all updates related to the checkout.
"""
CHECKOUT_UPDATED
"""
A checkout was fully authorized (its `authorizeStatus` is `FULL`).
This event is emitted only for checkouts whose payments are processed through the Transaction API.
"""
CHECKOUT_FULLY_AUTHORIZED
"""
A checkout was fully paid (its `chargeStatus` is `FULL` or `OVERCHARGED`). This event is not sent if payments are only authorized but not fully charged.
This event is emitted only for checkouts whose payments are processed through the Transaction API.
"""
CHECKOUT_FULLY_PAID
"""
A checkout metadata is updated.
"""
CHECKOUT_METADATA_UPDATED
"""
User notification triggered.
"""
NOTIFY_USER
@deprecated(
reason: "See the docs for more details about migrating from NOTIFY_USER to other events: https://docs.saleor.io/upgrade-guides/core/3-16-to-3-17#migrating-from-notify_user"
)
"""
A new page is created.
"""
PAGE_CREATED
"""
A page is updated.
"""
PAGE_UPDATED
"""
A page is deleted.
"""
PAGE_DELETED
"""
A new page type is created.
"""
PAGE_TYPE_CREATED
"""
A page type is updated.
"""
PAGE_TYPE_UPDATED
"""
A page type is deleted.
"""
PAGE_TYPE_DELETED
"""
A new permission group is created.
"""
PERMISSION_GROUP_CREATED
"""
A permission group is updated.
"""
PERMISSION_GROUP_UPDATED
"""
A permission group is deleted.
"""
PERMISSION_GROUP_DELETED
"""
A new shipping price is created.
"""
SHIPPING_PRICE_CREATED
"""
A shipping price is updated.
"""
SHIPPING_PRICE_UPDATED
"""
A shipping price is deleted.
"""
SHIPPING_PRICE_DELETED
"""
A new shipping zone is created.
"""
SHIPPING_ZONE_CREATED
"""
A shipping zone is updated.
"""
SHIPPING_ZONE_UPDATED
"""
A shipping zone is deleted.
"""
SHIPPING_ZONE_DELETED
"""
A shipping zone metadata is updated.
"""
SHIPPING_ZONE_METADATA_UPDATED
"""
A new staff user is created.
"""
STAFF_CREATED
"""
A staff user is updated.
"""
STAFF_UPDATED
"""
A staff user is deleted.
"""
STAFF_DELETED
"""
Setting a new password for the staff account is requested.
"""
STAFF_SET_PASSWORD_REQUESTED
"""
Transaction item metadata is updated.
"""
TRANSACTION_ITEM_METADATA_UPDATED
"""
A new translation is created.
"""
TRANSLATION_CREATED
"""
A translation is updated.
"""
TRANSLATION_UPDATED
"""
A new warehouse created.
"""
WAREHOUSE_CREATED
"""
A warehouse is updated.
"""
WAREHOUSE_UPDATED
"""
A warehouse is deleted.
"""
WAREHOUSE_DELETED
"""
A warehouse metadata is updated.
"""
WAREHOUSE_METADATA_UPDATED
"""
A new voucher created.
"""
VOUCHER_CREATED
"""
A voucher is updated.
"""
VOUCHER_UPDATED
"""
A voucher is deleted.
"""
VOUCHER_DELETED
VOUCHER_CODES_CREATED
VOUCHER_CODES_DELETED
"""
A voucher metadata is updated.
"""
VOUCHER_METADATA_UPDATED
"""
A voucher code export is completed.
Added in Saleor 3.18.
"""
VOUCHER_CODE_EXPORT_COMPLETED
"""
An observability event is created.
"""
OBSERVABILITY
"""
A thumbnail is created.
"""
THUMBNAIL_CREATED
"""
Shop metadata is updated.
"""
SHOP_METADATA_UPDATED
"""
Listing available payment gateways.
"""
PAYMENT_LIST_GATEWAYS
"""
Authorize payment.
"""
PAYMENT_AUTHORIZE
"""
Capture payment.
"""
PAYMENT_CAPTURE
"""
Refund payment.
"""
PAYMENT_REFUND
"""
Void payment.
"""
PAYMENT_VOID
"""
Confirm payment.
"""
PAYMENT_CONFIRM
"""
Process payment.
"""
PAYMENT_PROCESS
"""
Event called for checkout tax calculation.
"""
CHECKOUT_CALCULATE_TAXES
"""
Event called for order tax calculation.
"""
ORDER_CALCULATE_TAXES
"""
Event called when charge has been requested for transaction.
"""
TRANSACTION_CHARGE_REQUESTED
"""
Event called when refund has been requested for transaction.
"""
TRANSACTION_REFUND_REQUESTED
"""
Event called when cancel has been requested for transaction.
"""
TRANSACTION_CANCELATION_REQUESTED
"""
Fetch external shipping methods for checkout.
"""
SHIPPING_LIST_METHODS_FOR_CHECKOUT
"""
Filter shipping methods for checkout.
"""
CHECKOUT_FILTER_SHIPPING_METHODS
"""
Filter shipping methods for order.
"""
ORDER_FILTER_SHIPPING_METHODS
PAYMENT_GATEWAY_INITIALIZE_SESSION
TRANSACTION_INITIALIZE_SESSION
TRANSACTION_PROCESS_SESSION
LIST_STORED_PAYMENT_METHODS
STORED_PAYMENT_METHOD_DELETE_REQUESTED
PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION
PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION
PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION
}
"""
Synchronous webhook event.
"""
type WebhookEventSync @doc(category: "Webhooks") {
"""
Display name of the event.
"""
name: String!
"""
Internal name of the event type.
"""
eventType: WebhookEventTypeSyncEnum!
}
"""
Enum determining type of webhook.
"""
enum WebhookEventTypeSyncEnum @doc(category: "Webhooks") {
"""
Listing available payment gateways.
"""
PAYMENT_LIST_GATEWAYS
"""
Authorize payment.
"""
PAYMENT_AUTHORIZE
"""
Capture payment.
"""
PAYMENT_CAPTURE
"""
Refund payment.
"""
PAYMENT_REFUND
"""
Void payment.
"""
PAYMENT_VOID
"""
Confirm payment.
"""
PAYMENT_CONFIRM
"""
Process payment.
"""
PAYMENT_PROCESS
"""
Event called for checkout tax calculation.
"""
CHECKOUT_CALCULATE_TAXES
"""
Event called for order tax calculation.
"""
ORDER_CALCULATE_TAXES
"""
Event called when charge has been requested for transaction.
"""
TRANSACTION_CHARGE_REQUESTED
"""
Event called when refund has been requested for transaction.
"""
TRANSACTION_REFUND_REQUESTED
"""
Event called when cancel has been requested for transaction.
"""
TRANSACTION_CANCELATION_REQUESTED
"""
Fetch external shipping methods for checkout.
"""
SHIPPING_LIST_METHODS_FOR_CHECKOUT
"""
Filter shipping methods for checkout.
"""
CHECKOUT_FILTER_SHIPPING_METHODS
"""
Filter shipping methods for order.
"""
ORDER_FILTER_SHIPPING_METHODS
PAYMENT_GATEWAY_INITIALIZE_SESSION
TRANSACTION_INITIALIZE_SESSION
TRANSACTION_PROCESS_SESSION
LIST_STORED_PAYMENT_METHODS
STORED_PAYMENT_METHOD_DELETE_REQUESTED
PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION
PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION
PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION
}
"""
Asynchronous webhook event.
"""
type WebhookEventAsync @doc(category: "Webhooks") {
"""
Display name of the event.
"""
name: String!
"""
Internal name of the event type.
"""
eventType: WebhookEventTypeAsyncEnum!
}
"""
Enum determining type of webhook.
"""
enum WebhookEventTypeAsyncEnum @doc(category: "Webhooks") {
"""
All the events.
"""
ANY_EVENTS @deprecated
"""
An account confirmation is requested.
"""
ACCOUNT_CONFIRMATION_REQUESTED
"""
An account email change is requested.
"""
ACCOUNT_CHANGE_EMAIL_REQUESTED
"""
An account email was changed
"""
ACCOUNT_EMAIL_CHANGED
"""
Setting a new password for the account is requested.
"""
ACCOUNT_SET_PASSWORD_REQUESTED
"""
An account is confirmed.
"""
ACCOUNT_CONFIRMED
"""
An account delete is requested.
"""
ACCOUNT_DELETE_REQUESTED
"""
An account is deleted.
"""
ACCOUNT_DELETED
"""
A new address created.
"""
ADDRESS_CREATED
"""
An address updated.
"""
ADDRESS_UPDATED
"""
An address deleted.
"""
ADDRESS_DELETED
"""
A new app installed.
"""
APP_INSTALLED
"""
An app updated.
"""
APP_UPDATED
"""
An app deleted.
"""
APP_DELETED
"""
An app status is changed.
"""
APP_STATUS_CHANGED
"""
A new attribute is created.
"""
ATTRIBUTE_CREATED
"""
An attribute is updated.
"""
ATTRIBUTE_UPDATED
"""
An attribute is deleted.
"""
ATTRIBUTE_DELETED
"""
A new attribute value is created.
"""
ATTRIBUTE_VALUE_CREATED
"""
An attribute value is updated.
"""
ATTRIBUTE_VALUE_UPDATED
"""
An attribute value is deleted.
"""
ATTRIBUTE_VALUE_DELETED
"""
A new category created.
"""
CATEGORY_CREATED
"""
A category is updated.
"""
CATEGORY_UPDATED
"""
A category is deleted.
"""
CATEGORY_DELETED
"""
A new channel created.
"""
CHANNEL_CREATED
"""
A channel is updated.
"""
CHANNEL_UPDATED
"""
A channel is deleted.
"""
CHANNEL_DELETED
"""
A channel status is changed.
"""
CHANNEL_STATUS_CHANGED
"""
A channel metadata is updated.
"""
CHANNEL_METADATA_UPDATED
"""
A new gift card created.
"""
GIFT_CARD_CREATED
"""
A gift card is updated.
"""
GIFT_CARD_UPDATED
"""
A gift card is deleted.
"""
GIFT_CARD_DELETED
"""
A gift card has been sent.
"""
GIFT_CARD_SENT
"""
A gift card status is changed.
"""
GIFT_CARD_STATUS_CHANGED
"""
A gift card metadata is updated.
"""
GIFT_CARD_METADATA_UPDATED
"""
A gift card export is completed.
"""
GIFT_CARD_EXPORT_COMPLETED
"""
A new menu created.
"""
MENU_CREATED
"""
A menu is updated.
"""
MENU_UPDATED
"""
A menu is deleted.
"""
MENU_DELETED
"""
A new menu item created.
"""
MENU_ITEM_CREATED
"""
A menu item is updated.
"""
MENU_ITEM_UPDATED
"""
A menu item is deleted.
"""
MENU_ITEM_DELETED
"""
A new order is placed.
"""
ORDER_CREATED
"""
An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled.
"""
ORDER_CONFIRMED
"""
Payment has been made. The order may be partially or fully paid.
"""
ORDER_PAID
"""
Payment is made and an order is fully paid.
"""
ORDER_FULLY_PAID
"""
The order received a refund. The order may be partially or fully refunded.
"""
ORDER_REFUNDED
"""
The order is fully refunded.
"""
ORDER_FULLY_REFUNDED
"""
An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED.
"""
ORDER_UPDATED
"""
An order is cancelled.
"""
ORDER_CANCELLED
"""
An order is expired.
"""
ORDER_EXPIRED
"""
An order is fulfilled.
"""
ORDER_FULFILLED
"""
An order metadata is updated.
"""
ORDER_METADATA_UPDATED
"""
Orders are imported.
"""
ORDER_BULK_CREATED
"""
A new fulfillment is created.
"""
FULFILLMENT_CREATED
"""
A fulfillment is cancelled.
"""
FULFILLMENT_CANCELED
"""
A fulfillment is approved.
"""
FULFILLMENT_APPROVED
"""
A fulfillment metadata is updated.
"""
FULFILLMENT_METADATA_UPDATED
FULFILLMENT_TRACKING_NUMBER_UPDATED
"""
A draft order is created.
"""
DRAFT_ORDER_CREATED
"""
A draft order is updated.
"""
DRAFT_ORDER_UPDATED
"""
A draft order is deleted.
"""
DRAFT_ORDER_DELETED
"""
A sale is created.
"""
SALE_CREATED
"""
A sale is updated.
"""
SALE_UPDATED
"""
A sale is deleted.
"""
SALE_DELETED
"""
A sale is activated or deactivated.
"""
SALE_TOGGLE
"""
A promotion is created.
"""
PROMOTION_CREATED
"""
A promotion is updated.
"""
PROMOTION_UPDATED
"""
A promotion is deleted.
"""
PROMOTION_DELETED
"""
A promotion is activated.
"""
PROMOTION_STARTED
"""
A promotion is deactivated.
"""
PROMOTION_ENDED
"""
A promotion rule is created.
"""
PROMOTION_RULE_CREATED
"""
A promotion rule is updated.
"""
PROMOTION_RULE_UPDATED
"""
A promotion rule is deleted.
"""
PROMOTION_RULE_DELETED
"""
An invoice for order requested.
"""
INVOICE_REQUESTED
"""
An invoice is deleted.
"""
INVOICE_DELETED
"""
Invoice has been sent.
"""
INVOICE_SENT
"""
A new customer account is created.
"""
CUSTOMER_CREATED
"""
A customer account is updated.
"""
CUSTOMER_UPDATED
"""
A customer account is deleted.
"""
CUSTOMER_DELETED
"""
A customer account metadata is updated.
"""
CUSTOMER_METADATA_UPDATED
"""
A new collection is created.
"""
COLLECTION_CREATED
"""
A collection is updated.
"""
COLLECTION_UPDATED
"""
A collection is deleted.
"""
COLLECTION_DELETED
"""
A collection metadata is updated.
"""
COLLECTION_METADATA_UPDATED
"""
A new product is created.
"""
PRODUCT_CREATED
"""
A product is updated.
"""
PRODUCT_UPDATED
"""
A product is deleted.
"""
PRODUCT_DELETED
"""
A product metadata is updated.
"""
PRODUCT_METADATA_UPDATED
"""
A product export is completed.
"""
PRODUCT_EXPORT_COMPLETED
"""
A new product media is created.
"""
PRODUCT_MEDIA_CREATED
"""
A product media is updated.
"""
PRODUCT_MEDIA_UPDATED
"""
A product media is deleted.
"""
PRODUCT_MEDIA_DELETED
"""
A new product variant is created.
"""
PRODUCT_VARIANT_CREATED
"""
A product variant is updated.
"""
PRODUCT_VARIANT_UPDATED
"""
A product variant is deleted. Warning: this event will not be executed when parent product has been deleted. Check PRODUCT_DELETED.
"""
PRODUCT_VARIANT_DELETED
"""
A product variant metadata is updated.
"""
PRODUCT_VARIANT_METADATA_UPDATED
"""
A product variant is out of stock.
"""
PRODUCT_VARIANT_OUT_OF_STOCK
"""
A product variant is back in stock.
"""
PRODUCT_VARIANT_BACK_IN_STOCK
"""
A product variant stock is updated
"""
PRODUCT_VARIANT_STOCK_UPDATED
"""
A new checkout is created.
"""
CHECKOUT_CREATED
"""
A checkout is updated. It also triggers all updates related to the checkout.
"""
CHECKOUT_UPDATED
"""
A checkout was fully authorized (its `authorizeStatus` is `FULL`).
This event is emitted only for checkouts whose payments are processed through the Transaction API.
"""
CHECKOUT_FULLY_AUTHORIZED
"""
A checkout was fully paid (its `chargeStatus` is `FULL` or `OVERCHARGED`). This event is not sent if payments are only authorized but not fully charged.
This event is emitted only for checkouts whose payments are processed through the Transaction API.
"""
CHECKOUT_FULLY_PAID
"""
A checkout metadata is updated.
"""
CHECKOUT_METADATA_UPDATED
"""
User notification triggered.
"""
NOTIFY_USER
@deprecated(
reason: "See the docs for more details about migrating from NOTIFY_USER to other events: https://docs.saleor.io/upgrade-guides/core/3-16-to-3-17#migrating-from-notify_user"
)
"""
A new page is created.
"""
PAGE_CREATED
"""
A page is updated.
"""
PAGE_UPDATED
"""
A page is deleted.
"""
PAGE_DELETED
"""
A new page type is created.
"""
PAGE_TYPE_CREATED
"""
A page type is updated.
"""
PAGE_TYPE_UPDATED
"""
A page type is deleted.
"""
PAGE_TYPE_DELETED
"""
A new permission group is created.
"""
PERMISSION_GROUP_CREATED
"""
A permission group is updated.
"""
PERMISSION_GROUP_UPDATED
"""
A permission group is deleted.
"""
PERMISSION_GROUP_DELETED
"""
A new shipping price is created.
"""
SHIPPING_PRICE_CREATED
"""
A shipping price is updated.
"""
SHIPPING_PRICE_UPDATED
"""
A shipping price is deleted.
"""
SHIPPING_PRICE_DELETED
"""
A new shipping zone is created.
"""
SHIPPING_ZONE_CREATED
"""
A shipping zone is updated.
"""
SHIPPING_ZONE_UPDATED
"""
A shipping zone is deleted.
"""
SHIPPING_ZONE_DELETED
"""
A shipping zone metadata is updated.
"""
SHIPPING_ZONE_METADATA_UPDATED
"""
A new staff user is created.
"""
STAFF_CREATED
"""
A staff user is updated.
"""
STAFF_UPDATED
"""
A staff user is deleted.
"""
STAFF_DELETED
"""
Setting a new password for the staff account is requested.
"""
STAFF_SET_PASSWORD_REQUESTED
"""
Transaction item metadata is updated.
"""
TRANSACTION_ITEM_METADATA_UPDATED
"""
A new translation is created.
"""
TRANSLATION_CREATED
"""
A translation is updated.
"""
TRANSLATION_UPDATED
"""
A new warehouse created.
"""
WAREHOUSE_CREATED
"""
A warehouse is updated.
"""
WAREHOUSE_UPDATED
"""
A warehouse is deleted.
"""
WAREHOUSE_DELETED
"""
A warehouse metadata is updated.
"""
WAREHOUSE_METADATA_UPDATED
"""
A new voucher created.
"""
VOUCHER_CREATED
"""
A voucher is updated.
"""
VOUCHER_UPDATED
"""
A voucher is deleted.
"""
VOUCHER_DELETED
VOUCHER_CODES_CREATED
VOUCHER_CODES_DELETED
"""
A voucher metadata is updated.
"""
VOUCHER_METADATA_UPDATED
"""
A voucher code export is completed.
Added in Saleor 3.18.
"""
VOUCHER_CODE_EXPORT_COMPLETED
"""
An observability event is created.
"""
OBSERVABILITY
"""
A thumbnail is created.
"""
THUMBNAIL_CREATED
"""
Shop metadata is updated.
"""
SHOP_METADATA_UPDATED
}
"""
Represents app data.
"""
type App implements Node & ObjectWithMetadata @doc(category: "Apps") {
"""
The ID of the app.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Canonical app ID from the manifest
Added in Saleor 3.19.
"""
identifier: String
"""
List of the app's permissions.
"""
permissions: [Permission!]
"""
The date and time when the app was created.
"""
created: DateTime
"""
Determine if app will be set active or not.
"""
isActive: Boolean
"""
Name of the app.
"""
name: String
"""
Type of the app.
"""
type: AppTypeEnum
"""
Last 4 characters of the tokens.
Requires one of the following permissions: MANAGE_APPS, OWNER.
"""
tokens: [AppToken!]
"""
List of webhooks assigned to this app.
Requires one of the following permissions: MANAGE_APPS, OWNER.
"""
webhooks: [Webhook!]
"""
Description of this app.
"""
aboutApp: String
"""
Description of the data privacy defined for this app.
"""
dataPrivacy: String @deprecated(reason: "Use `dataPrivacyUrl` instead.")
"""
URL to details about the privacy policy on the app owner page.
"""
dataPrivacyUrl: String
"""
Homepage of the app.
"""
homepageUrl: String
"""
Support page for the app.
"""
supportUrl: String
"""
URL to iframe with the configuration for the app.
"""
configurationUrl: String @deprecated(reason: "Use `appUrl` instead.")
"""
URL to iframe with the app.
"""
appUrl: String
"""
URL to manifest used during app's installation.
"""
manifestUrl: String
"""
Version number of the app.
"""
version: String
"""
JWT token used to authenticate by third-party app.
"""
accessToken: String
"""
The App's author name.
"""
author: String
"""
App's dashboard extensions.
"""
extensions: [AppExtension!]!
"""
App's brand data.
"""
brand: AppBrand
"""
Circuit breaker state, if open, sync webhooks operation is disrupted.
Added in Saleor 3.21.
"""
breakerState: CircuitBreakerStateEnum!
"""
Circuit breaker last state change date.
Added in Saleor 3.21.
"""
breakerLastStateChange: DateTime
}
interface ObjectWithMetadata {
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
}
type MetadataItem {
"""
Key of a metadata item.
"""
key: String!
"""
Value of a metadata item.
"""
value: String!
}
"""
Metadata is a map of key-value pairs, both keys and values are `String`.
Example:
```
{
"key1": "value1",
"key2": "value2"
}
```
"""
scalar Metadata
"""
Represents a permission object in a friendly form.
"""
type Permission @doc(category: "Authentication") {
"""
Internal code for permission.
"""
code: PermissionEnum!
"""
Describe action(s) allowed to do by permission.
"""
name: String!
}
enum PermissionEnum @doc(category: "Users") {
MANAGE_USERS
MANAGE_STAFF
IMPERSONATE_USER
MANAGE_APPS
MANAGE_OBSERVABILITY
MANAGE_CHECKOUTS
HANDLE_CHECKOUTS
HANDLE_TAXES
MANAGE_TAXES
MANAGE_CHANNELS
MANAGE_DISCOUNTS
MANAGE_GIFT_CARD
MANAGE_MENUS
MANAGE_ORDERS
MANAGE_ORDERS_IMPORT
MANAGE_PAGES
MANAGE_PAGE_TYPES_AND_ATTRIBUTES
HANDLE_PAYMENTS
MANAGE_PLUGINS
MANAGE_PRODUCTS
MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES
MANAGE_SHIPPING
MANAGE_SETTINGS
MANAGE_TRANSLATIONS
}
"""
The `DateTime` scalar type represents a DateTime
value as specified by
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
"""
scalar DateTime
"""
Enum determining type of your App.
"""
enum AppTypeEnum @doc(category: "Apps") {
"""
Local Saleor App. The app is fully manageable from dashboard. You can change assigned permissions, add webhooks, or authentication token
"""
LOCAL
"""
Third party external App. Installation is fully automated. Saleor uses a defined App manifest to gather all required information.
"""
THIRDPARTY
}
"""
Represents token data.
"""
type AppToken implements Node @doc(category: "Apps") {
"""
The ID of the app token.
"""
id: ID!
"""
Name of the authenticated token.
"""
name: String
"""
Last 4 characters of the token.
"""
authToken: String
}
"""
Represents app data.
"""
type AppExtension implements Node @doc(category: "Apps") {
"""
The ID of the app extension.
"""
id: ID!
"""
List of the app extension's permissions.
"""
permissions: [Permission!]!
"""
Label of the extension to show in the dashboard.
"""
label: String!
"""
URL of a view where extension's iframe is placed.
"""
url: String!
"""
Place where given extension will be mounted.
"""
mount: AppExtensionMountEnum!
"""
Type of way how app extension will be opened.
"""
target: AppExtensionTargetEnum!
"""
The app assigned to app extension.
"""
app: App!
"""
JWT token used to authenticate by third-party app extension.
"""
accessToken: String
}
"""
All places where app extension can be mounted.
"""
enum AppExtensionMountEnum @doc(category: "Apps") {
CUSTOMER_OVERVIEW_CREATE
CUSTOMER_OVERVIEW_MORE_ACTIONS
CUSTOMER_DETAILS_MORE_ACTIONS
PRODUCT_OVERVIEW_CREATE
PRODUCT_OVERVIEW_MORE_ACTIONS
PRODUCT_DETAILS_MORE_ACTIONS
NAVIGATION_CATALOG
NAVIGATION_ORDERS
NAVIGATION_CUSTOMERS
NAVIGATION_DISCOUNTS
NAVIGATION_TRANSLATIONS
NAVIGATION_PAGES
ORDER_DETAILS_MORE_ACTIONS
ORDER_OVERVIEW_CREATE
ORDER_OVERVIEW_MORE_ACTIONS
}
"""
All available ways of opening an app extension.
POPUP - app's extension will be mounted as a popup window
APP_PAGE - redirect to app's page
"""
enum AppExtensionTargetEnum @doc(category: "Apps") {
POPUP
APP_PAGE
}
"""
Represents the app's brand data.
"""
type AppBrand @doc(category: "Apps") {
"""
App's logos details.
"""
logo: AppBrandLogo!
}
"""
Represents the app's brand logo data.
"""
type AppBrandLogo @doc(category: "Apps") {
"""
URL to the default logo image.
"""
default(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: IconThumbnailFormatEnum = ORIGINAL
): String!
}
"""
Thumbnail formats for icon images.
"""
enum IconThumbnailFormatEnum {
ORIGINAL
WEBP
}
"""
Enum determining the state of a circuit breaker.
"""
enum CircuitBreakerStateEnum @doc(category: "Apps") {
"""
The breaker is conducting (requests are passing through).
"""
CLOSED
"""
The breaker is in a trial period (to close or open). Note that unlike classic breaker patterns, this is not a state where we are throttling the number of requests, it's a state similar to CLOSED but with different thresholds.
"""
HALF_OPEN
"""
The breaker is tripped (no requests are passing). Breaker will enter half-open state after cooldown period.
"""
OPEN
}
type EventDeliveryCountableConnection {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [EventDeliveryCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
"""
The Relay compliant `PageInfo` type, containing data necessary to paginate this connection.
"""
type PageInfo {
"""
When paginating forwards, are there more items?
"""
hasNextPage: Boolean!
"""
When paginating backwards, are there more items?
"""
hasPreviousPage: Boolean!
"""
When paginating backwards, the cursor to continue.
"""
startCursor: String
"""
When paginating forwards, the cursor to continue.
"""
endCursor: String
}
type EventDeliveryCountableEdge {
"""
The item at the end of the edge.
"""
node: EventDelivery!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Event delivery.
"""
type EventDelivery implements Node {
"""
The ID of an event delivery.
"""
id: ID!
"""
Creation time of an event delivery.
"""
createdAt: DateTime!
"""
Event delivery status.
"""
status: EventDeliveryStatusEnum!
"""
Webhook event type.
"""
eventType: WebhookEventTypeEnum!
"""
Event delivery attempts.
"""
attempts(
"""
Event delivery sorter
"""
sortBy: EventDeliveryAttemptSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): EventDeliveryAttemptCountableConnection
"""
Event payload.
"""
payload: String
}
enum EventDeliveryStatusEnum @doc(category: "Webhooks") {
PENDING
SUCCESS
FAILED
}
type EventDeliveryAttemptCountableConnection {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [EventDeliveryAttemptCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type EventDeliveryAttemptCountableEdge {
"""
The item at the end of the edge.
"""
node: EventDeliveryAttempt!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Event delivery attempts.
"""
type EventDeliveryAttempt implements Node @doc(category: "Webhooks") {
"""
The ID of Event Delivery Attempt.
"""
id: ID!
"""
Event delivery creation date and time.
"""
createdAt: DateTime!
"""
Task id for delivery attempt.
"""
taskId: String
"""
Delivery attempt duration.
"""
duration: Float
"""
Delivery attempt response content.
"""
response: String
"""
Response headers for delivery attempt.
"""
responseHeaders: String
"""
Delivery attempt response status code.
"""
responseStatusCode: Int
"""
Request headers for delivery attempt.
"""
requestHeaders: String
"""
Event delivery status.
"""
status: EventDeliveryStatusEnum!
}
input EventDeliveryAttemptSortingInput @doc(category: "Webhooks") {
"""
Specifies the direction in which to sort attempts.
"""
direction: OrderDirection!
"""
Sort attempts by the selected field.
"""
field: EventDeliveryAttemptSortField!
}
enum OrderDirection {
"""
Specifies an ascending sort order.
"""
ASC
"""
Specifies a descending sort order.
"""
DESC
}
enum EventDeliveryAttemptSortField @doc(category: "Webhooks") {
"""
Sort event delivery attempts by created at.
"""
CREATED_AT
}
input EventDeliverySortingInput @doc(category: "Webhooks") {
"""
Specifies the direction in which to sort deliveries.
"""
direction: OrderDirection!
"""
Sort deliveries by the selected field.
"""
field: EventDeliverySortField!
}
enum EventDeliverySortField @doc(category: "Webhooks") {
"""
Sort event deliveries by created at.
"""
CREATED_AT
}
input EventDeliveryFilterInput {
status: EventDeliveryStatusEnum
eventType: WebhookEventTypeEnum
}
scalar JSONString
enum WebhookSampleEventTypeEnum @doc(category: "Webhooks") {
ACCOUNT_CONFIRMATION_REQUESTED
ACCOUNT_CHANGE_EMAIL_REQUESTED
ACCOUNT_EMAIL_CHANGED
ACCOUNT_SET_PASSWORD_REQUESTED
ACCOUNT_CONFIRMED
ACCOUNT_DELETE_REQUESTED
ACCOUNT_DELETED
ADDRESS_CREATED
ADDRESS_UPDATED
ADDRESS_DELETED
APP_INSTALLED
APP_UPDATED
APP_DELETED
APP_STATUS_CHANGED
ATTRIBUTE_CREATED
ATTRIBUTE_UPDATED
ATTRIBUTE_DELETED
ATTRIBUTE_VALUE_CREATED
ATTRIBUTE_VALUE_UPDATED
ATTRIBUTE_VALUE_DELETED
CATEGORY_CREATED
CATEGORY_UPDATED
CATEGORY_DELETED
CHANNEL_CREATED
CHANNEL_UPDATED
CHANNEL_DELETED
CHANNEL_STATUS_CHANGED
CHANNEL_METADATA_UPDATED
GIFT_CARD_CREATED
GIFT_CARD_UPDATED
GIFT_CARD_DELETED
GIFT_CARD_SENT
GIFT_CARD_STATUS_CHANGED
GIFT_CARD_METADATA_UPDATED
GIFT_CARD_EXPORT_COMPLETED
MENU_CREATED
MENU_UPDATED
MENU_DELETED
MENU_ITEM_CREATED
MENU_ITEM_UPDATED
MENU_ITEM_DELETED
ORDER_CREATED
ORDER_CONFIRMED
ORDER_PAID
ORDER_FULLY_PAID
ORDER_REFUNDED
ORDER_FULLY_REFUNDED
ORDER_UPDATED
ORDER_CANCELLED
ORDER_EXPIRED
ORDER_FULFILLED
ORDER_METADATA_UPDATED
ORDER_BULK_CREATED
FULFILLMENT_CREATED
FULFILLMENT_CANCELED
FULFILLMENT_APPROVED
FULFILLMENT_METADATA_UPDATED
FULFILLMENT_TRACKING_NUMBER_UPDATED
DRAFT_ORDER_CREATED
DRAFT_ORDER_UPDATED
DRAFT_ORDER_DELETED
SALE_CREATED
SALE_UPDATED
SALE_DELETED
SALE_TOGGLE
PROMOTION_CREATED
PROMOTION_UPDATED
PROMOTION_DELETED
PROMOTION_STARTED
PROMOTION_ENDED
PROMOTION_RULE_CREATED
PROMOTION_RULE_UPDATED
PROMOTION_RULE_DELETED
INVOICE_REQUESTED
INVOICE_DELETED
INVOICE_SENT
CUSTOMER_CREATED
CUSTOMER_UPDATED
CUSTOMER_DELETED
CUSTOMER_METADATA_UPDATED
COLLECTION_CREATED
COLLECTION_UPDATED
COLLECTION_DELETED
COLLECTION_METADATA_UPDATED
PRODUCT_CREATED
PRODUCT_UPDATED
PRODUCT_DELETED
PRODUCT_METADATA_UPDATED
PRODUCT_EXPORT_COMPLETED
PRODUCT_MEDIA_CREATED
PRODUCT_MEDIA_UPDATED
PRODUCT_MEDIA_DELETED
PRODUCT_VARIANT_CREATED
PRODUCT_VARIANT_UPDATED
PRODUCT_VARIANT_DELETED
PRODUCT_VARIANT_METADATA_UPDATED
PRODUCT_VARIANT_OUT_OF_STOCK
PRODUCT_VARIANT_BACK_IN_STOCK
PRODUCT_VARIANT_STOCK_UPDATED
CHECKOUT_CREATED
CHECKOUT_UPDATED
CHECKOUT_FULLY_AUTHORIZED
CHECKOUT_FULLY_PAID
CHECKOUT_METADATA_UPDATED
NOTIFY_USER
PAGE_CREATED
PAGE_UPDATED
PAGE_DELETED
PAGE_TYPE_CREATED
PAGE_TYPE_UPDATED
PAGE_TYPE_DELETED
PERMISSION_GROUP_CREATED
PERMISSION_GROUP_UPDATED
PERMISSION_GROUP_DELETED
SHIPPING_PRICE_CREATED
SHIPPING_PRICE_UPDATED
SHIPPING_PRICE_DELETED
SHIPPING_ZONE_CREATED
SHIPPING_ZONE_UPDATED
SHIPPING_ZONE_DELETED
SHIPPING_ZONE_METADATA_UPDATED
STAFF_CREATED
STAFF_UPDATED
STAFF_DELETED
STAFF_SET_PASSWORD_REQUESTED
TRANSACTION_ITEM_METADATA_UPDATED
TRANSLATION_CREATED
TRANSLATION_UPDATED
WAREHOUSE_CREATED
WAREHOUSE_UPDATED
WAREHOUSE_DELETED
WAREHOUSE_METADATA_UPDATED
VOUCHER_CREATED
VOUCHER_UPDATED
VOUCHER_DELETED
VOUCHER_CODES_CREATED
VOUCHER_CODES_DELETED
VOUCHER_METADATA_UPDATED
VOUCHER_CODE_EXPORT_COMPLETED
OBSERVABILITY
THUMBNAIL_CREATED
SHOP_METADATA_UPDATED
}
"""
Represents warehouse.
"""
type Warehouse implements Node & ObjectWithMetadata @doc(category: "Products") {
"""
The ID of the warehouse.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Warehouse name.
"""
name: String!
"""
Warehouse slug.
"""
slug: String!
"""
Warehouse email.
"""
email: String!
"""
Determine if the warehouse is private.
"""
isPrivate: Boolean!
"""
Address of the warehouse.
"""
address: Address!
"""
Warehouse company name.
"""
companyName: String! @deprecated(reason: "Use `Address.companyName` instead.")
"""
Click and collect options: local, all or disabled.
"""
clickAndCollectOption: WarehouseClickAndCollectOptionEnum!
"""
Shipping zones supported by the warehouse.
"""
shippingZones(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ShippingZoneCountableConnection!
"""
Stocks that belong to this warehouse.
Added in Saleor 3.20.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
stocks(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): StockCountableConnection
"""
External ID of this warehouse.
"""
externalReference: String
}
"""
Represents user address data.
"""
type Address implements Node & ObjectWithMetadata @doc(category: "Users") {
"""
The ID of the address.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The given name of the address.
"""
firstName: String!
"""
The family name of the address.
"""
lastName: String!
"""
Company or organization name.
"""
companyName: String!
"""
The first line of the address.
"""
streetAddress1: String!
"""
The second line of the address.
"""
streetAddress2: String!
"""
The city of the address.
"""
city: String!
"""
The district of the address.
"""
cityArea: String!
"""
The postal code of the address.
"""
postalCode: String!
"""
The country of the address.
"""
country: CountryDisplay!
"""
The country area of the address.
"""
countryArea: String!
"""
The phone number assigned the address.
"""
phone: String
"""
Address is user's default shipping address.
"""
isDefaultShippingAddress: Boolean
"""
Address is user's default billing address.
"""
isDefaultBillingAddress: Boolean
}
type CountryDisplay {
"""
Country code.
"""
code: String!
"""
Country name.
"""
country: String!
"""
Country tax.
"""
vat: VAT
@deprecated(
reason: "Always returns `null`. Use `TaxClassCountryRate` type to manage tax rates per country."
)
}
"""
Represents a VAT rate for a country.
"""
type VAT @doc(category: "Taxes") {
"""
Country code.
"""
countryCode: String!
"""
Standard VAT rate in percent.
"""
standardRate: Float
"""
Country's VAT rate exceptions for specific types of goods.
"""
reducedRates: [ReducedRate!]!
}
"""
Represents a reduced VAT rate for a particular type of goods.
"""
type ReducedRate @doc(category: "Taxes") {
"""
Reduced VAT rate in percent.
"""
rate: Float!
"""
A type of goods.
"""
rateType: String!
}
enum WarehouseClickAndCollectOptionEnum @doc(category: "Products") {
DISABLED
LOCAL
ALL
}
type ShippingZoneCountableConnection @doc(category: "Shipping") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [ShippingZoneCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type ShippingZoneCountableEdge @doc(category: "Shipping") {
"""
The item at the end of the edge.
"""
node: ShippingZone!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly.
"""
type ShippingZone implements Node & ObjectWithMetadata
@doc(category: "Shipping") {
"""
The ID of shipping zone.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Shipping zone name.
"""
name: String!
"""
Indicates if the shipping zone is default one.
"""
default: Boolean!
"""
Lowest and highest prices for the shipping.
"""
priceRange: MoneyRange
"""
List of countries available for the method.
"""
countries: [CountryDisplay!]!
"""
List of shipping methods available for orders shipped to countries within this shipping zone.
"""
shippingMethods: [ShippingMethodType!]
"""
List of warehouses for shipping zone.
"""
warehouses: [Warehouse!]!
"""
List of channels for shipping zone.
"""
channels: [Channel!]!
"""
Description of a shipping zone.
"""
description: String
}
"""
Represents a range of amounts of money.
"""
type MoneyRange {
"""
Lower bound of a price range.
"""
start: Money
"""
Upper bound of a price range.
"""
stop: Money
}
"""
Represents amount of money in specific currency.
"""
type Money {
"""
Currency code.
"""
currency: String!
"""
Amount of money.
"""
amount: Float!
}
"""
Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers.
"""
type ShippingMethodType implements Node & ObjectWithMetadata
@doc(category: "Shipping") {
"""
Shipping method ID.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Shipping method name.
"""
name: String!
"""
Shipping method description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Type of the shipping method.
"""
type: ShippingMethodTypeEnum
"""
Returns translated shipping method fields for the given language code.
"""
translation(
"""
A language code to return the translation for shipping method.
"""
languageCode: LanguageCodeEnum!
): ShippingMethodTranslation
"""
List of channels available for the method.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
channelListings: [ShippingMethodChannelListing!]
"""
The price of the cheapest variant (including discounts).
"""
maximumOrderPrice: Money
"""
The price of the cheapest variant (including discounts).
"""
minimumOrderPrice: Money
"""
Postal code ranges rule of exclusion or inclusion of the shipping method.
"""
postalCodeRules: [ShippingMethodPostalCodeRule!]
"""
List of excluded products for the shipping method.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
excludedProducts(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
"""
Minimum order weight to use this shipping method.
"""
minimumOrderWeight: Weight
"""
Maximum order weight to use this shipping method.
"""
maximumOrderWeight: Weight
"""
Maximum number of days for delivery.
"""
maximumDeliveryDays: Int
"""
Minimal number of days for delivery.
"""
minimumDeliveryDays: Int
"""
Tax class assigned to this shipping method.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClass: TaxClass
}
enum ShippingMethodTypeEnum @doc(category: "Shipping") {
PRICE
WEIGHT
}
"""
Represents shipping method translations.
"""
type ShippingMethodTranslation implements Node @doc(category: "Shipping") {
"""
The ID of the shipping method translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated shipping method name.
"""
name: String
"""
Translated description of the shipping method.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Represents the shipping method fields to translate.
"""
translatableContent: ShippingMethodTranslatableContent
}
type LanguageDisplay {
"""
ISO 639 representation of the language name.
"""
code: LanguageCodeEnum!
"""
Full name of the language.
"""
language: String!
}
enum LanguageCodeEnum {
AF
AF_NA
AF_ZA
AGQ
AGQ_CM
AK
AK_GH
AM
AM_ET
AR
AR_AE
AR_BH
AR_DJ
AR_DZ
AR_EG
AR_EH
AR_ER
AR_IL
AR_IQ
AR_JO
AR_KM
AR_KW
AR_LB
AR_LY
AR_MA
AR_MR
AR_OM
AR_PS
AR_QA
AR_SA
AR_SD
AR_SO
AR_SS
AR_SY
AR_TD
AR_TN
AR_YE
AS
AS_IN
ASA
ASA_TZ
AST
AST_ES
AZ
AZ_CYRL
AZ_CYRL_AZ
AZ_LATN
AZ_LATN_AZ
BAS
BAS_CM
BE
BE_BY
BEM
BEM_ZM
BEZ
BEZ_TZ
BG
BG_BG
BM
BM_ML
BN
BN_BD
BN_IN
BO
BO_CN
BO_IN
BR
BR_FR
BRX
BRX_IN
BS
BS_CYRL
BS_CYRL_BA
BS_LATN
BS_LATN_BA
CA
CA_AD
CA_ES
CA_ES_VALENCIA
CA_FR
CA_IT
CCP
CCP_BD
CCP_IN
CE
CE_RU
CEB
CEB_PH
CGG
CGG_UG
CHR
CHR_US
CKB
CKB_IQ
CKB_IR
CS
CS_CZ
CU
CU_RU
CY
CY_GB
DA
DA_DK
DA_GL
DAV
DAV_KE
DE
DE_AT
DE_BE
DE_CH
DE_DE
DE_IT
DE_LI
DE_LU
DJE
DJE_NE
DSB
DSB_DE
DUA
DUA_CM
DYO
DYO_SN
DZ
DZ_BT
EBU
EBU_KE
EE
EE_GH
EE_TG
EL
EL_CY
EL_GR
EN
EN_AE
EN_AG
EN_AI
EN_AS
EN_AT
EN_AU
EN_BB
EN_BE
EN_BI
EN_BM
EN_BS
EN_BW
EN_BZ
EN_CA
EN_CC
EN_CH
EN_CK
EN_CM
EN_CX
EN_CY
EN_DE
EN_DG
EN_DK
EN_DM
EN_ER
EN_FI
EN_FJ
EN_FK
EN_FM
EN_GB
EN_GD
EN_GG
EN_GH
EN_GI
EN_GM
EN_GU
EN_GY
EN_HK
EN_IE
EN_IL
EN_IM
EN_IN
EN_IO
EN_JE
EN_JM
EN_KE
EN_KI
EN_KN
EN_KY
EN_LC
EN_LR
EN_LS
EN_MG
EN_MH
EN_MO
EN_MP
EN_MS
EN_MT
EN_MU
EN_MW
EN_MY
EN_NA
EN_NF
EN_NG
EN_NL
EN_NR
EN_NU
EN_NZ
EN_PG
EN_PH
EN_PK
EN_PN
EN_PR
EN_PW
EN_RW
EN_SB
EN_SC
EN_SD
EN_SE
EN_SG
EN_SH
EN_SI
EN_SL
EN_SS
EN_SX
EN_SZ
EN_TC
EN_TK
EN_TO
EN_TT
EN_TV
EN_TZ
EN_UG
EN_UM
EN_US
EN_VC
EN_VG
EN_VI
EN_VU
EN_WS
EN_ZA
EN_ZM
EN_ZW
EO
ES
ES_AR
ES_BO
ES_BR
ES_BZ
ES_CL
ES_CO
ES_CR
ES_CU
ES_DO
ES_EA
ES_EC
ES_ES
ES_GQ
ES_GT
ES_HN
ES_IC
ES_MX
ES_NI
ES_PA
ES_PE
ES_PH
ES_PR
ES_PY
ES_SV
ES_US
ES_UY
ES_VE
ET
ET_EE
EU
EU_ES
EWO
EWO_CM
FA
FA_AF
FA_IR
FF
FF_ADLM
FF_ADLM_BF
FF_ADLM_CM
FF_ADLM_GH
FF_ADLM_GM
FF_ADLM_GN
FF_ADLM_GW
FF_ADLM_LR
FF_ADLM_MR
FF_ADLM_NE
FF_ADLM_NG
FF_ADLM_SL
FF_ADLM_SN
FF_LATN
FF_LATN_BF
FF_LATN_CM
FF_LATN_GH
FF_LATN_GM
FF_LATN_GN
FF_LATN_GW
FF_LATN_LR
FF_LATN_MR
FF_LATN_NE
FF_LATN_NG
FF_LATN_SL
FF_LATN_SN
FI
FI_FI
FIL
FIL_PH
FO
FO_DK
FO_FO
FR
FR_BE
FR_BF
FR_BI
FR_BJ
FR_BL
FR_CA
FR_CD
FR_CF
FR_CG
FR_CH
FR_CI
FR_CM
FR_DJ
FR_DZ
FR_FR
FR_GA
FR_GF
FR_GN
FR_GP
FR_GQ
FR_HT
FR_KM
FR_LU
FR_MA
FR_MC
FR_MF
FR_MG
FR_ML
FR_MQ
FR_MR
FR_MU
FR_NC
FR_NE
FR_PF
FR_PM
FR_RE
FR_RW
FR_SC
FR_SN
FR_SY
FR_TD
FR_TG
FR_TN
FR_VU
FR_WF
FR_YT
FUR
FUR_IT
FY
FY_NL
GA
GA_GB
GA_IE
GD
GD_GB
GL
GL_ES
GSW
GSW_CH
GSW_FR
GSW_LI
GU
GU_IN
GUZ
GUZ_KE
GV
GV_IM
HA
HA_GH
HA_NE
HA_NG
HAW
HAW_US
HE
HE_IL
HI
HI_IN
HR
HR_BA
HR_HR
HSB
HSB_DE
HU
HU_HU
HY
HY_AM
IA
ID
ID_ID
IG
IG_NG
II
II_CN
IS
IS_IS
IT
IT_CH
IT_IT
IT_SM
IT_VA
JA
JA_JP
JGO
JGO_CM
JMC
JMC_TZ
JV
JV_ID
KA
KA_GE
KAB
KAB_DZ
KAM
KAM_KE
KDE
KDE_TZ
KEA
KEA_CV
KHQ
KHQ_ML
KI
KI_KE
KK
KK_KZ
KKJ
KKJ_CM
KL
KL_GL
KLN
KLN_KE
KM
KM_KH
KN
KN_IN
KO
KO_KP
KO_KR
KOK
KOK_IN
KS
KS_ARAB
KS_ARAB_IN
KSB
KSB_TZ
KSF
KSF_CM
KSH
KSH_DE
KU
KU_TR
KW
KW_GB
KY
KY_KG
LAG
LAG_TZ
LB
LB_LU
LG
LG_UG
LKT
LKT_US
LN
LN_AO
LN_CD
LN_CF
LN_CG
LO
LO_LA
LRC
LRC_IQ
LRC_IR
LT
LT_LT
LU
LU_CD
LUO
LUO_KE
LUY
LUY_KE
LV
LV_LV
MAI
MAI_IN
MAS
MAS_KE
MAS_TZ
MER
MER_KE
MFE
MFE_MU
MG
MG_MG
MGH
MGH_MZ
MGO
MGO_CM
MI
MI_NZ
MK
MK_MK
ML
ML_IN
MN
MN_MN
MNI
MNI_BENG
MNI_BENG_IN
MR
MR_IN
MS
MS_BN
MS_ID
MS_MY
MS_SG
MT
MT_MT
MUA
MUA_CM
MY
MY_MM
MZN
MZN_IR
NAQ
NAQ_NA
NB
NB_NO
NB_SJ
ND
ND_ZW
NDS
NDS_DE
NDS_NL
NE
NE_IN
NE_NP
NL
NL_AW
NL_BE
NL_BQ
NL_CW
NL_NL
NL_SR
NL_SX
NMG
NMG_CM
NN
NN_NO
NNH
NNH_CM
NUS
NUS_SS
NYN
NYN_UG
OM
OM_ET
OM_KE
OR
OR_IN
OS
OS_GE
OS_RU
PA
PA_ARAB
PA_ARAB_PK
PA_GURU
PA_GURU_IN
PCM
PCM_NG
PL
PL_PL
PRG
PS
PS_AF
PS_PK
PT
PT_AO
PT_BR
PT_CH
PT_CV
PT_GQ
PT_GW
PT_LU
PT_MO
PT_MZ
PT_PT
PT_ST
PT_TL
QU
QU_BO
QU_EC
QU_PE
RM
RM_CH
RN
RN_BI
RO
RO_MD
RO_RO
ROF
ROF_TZ
RU
RU_BY
RU_KG
RU_KZ
RU_MD
RU_RU
RU_UA
RW
RW_RW
RWK
RWK_TZ
SAH
SAH_RU
SAQ
SAQ_KE
SAT
SAT_OLCK
SAT_OLCK_IN
SBP
SBP_TZ
SD
SD_ARAB
SD_ARAB_PK
SD_DEVA
SD_DEVA_IN
SE
SE_FI
SE_NO
SE_SE
SEH
SEH_MZ
SES
SES_ML
SG
SG_CF
SHI
SHI_LATN
SHI_LATN_MA
SHI_TFNG
SHI_TFNG_MA
SI
SI_LK
SK
SK_SK
SL
SL_SI
SMN
SMN_FI
SN
SN_ZW
SO
SO_DJ
SO_ET
SO_KE
SO_SO
SQ
SQ_AL
SQ_MK
SQ_XK
SR
SR_CYRL
SR_CYRL_BA
SR_CYRL_ME
SR_CYRL_RS
SR_CYRL_XK
SR_LATN
SR_LATN_BA
SR_LATN_ME
SR_LATN_RS
SR_LATN_XK
SU
SU_LATN
SU_LATN_ID
SV
SV_AX
SV_FI
SV_SE
SW
SW_CD
SW_KE
SW_TZ
SW_UG
TA
TA_IN
TA_LK
TA_MY
TA_SG
TE
TE_IN
TEO
TEO_KE
TEO_UG
TG
TG_TJ
TH
TH_TH
TI
TI_ER
TI_ET
TK
TK_TM
TO
TO_TO
TR
TR_CY
TR_TR
TT
TT_RU
TWQ
TWQ_NE
TZM
TZM_MA
UG
UG_CN
UK
UK_UA
UR
UR_IN
UR_PK
UZ
UZ_ARAB
UZ_ARAB_AF
UZ_CYRL
UZ_CYRL_UZ
UZ_LATN
UZ_LATN_UZ
VAI
VAI_LATN
VAI_LATN_LR
VAI_VAII
VAI_VAII_LR
VI
VI_VN
VO
VUN
VUN_TZ
WAE
WAE_CH
WO
WO_SN
XH
XH_ZA
XOG
XOG_UG
YAV
YAV_CM
YI
YO
YO_BJ
YO_NG
YUE
YUE_HANS
YUE_HANS_CN
YUE_HANT
YUE_HANT_HK
ZGH
ZGH_MA
ZH
ZH_HANS
ZH_HANS_CN
ZH_HANS_HK
ZH_HANS_MO
ZH_HANS_SG
ZH_HANT
ZH_HANT_HK
ZH_HANT_MO
ZH_HANT_TW
ZU
ZU_ZA
}
"""
Represents shipping method's original translatable fields and related translations.
"""
type ShippingMethodTranslatableContent implements Node
@doc(category: "Shipping") {
"""
The ID of the shipping method translatable content.
"""
id: ID!
"""
The ID of the shipping method to translate.
"""
shippingMethodId: ID!
"""
Shipping method name to translate.
"""
name: String!
"""
Shipping method description to translate.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Returns translated shipping method fields for the given language code.
"""
translation(
"""
A language code to return the translation for shipping method.
"""
languageCode: LanguageCodeEnum!
): ShippingMethodTranslation
"""
Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingMethod: ShippingMethodType
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents shipping method channel listing.
"""
type ShippingMethodChannelListing implements Node @doc(category: "Shipping") {
"""
The ID of shipping method channel listing.
"""
id: ID!
"""
The channel associated with the shipping method channel listing.
"""
channel: Channel!
"""
Maximum order price.
"""
maximumOrderPrice: Money
"""
Minimum order price.
"""
minimumOrderPrice: Money
"""
Price of the shipping method in the associated channel.
"""
price: Money
}
"""
Represents channel.
"""
type Channel implements Node & ObjectWithMetadata @doc(category: "Channels") {
"""
The ID of the channel.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Slug of the channel.
"""
slug: String!
"""
Name of the channel.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
name: String!
"""
Whether the channel is active.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
isActive: Boolean!
"""
A currency that is assigned to the channel.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
currencyCode: String!
"""
Whether a channel has associated orders.
Requires one of the following permissions: MANAGE_CHANNELS.
"""
hasOrders: Boolean!
"""
Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
defaultCountry: CountryDisplay!
"""
List of warehouses assigned to this channel.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
warehouses: [Warehouse!]!
"""
List of shippable countries for the channel.
"""
countries: [CountryDisplay!]
"""
Shipping methods that are available for the channel.
"""
availableShippingMethodsPerCountry(
countries: [CountryCode!]
): [ShippingMethodsPerCountry!]
"""
Define the stock setting for this channel.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
stockSettings: StockSettings!
"""
Channel-specific order settings.
Requires one of the following permissions: MANAGE_CHANNELS, MANAGE_ORDERS.
"""
orderSettings: OrderSettings!
"""
Channel-specific checkout settings.
Requires one of the following permissions: MANAGE_CHANNELS, MANAGE_CHECKOUTS.
"""
checkoutSettings: CheckoutSettings!
"""
Channel-specific payment settings.
Requires one of the following permissions: MANAGE_CHANNELS, HANDLE_PAYMENTS.
"""
paymentSettings: PaymentSettings!
"""
Channel specific tax configuration.
Added in Saleor 3.20.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxConfiguration: TaxConfiguration!
}
"""
List of shipping methods available for the country.
"""
type ShippingMethodsPerCountry @doc(category: "Shipping") {
"""
The country code.
"""
countryCode: CountryCode!
"""
List of available shipping methods.
"""
shippingMethods: [ShippingMethod!]
}
"""
Represents country codes defined by the ISO 3166-1 alpha-2 standard.
The `EU` value is DEPRECATED and will be removed in Saleor 3.21.
"""
enum CountryCode {
AF
AX
AL
DZ
AS
AD
AO
AI
AQ
AG
AR
AM
AW
AU
AT
AZ
BS
BH
BD
BB
BY
BE
BZ
BJ
BM
BT
BO
BQ
BA
BW
BV
BR
IO
BN
BG
BF
BI
CV
KH
CM
CA
KY
CF
TD
CL
CN
CX
CC
CO
KM
CG
CD
CK
CR
CI
HR
CU
CW
CY
CZ
DK
DJ
DM
DO
EC
EG
SV
GQ
ER
EE
SZ
ET
EU
FK
FO
FJ
FI
FR
GF
PF
TF
GA
GM
GE
DE
GH
GI
GR
GL
GD
GP
GU
GT
GG
GN
GW
GY
HT
HM
VA
HN
HK
HU
IS
IN
ID
IR
IQ
IE
IM
IL
IT
JM
JP
JE
JO
KZ
KE
KI
XK
KW
KG
LA
LV
LB
LS
LR
LY
LI
LT
LU
MO
MG
MW
MY
MV
ML
MT
MH
MQ
MR
MU
YT
MX
FM
MD
MC
MN
ME
MS
MA
MZ
MM
NA
NR
NP
NL
NC
NZ
NI
NE
NG
NU
NF
KP
MK
MP
NO
OM
PK
PW
PS
PA
PG
PY
PE
PH
PN
PL
PT
PR
QA
RE
RO
RU
RW
BL
SH
KN
LC
MF
PM
VC
WS
SM
ST
SA
SN
RS
SC
SL
SG
SX
SK
SI
SB
SO
ZA
GS
KR
SS
ES
LK
SD
SR
SJ
SE
CH
SY
TW
TJ
TZ
TH
TL
TG
TK
TO
TT
TN
TR
TM
TC
TV
UG
UA
AE
GB
UM
US
UY
UZ
VU
VE
VN
VG
VI
WF
EH
YE
ZM
ZW
}
"""
Shipping methods that can be used as means of shipping for orders and checkouts.
"""
type ShippingMethod implements Node & ObjectWithMetadata
@doc(category: "Shipping") {
"""
Unique ID of ShippingMethod available for Order.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Type of the shipping method.
"""
type: ShippingMethodTypeEnum @deprecated
"""
Shipping method name.
"""
name: String!
"""
Shipping method description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Maximum delivery days for this shipping method.
"""
maximumDeliveryDays: Int
"""
Minimum delivery days for this shipping method.
"""
minimumDeliveryDays: Int
"""
Maximum order weight for this shipping method.
"""
maximumOrderWeight: Weight @deprecated
"""
Minimum order weight for this shipping method.
"""
minimumOrderWeight: Weight @deprecated
"""
Returns translated shipping method fields for the given language code.
"""
translation(
"""
A language code to return the translation for shipping method.
"""
languageCode: LanguageCodeEnum!
): ShippingMethodTranslation
"""
The price of selected shipping method.
"""
price: Money!
"""
Maximum order price for this shipping method.
"""
maximumOrderPrice: Money
"""
Minimal order price for this shipping method.
"""
minimumOrderPrice: Money
"""
Describes if this shipping method is active and can be selected.
"""
active: Boolean!
"""
Message connected to this shipping method.
"""
message: String
}
"""
Represents weight value in a specific weight unit.
"""
type Weight {
"""
Weight unit.
"""
unit: WeightUnitsEnum!
"""
Weight value. Returns a value with maximal three decimal places
"""
value: Float!
}
enum WeightUnitsEnum {
G
LB
OZ
KG
TONNE
}
"""
Represents the channel stock settings.
"""
type StockSettings @doc(category: "Products") {
"""
Allocation strategy defines the preference of warehouses for allocations and reservations.
"""
allocationStrategy: AllocationStrategyEnum!
}
"""
Determine the allocation strategy for the channel.
PRIORITIZE_SORTING_ORDER - allocate stocks according to the warehouses' order
within the channel
PRIORITIZE_HIGH_STOCK - allocate stock in a warehouse with the most stock
"""
enum AllocationStrategyEnum @doc(category: "Products") {
PRIORITIZE_SORTING_ORDER
PRIORITIZE_HIGH_STOCK
}
"""
Represents the channel-specific order settings.
"""
type OrderSettings {
"""
When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately.
"""
automaticallyConfirmAllNewOrders: Boolean!
"""
When enabled, all non-shippable gift card orders will be fulfilled automatically.
"""
automaticallyFulfillNonShippableGiftCard: Boolean!
"""
Expiration time in minutes. Default null - means do not expire any orders.
"""
expireOrdersAfter: Minute
"""
Determine what strategy will be used to mark the order as paid. Based on the chosen option, the proper object will be created and attached to the order when it's manually marked as paid.
`PAYMENT_FLOW` - [default option] creates the `Payment` object.
`TRANSACTION_FLOW` - creates the `TransactionItem` object.
"""
markAsPaidStrategy: MarkAsPaidStrategyEnum!
"""
The time in days after expired orders will be deleted.
"""
deleteExpiredOrdersAfter: Day!
"""
Determine if it is possible to place unpaid order by calling `checkoutComplete` mutation.
"""
allowUnpaidOrders: Boolean!
"""
Determine if voucher applied on draft order should be count toward voucher usage.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
includeDraftOrderInVoucherUsage: Boolean!
"""
Time in hours after which the draft order line price will be refreshed.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
draftOrderLinePriceFreezePeriod: Hour
"""
This flag only affects orders created from checkout and applies specifically to vouchers of the types: `SPECIFIC_PRODUCT` and `ENTIRE_ORDER` with `applyOncePerOrder` enabled.
- When legacy propagation is enabled, discounts from these vouchers are represented as `OrderDiscount` objects, attached to the order and returned in the `Order.discounts` field. Additionally, percentage-based vouchers are converted to fixed-value discounts.
- When legacy propagation is disabled, discounts are represented as `OrderLineDiscount` objects, attached to individual lines and returned in the `OrderLine.discounts` field. In this case, percentage-based vouchers retain their original type.
In future releases, `OrderLineDiscount` will become the default behavior, and this flag will be deprecated and removed.
Added in Saleor 3.21.
"""
useLegacyLineDiscountPropagation: Boolean!
}
"""
The `Minute` scalar type represents number of minutes by integer value.
"""
scalar Minute
"""
Determine the mark as paid strategy for the channel.
TRANSACTION_FLOW - new orders marked as paid will receive a
`TransactionItem` object, that will cover the `order.total`.
PAYMENT_FLOW - new orders marked as paid will receive a
`Payment` object, that will cover the `order.total`.
"""
enum MarkAsPaidStrategyEnum @doc(category: "Channels") {
TRANSACTION_FLOW
PAYMENT_FLOW
}
"""
The `Day` scalar type represents number of days by integer value.
"""
scalar Day
"""
The `Hour` scalar type represents number of hours by integer value.
"""
scalar Hour
"""
Represents the channel-specific checkout settings.
"""
type CheckoutSettings {
"""
Default `true`. Determines if the checkout mutations should use legacy error flow. In legacy flow, all mutations can raise an exception unrelated to the requested action - (e.g. out-of-stock exception when updating checkoutShippingAddress.) If `false`, the errors will be aggregated in `checkout.problems` field. Some of the `problems` can block the finalizing checkout process. The legacy flow will be removed in Saleor 4.0. The flow with `checkout.problems` will be the default one.
"""
useLegacyErrorFlow: Boolean!
"""
Default `false`. Determines if the paid checkouts should be automatically completed. This setting applies only to checkouts where payment was processed through transactions.When enabled, the checkout will be automatically completed once the checkout `charge_status` reaches `FULL`. This occurs when the total sum of charged and authorized transaction amounts equals or exceeds the checkout's total amount.
Added in Saleor 3.20.
"""
automaticallyCompleteFullyPaidCheckouts: Boolean!
}
"""
Represents the channel-specific payment settings.
"""
type PaymentSettings {
"""
Determine the transaction flow strategy to be used. Include the selected option in the payload sent to the payment app, as a requested action for the transaction.
"""
defaultTransactionFlowStrategy: TransactionFlowStrategyEnum!
"""
Determine if the funds for expired checkouts should be released automatically.
Added in Saleor 3.20.
"""
releaseFundsForExpiredCheckouts: Boolean
"""
The time in hours after which funds for expired checkouts will be released.
Added in Saleor 3.20.
"""
checkoutTtlBeforeReleasingFunds: Hour
"""
Specifies the earliest date on which funds for expired checkouts can begin to be released. Expired checkouts dated before this cut-off will not have their funds released. Additionally, no funds will be released for checkouts that are more than one year old, regardless of the cut-off date.
Added in Saleor 3.20.
"""
checkoutReleaseFundsCutOffDate: DateTime
}
"""
Determine the transaction flow strategy.
AUTHORIZATION - the processed transaction should be only authorized
CHARGE - the processed transaction should be charged.
"""
enum TransactionFlowStrategyEnum @doc(category: "Payments") {
AUTHORIZATION
CHARGE
}
"""
Channel-specific tax configuration.
"""
type TaxConfiguration implements Node & ObjectWithMetadata
@doc(category: "Taxes") {
"""
The ID of the object.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
A channel to which the tax configuration applies to.
"""
channel: Channel!
"""
Determines whether taxes are charged in the given channel.
"""
chargeTaxes: Boolean!
"""
The default strategy to use for tax calculation in the given channel. Taxes can be calculated either using user-defined flat rates or with a tax app. Empty value means that no method is selected and taxes are not calculated.
"""
taxCalculationStrategy: TaxCalculationStrategy
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean!
"""
Determines whether prices are entered with the tax included.
"""
pricesEnteredWithTax: Boolean!
"""
List of country-specific exceptions in tax configuration.
"""
countries: [TaxConfigurationPerCountry!]!
"""
The tax app `App.identifier` that will be used to calculate the taxes for the given channel. Empty value for `TAX_APP` set as `taxCalculationStrategy` means that Saleor will iterate over all installed tax apps. If multiple tax apps exist with provided tax app id use the `App` with newest `created` date. Will become mandatory in 4.0 for `TAX_APP` `taxCalculationStrategy`.
Added in Saleor 3.19.
"""
taxAppId: String
"""
Determines whether to use weighted tax for shipping. When set to true, the tax rate for shipping will be calculated based on the weighted average of tax rates from the order or checkout lines.
Added in Saleor 3.21.
"""
useWeightedTaxForShipping: Boolean
}
enum TaxCalculationStrategy @doc(category: "Taxes") {
FLAT_RATES
TAX_APP
}
"""
Country-specific exceptions of a channel's tax configuration.
"""
type TaxConfigurationPerCountry @doc(category: "Taxes") {
"""
Country in which this configuration applies.
"""
country: CountryDisplay!
"""
Determines whether taxes are charged in this country.
"""
chargeTaxes: Boolean!
"""
A country-specific strategy to use for tax calculation. Taxes can be calculated either using user-defined flat rates or with a tax app. If not provided, use the value from the channel's tax configuration.
"""
taxCalculationStrategy: TaxCalculationStrategy
"""
Determines whether displayed prices should include taxes for this country.
"""
displayGrossPrices: Boolean!
"""
The tax app `App.identifier` that will be used to calculate the taxes for the given channel and country. If not provided, use the value from the channel's tax configuration.
Added in Saleor 3.19.
"""
taxAppId: String
"""
Determines whether to use weighted tax for shipping. When set to true, the tax rate for shipping will be calculated based on the weighted average of tax rates from the order or checkout lines.
Added in Saleor 3.21.
"""
useWeightedTaxForShipping: Boolean
}
"""
Represents shipping method postal code rule.
"""
type ShippingMethodPostalCodeRule implements Node @doc(category: "Shipping") {
"""
The ID of the object.
"""
id: ID!
"""
Start address range.
"""
start: String
"""
End address range.
"""
end: String
"""
Inclusion type of the postal code rule.
"""
inclusionType: PostalCodeRuleInclusionTypeEnum
}
enum PostalCodeRuleInclusionTypeEnum @doc(category: "Shipping") {
INCLUDE
EXCLUDE
}
type ProductCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [ProductCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type ProductCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: Product!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Represents an individual item for sale in the storefront.
"""
type Product implements Node & ObjectWithMetadata @doc(category: "Products") {
"""
The ID of the product.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
SEO title of the product.
"""
seoTitle: String
"""
SEO description of the product.
"""
seoDescription: String
"""
SEO description of the product.
"""
name: String!
"""
Description of the product.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Type of the product.
"""
productType: ProductType!
"""
Slug of the product.
"""
slug: String!
category: Category
"""
The date and time when the product was created.
"""
created: DateTime!
"""
The date and time when the product was last updated.
"""
updatedAt: DateTime!
chargeTaxes: Boolean!
@deprecated(
reason: "Use `Channel.taxConfiguration` field to determine whether tax collection is enabled."
)
"""
Weight of the product.
"""
weight: Weight
"""
Default variant of the product.
"""
defaultVariant: ProductVariant
"""
Rating of the product.
"""
rating: Float
"""
Channel given to retrieve this product. Also used by federation gateway to resolve this object in a federated query.
"""
channel: String
"""
Description of the product.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Thumbnail of the product.
"""
thumbnail(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): Image
"""
Lists the storefront product's pricing, the current price and discounts, only meant for displaying.
"""
pricing(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
): ProductPricingInfo
"""
Whether the product is in stock, set as available for purchase in the given channel, and published.
"""
isAvailable(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
): Boolean
"""
A type of tax. Assigned by enabled tax gateway
"""
taxType: TaxType @deprecated(reason: "Use `taxClass` field instead.")
"""
Get a single attribute attached to product by attribute slug.
"""
attribute(
"""
Slug of the attribute
"""
slug: String!
): SelectedAttribute
"""
List of attributes assigned to this product.
"""
attributes: [SelectedAttribute!]!
"""
List of availability in channels for the product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
channelListings: [ProductChannelListing!]
"""
Get a single product media by ID.
"""
mediaById(
"""
ID of a product media.
"""
id: ID
): ProductMedia
"""
Get a single product image by ID.
"""
imageById(
"""
ID of a product image.
"""
id: ID
): ProductImage @deprecated(reason: "Use the `mediaById` field instead.")
"""
Get a single variant by SKU or ID.
"""
variant(
"""
ID of the variant.
"""
id: ID
"""
SKU of the variant.
"""
sku: String
): ProductVariant @deprecated(reason: "Use top-level `variant` query.")
"""
List of variants for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
variants: [ProductVariant!]
@deprecated(reason: "Use `productVariants` field instead.")
"""
List of variants for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
Added in Saleor 3.21.
"""
productVariants(
"""
Filtering options for product variant.
"""
filter: ProductVariantFilterInput
"""
Where filtering options.
"""
where: ProductVariantWhereInput
"""
Sort products variants.
"""
sortBy: ProductVariantSortingInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductVariantCountableConnection
"""
List of media for the product.
"""
media(
"""
Sort media.
"""
sortBy: MediaSortingInput
): [ProductMedia!]
"""
List of images for the product.
"""
images: [ProductImage!] @deprecated(reason: "Use the `media` field instead.")
"""
List of collections for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
collections: [Collection!]
"""
Returns translated product fields for the given language code.
"""
translation(
"""
A language code to return the translation for product.
"""
languageCode: LanguageCodeEnum!
): ProductTranslation
"""
Date when product is available for purchase.
"""
availableForPurchase: Date
@deprecated(
reason: "Use the `availableForPurchaseAt` field to fetch the available for purchase date."
)
"""
Date when product is available for purchase.
"""
availableForPurchaseAt: DateTime
"""
Refers to a state that can be set by admins to control whether a product is available for purchase in storefronts. This does not guarantee the availability of stock. When set to `False`, this product is still visible to customers, but it cannot be purchased.
"""
isAvailableForPurchase: Boolean
"""
Tax class assigned to this product type. All products of this product type use this tax class, unless it's overridden in the `Product` type.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClass: TaxClass
"""
External ID of this product.
"""
externalReference: String
}
"""
Represents a type of product. It defines what attributes are available to products of this type.
"""
type ProductType implements Node & ObjectWithMetadata
@doc(category: "Products") {
"""
The ID of the product type.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Name of the product type.
"""
name: String!
"""
Slug of the product type.
"""
slug: String!
"""
Whether the product type has variants.
"""
hasVariants: Boolean!
"""
Whether shipping is required for this product type.
"""
isShippingRequired: Boolean!
"""
Whether the product type is digital.
"""
isDigital: Boolean!
"""
Weight of the product type.
"""
weight: Weight
"""
The product type kind.
"""
kind: ProductTypeKindEnum!
"""
List of products of this type.
"""
products(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
@deprecated(
reason: "Use the top-level `products` query with the `productTypes` filter."
)
"""
A type of tax. Assigned by enabled tax gateway
"""
taxType: TaxType @deprecated(reason: "Use `taxClass` field instead.")
"""
Tax class assigned to this product type. All products of this product type use this tax class, unless it's overridden in the `Product` type.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClass: TaxClass
"""
Variant attributes of that product type.
"""
variantAttributes(
"""
Define scope of returned attributes.
"""
variantSelection: VariantAttributeScope
): [Attribute!]
@deprecated(reason: "Use `assignedVariantAttributes` instead.")
"""
Variant attributes of that product type with attached variant selection.
"""
assignedVariantAttributes(
"""
Define scope of returned attributes.
"""
variantSelection: VariantAttributeScope
): [AssignedVariantAttribute!]
"""
Product attributes of that product type.
"""
productAttributes: [Attribute!]
"""
List of attributes which can be assigned to this product type.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
availableAttributes(
filter: AttributeFilterInput
where: AttributeWhereInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AttributeCountableConnection
}
enum ProductTypeKindEnum @doc(category: "Products") {
NORMAL
GIFT_CARD
}
"""
Representation of tax types fetched from tax gateway.
"""
type TaxType @doc(category: "Taxes") {
"""
Description of the tax type.
"""
description: String
"""
External tax code used to identify given tax group.
"""
taxCode: String
}
"""
Tax class is a named object used to define tax rates per country. Tax class can be assigned to product types, products and shipping methods to define their tax rates.
"""
type TaxClass implements Node & ObjectWithMetadata @doc(category: "Taxes") {
"""
The ID of the object.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Name of the tax class.
"""
name: String!
"""
Country-specific tax rates for this tax class.
"""
countries: [TaxClassCountryRate!]!
}
"""
Tax rate for a country. When tax class is null, it represents the default tax rate for that country; otherwise it's a country tax rate specific to the given tax class.
"""
type TaxClassCountryRate @doc(category: "Taxes") {
"""
Country in which this tax rate applies.
"""
country: CountryDisplay!
"""
Tax rate value.
"""
rate: Float!
"""
Related tax class.
"""
taxClass: TaxClass
}
"""
Custom attribute of a product. Attributes can be assigned to products and variants at the product type level.
"""
type Attribute implements Node & ObjectWithMetadata
@doc(category: "Attributes") {
"""
The ID of the attribute.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The input type to use for entering attribute values in the dashboard.
"""
inputType: AttributeInputTypeEnum
"""
The entity type which can be used as a reference.
"""
entityType: AttributeEntityTypeEnum
"""
Name of an attribute displayed in the interface.
"""
name: String
"""
Internal representation of an attribute name.
"""
slug: String
"""
The attribute type.
"""
type: AttributeTypeEnum
"""
The unit of attribute values.
"""
unit: MeasurementUnitsEnum
"""
List of attribute's values.
"""
choices(
"""
Sort attribute choices.
"""
sortBy: AttributeChoicesSortingInput
"""
Filtering options for attribute choices.
"""
filter: AttributeValueFilterInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AttributeValueCountableConnection
"""
Whether the attribute requires values to be passed or not. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
valueRequired: Boolean!
"""
Whether the attribute should be visible or not in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
visibleInStorefront: Boolean!
"""
Whether the attribute can be filtered in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
filterableInStorefront: Boolean! @deprecated
"""
Whether the attribute can be filtered in dashboard. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
filterableInDashboard: Boolean!
"""
Whether the attribute can be displayed in the admin product list. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
availableInGrid: Boolean! @deprecated
"""
The position of the attribute in the storefront navigation (0 by default). Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
storefrontSearchPosition: Int! @deprecated
"""
Returns translated attribute fields for the given language code.
"""
translation(
"""
A language code to return the translation for attribute.
"""
languageCode: LanguageCodeEnum!
): AttributeTranslation
"""
Flag indicating that attribute has predefined choices.
"""
withChoices: Boolean!
"""
A list of product types that use this attribute as a product attribute.
"""
productTypes(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductTypeCountableConnection!
"""
A list of product types that use this attribute as a product variant attribute.
"""
productVariantTypes(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductTypeCountableConnection!
"""
External ID of this attribute.
"""
externalReference: String
}
enum AttributeInputTypeEnum @doc(category: "Attributes") {
DROPDOWN
MULTISELECT
FILE
REFERENCE
NUMERIC
RICH_TEXT
PLAIN_TEXT
SWATCH
BOOLEAN
DATE
DATE_TIME
}
enum AttributeEntityTypeEnum @doc(category: "Attributes") {
PAGE
PRODUCT
PRODUCT_VARIANT
}
enum AttributeTypeEnum @doc(category: "Attributes") {
PRODUCT_TYPE
PAGE_TYPE
}
enum MeasurementUnitsEnum {
MM
CM
DM
M
KM
FT
YD
INCH
SQ_MM
SQ_CM
SQ_DM
SQ_M
SQ_KM
SQ_FT
SQ_YD
SQ_INCH
CUBIC_MILLIMETER
CUBIC_CENTIMETER
CUBIC_DECIMETER
CUBIC_METER
LITER
CUBIC_FOOT
CUBIC_INCH
CUBIC_YARD
QT
PINT
FL_OZ
ACRE_IN
ACRE_FT
G
LB
OZ
KG
TONNE
}
type AttributeValueCountableConnection @doc(category: "Attributes") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [AttributeValueCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type AttributeValueCountableEdge @doc(category: "Attributes") {
"""
The item at the end of the edge.
"""
node: AttributeValue!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Represents a value of an attribute.
"""
type AttributeValue implements Node @doc(category: "Attributes") {
"""
The ID of the attribute value.
"""
id: ID!
"""
Name of a value displayed in the interface.
"""
name: String
"""
Internal representation of a value (unique per attribute).
"""
slug: String
"""
Represent value of the attribute value (e.g. color values for swatch attributes).
"""
value: String
"""
Returns translated attribute value fields for the given language code.
"""
translation(
"""
A language code to return the translation for attribute value.
"""
languageCode: LanguageCodeEnum!
): AttributeValueTranslation
"""
The input type to use for entering attribute values in the dashboard.
"""
inputType: AttributeInputTypeEnum
"""
The ID of the attribute reference.
"""
reference: ID
"""
Represents file URL and content type (if attribute value is a file).
"""
file: File
"""
Represents the text of the attribute value, includes formatting.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
"""
Represents the text of the attribute value, plain text without formatting.
"""
plainText: String
"""
Represents the boolean value of the attribute value.
"""
boolean: Boolean
"""
Represents the date value of the attribute value.
"""
date: Date
"""
Represents the date/time value of the attribute value.
"""
dateTime: DateTime
"""
External ID of this attribute value.
"""
externalReference: String
}
"""
Represents attribute value translations.
"""
type AttributeValueTranslation implements Node @doc(category: "Attributes") {
"""
The ID of the attribute value translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated attribute value name.
"""
name: String!
"""
Translated rich-text attribute value.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
"""
Translated plain text attribute value .
"""
plainText: String
"""
Represents the attribute value fields to translate.
"""
translatableContent: AttributeValueTranslatableContent
}
"""
Represents attribute value's original translatable fields and related translations.
"""
type AttributeValueTranslatableContent implements Node
@doc(category: "Attributes") {
"""
The ID of the attribute value translatable content.
"""
id: ID!
"""
The ID of the attribute value to translate.
"""
attributeValueId: ID!
"""
Name of the attribute value to translate.
"""
name: String!
"""
Attribute value.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
"""
Attribute plain text value.
"""
plainText: String
"""
Returns translated attribute value fields for the given language code.
"""
translation(
"""
A language code to return the translation for attribute value.
"""
languageCode: LanguageCodeEnum!
): AttributeValueTranslation
"""
Represents a value of an attribute.
"""
attributeValue: AttributeValue
@deprecated(reason: "Get model fields from the root level queries.")
"""
Associated attribute that can be translated.
"""
attribute: AttributeTranslatableContent
}
"""
Represents attribute's original translatable fields and related translations.
"""
type AttributeTranslatableContent implements Node @doc(category: "Attributes") {
"""
The ID of the attribute translatable content.
"""
id: ID!
"""
The ID of the attribute to translate.
"""
attributeId: ID!
"""
Name of the attribute to translate.
"""
name: String!
"""
Returns translated attribute fields for the given language code.
"""
translation(
"""
A language code to return the translation for attribute.
"""
languageCode: LanguageCodeEnum!
): AttributeTranslation
"""
Custom attribute of a product.
"""
attribute: Attribute
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents attribute translations.
"""
type AttributeTranslation implements Node @doc(category: "Attributes") {
"""
The ID of the attribute translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated attribute name.
"""
name: String!
"""
Represents the attribute fields to translate.
"""
translatableContent: AttributeTranslatableContent
}
type File {
"""
The URL of the file.
"""
url: String!
"""
Content type of the file.
"""
contentType: String
}
"""
The `Date` scalar type represents a Date
value as specified by
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
"""
scalar Date
input AttributeChoicesSortingInput @doc(category: "Attributes") {
"""
Specifies the direction in which to sort attribute choices.
"""
direction: OrderDirection!
"""
Sort attribute choices by the selected field.
"""
field: AttributeChoicesSortField!
}
enum AttributeChoicesSortField @doc(category: "Attributes") {
"""
Sort attribute choice by name.
"""
NAME
"""
Sort attribute choice by slug.
"""
SLUG
}
input AttributeValueFilterInput @doc(category: "Attributes") {
search: String
ids: [ID!]
slugs: [String!]
}
type ProductTypeCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [ProductTypeCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type ProductTypeCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: ProductType!
"""
A cursor for use in pagination.
"""
cursor: String!
}
enum VariantAttributeScope @doc(category: "Products") {
ALL
VARIANT_SELECTION
NOT_VARIANT_SELECTION
}
"""
Represents assigned attribute to variant with variant selection attached.
"""
type AssignedVariantAttribute @doc(category: "Attributes") {
"""
Attribute assigned to variant.
"""
attribute: Attribute!
"""
Determines, whether assigned attribute is allowed for variant selection. Supported variant types for variant selection are: ['dropdown', 'boolean', 'swatch', 'numeric']
"""
variantSelection: Boolean!
}
type AttributeCountableConnection @doc(category: "Attributes") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [AttributeCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type AttributeCountableEdge @doc(category: "Attributes") {
"""
The item at the end of the edge.
"""
node: Attribute!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input AttributeFilterInput @doc(category: "Attributes") {
valueRequired: Boolean
isVariantOnly: Boolean
visibleInStorefront: Boolean
filterableInStorefront: Boolean
filterableInDashboard: Boolean
availableInGrid: Boolean
metadata: [MetadataFilter!]
search: String
ids: [ID!]
type: AttributeTypeEnum
inCollection: ID
inCategory: ID
slugs: [String!]
"""
Specifies the channel by which the data should be filtered.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
}
input MetadataFilter {
"""
Key of a metadata item.
"""
key: String!
"""
Value of a metadata item.
"""
value: String
}
"""
Where filtering options.
"""
input AttributeWhereInput @doc(category: "Attributes") {
metadata: [MetadataFilter!]
ids: [ID!]
name: StringFilterInput
slug: StringFilterInput
withChoices: Boolean
inputType: AttributeInputTypeEnumFilterInput
entityType: AttributeEntityTypeEnumFilterInput
type: AttributeTypeEnumFilterInput
unit: MeasurementUnitsEnumFilterInput
inCollection: ID
inCategory: ID
valueRequired: Boolean
visibleInStorefront: Boolean
filterableInDashboard: Boolean
"""
List of conditions that must be met.
"""
AND: [AttributeWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [AttributeWhereInput!]
}
"""
Define the filtering options for string fields.
"""
input StringFilterInput {
"""
The value equal to.
"""
eq: String
"""
The value included in.
"""
oneOf: [String!]
}
input AttributeInputTypeEnumFilterInput @doc(category: "Attributes") {
"""
The value equal to.
"""
eq: AttributeInputTypeEnum
"""
The value included in.
"""
oneOf: [AttributeInputTypeEnum!]
}
input AttributeEntityTypeEnumFilterInput @doc(category: "Attributes") {
"""
The value equal to.
"""
eq: AttributeEntityTypeEnum
"""
The value included in.
"""
oneOf: [AttributeEntityTypeEnum!]
}
input AttributeTypeEnumFilterInput @doc(category: "Attributes") {
"""
The value equal to.
"""
eq: AttributeTypeEnum
"""
The value included in.
"""
oneOf: [AttributeTypeEnum!]
}
input MeasurementUnitsEnumFilterInput @doc(category: "Attributes") {
"""
The value equal to.
"""
eq: MeasurementUnitsEnum
"""
The value included in.
"""
oneOf: [MeasurementUnitsEnum!]
}
"""
Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront.
"""
type Category implements Node & ObjectWithMetadata @doc(category: "Products") {
"""
The ID of the category.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
SEO title of category.
"""
seoTitle: String
"""
SEO description of category.
"""
seoDescription: String
"""
Name of category
"""
name: String!
"""
Description of the category.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Slug of the category.
"""
slug: String!
"""
Parent category.
"""
parent: Category
"""
Level of the category.
"""
level: Int!
"""
Description of the category.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
The date and time when the category was last updated.
"""
updatedAt: DateTime!
"""
List of ancestors of the category.
"""
ancestors(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CategoryCountableConnection
"""
List of products in the category. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
products(
"""
Filtering options for products.
"""
filter: ProductFilterInput
"""
Filtering options for products.
"""
where: ProductWhereInput
"""
Sort products.
"""
sortBy: ProductOrder
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
"""
List of children of the category.
"""
children(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CategoryCountableConnection
"""
Background image of the category.
"""
backgroundImage(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): Image
"""
Returns translated category fields for the given language code.
"""
translation(
"""
A language code to return the translation for category.
"""
languageCode: LanguageCodeEnum!
): CategoryTranslation
}
type CategoryCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [CategoryCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type CategoryCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: Category!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input ProductFilterInput @doc(category: "Products") {
isPublished: Boolean
collections: [ID!]
categories: [ID!]
hasCategory: Boolean
attributes: [AttributeInput!]
"""
Filter by variants having specific stock status.
"""
stockAvailability: StockAvailability
stocks: ProductStockFilterInput
search: String
metadata: [MetadataFilter!]
"""
Filter by the publication date.
"""
publishedFrom: DateTime
"""
Filter by availability for purchase.
"""
isAvailable: Boolean
"""
Filter by the date of availability for purchase.
"""
availableFrom: DateTime
"""
Filter by visibility in product listings.
"""
isVisibleInListing: Boolean
price: PriceRangeInput
"""
Filter by the lowest variant price after discounts.
"""
minimalPrice: PriceRangeInput
"""
Filter by when was the most recent update.
"""
updatedAt: DateTimeRangeInput
productTypes: [ID!]
"""
Filter on whether product is a gift card or not.
"""
giftCard: Boolean
ids: [ID!]
hasPreorderedVariants: Boolean
slugs: [String!]
"""
Specifies the channel by which the data should be filtered.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
}
input AttributeInput @doc(category: "Attributes") {
"""
Internal representation of an attribute name.
"""
slug: String!
"""
Internal representation of a value (unique per attribute).
"""
values: [String!]
"""
The range that the returned values should be in.
"""
valuesRange: IntRangeInput
"""
The date/time range that the returned values should be in.
"""
dateTime: DateTimeRangeInput
"""
The date range that the returned values should be in. In case of date/time attributes, the UTC midnight of the given date is used.
"""
date: DateRangeInput
"""
The boolean value of the attribute.
"""
boolean: Boolean
}
input IntRangeInput {
"""
Value greater than or equal to.
"""
gte: Int
"""
Value less than or equal to.
"""
lte: Int
}
input DateTimeRangeInput {
"""
Start date.
"""
gte: DateTime
"""
End date.
"""
lte: DateTime
}
input DateRangeInput {
"""
Start date.
"""
gte: Date
"""
End date.
"""
lte: Date
}
enum StockAvailability @doc(category: "Products") {
IN_STOCK
OUT_OF_STOCK
}
input ProductStockFilterInput @doc(category: "Products") {
warehouseIds: [ID!]
quantity: IntRangeInput
}
input PriceRangeInput {
"""
Price greater than or equal to.
"""
gte: Float
"""
Price less than or equal to.
"""
lte: Float
}
input ProductWhereInput @doc(category: "Products") {
metadata: [MetadataFilter!]
ids: [ID!]
"""
Filter by product name.
"""
name: StringFilterInput
"""
Filter by product slug.
"""
slug: StringFilterInput
"""
Filter by product type.
"""
productType: GlobalIDFilterInput
"""
Filter by product category.
"""
category: GlobalIDFilterInput
"""
Filter by collection.
"""
collection: GlobalIDFilterInput
"""
Filter by availability for purchase.
"""
isAvailable: Boolean
"""
Filter by public visibility.
"""
isPublished: Boolean
"""
Filter by visibility on the channel.
"""
isVisibleInListing: Boolean
"""
Filter by the publication date.
"""
publishedFrom: DateTime
"""
Filter by the date of availability for purchase.
"""
availableFrom: DateTime
"""
Filter by product with category assigned.
"""
hasCategory: Boolean
"""
Filter by product variant price.
"""
price: DecimalFilterInput
"""
Filter by the lowest variant price after discounts.
"""
minimalPrice: DecimalFilterInput
"""
Filter by attributes associated with the product.
"""
attributes: [AttributeInput!]
"""
Filter by variants having specific stock status.
"""
stockAvailability: StockAvailability
"""
Filter by stock of the product variant.
"""
stocks: ProductStockFilterInput
"""
Filter on whether product is a gift card or not.
"""
giftCard: Boolean
"""
Filter by product with preordered variants.
"""
hasPreorderedVariants: Boolean
"""
Filter by when was the most recent update.
"""
updatedAt: DateTimeFilterInput
"""
List of conditions that must be met.
"""
AND: [ProductWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [ProductWhereInput!]
}
"""
Define the filtering options for foreign key fields.
"""
input GlobalIDFilterInput {
"""
The value equal to.
"""
eq: ID
"""
The value included in.
"""
oneOf: [ID!]
}
"""
Define the filtering options for decimal fields.
"""
input DecimalFilterInput {
"""
The value equal to.
"""
eq: Decimal
"""
The value included in.
"""
oneOf: [Decimal!]
"""
The value in range.
"""
range: DecimalRangeInput
}
"""
Custom Decimal implementation.
Returns Decimal as a float in the API,
parses float to the Decimal on the way back.
"""
scalar Decimal
input DecimalRangeInput {
"""
Decimal value greater than or equal to.
"""
gte: Decimal
"""
Decimal value less than or equal to.
"""
lte: Decimal
}
"""
Define the filtering options for date time fields.
"""
input DateTimeFilterInput {
"""
The value equal to.
"""
eq: DateTime
"""
The value included in.
"""
oneOf: [DateTime!]
"""
The value in range.
"""
range: DateTimeRangeInput
}
input ProductOrder @doc(category: "Products") {
"""
Specifies the direction in which to sort products.
"""
direction: OrderDirection!
"""
Specifies the channel in which to sort the data.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
"""
Sort product by the selected attribute's values.
Note: this doesn't take translations into account yet.
"""
attributeId: ID
"""
Sort products by the selected field.
"""
field: ProductOrderField
}
enum ProductOrderField @doc(category: "Products") {
"""
Sort products by name.
"""
NAME
"""
Sort products by rank. Note: This option is available only with the `search` filter.
"""
RANK
"""
Sort products by price.
This option requires a channel filter to work as the values can vary between channels.
"""
PRICE
"""
Sort products by a minimal price of a product's variant.
This option requires a channel filter to work as the values can vary between channels.
"""
MINIMAL_PRICE
"""
Sort products by update date.
"""
LAST_MODIFIED
"""
Sort products by update date.
"""
DATE
"""
Sort products by type.
"""
TYPE
"""
Sort products by publication status.
This option requires a channel filter to work as the values can vary between channels.
"""
PUBLISHED
"""
Sort products by publication date.
This option requires a channel filter to work as the values can vary between channels.
"""
PUBLICATION_DATE
"""
Sort products by publication date.
This option requires a channel filter to work as the values can vary between channels.
"""
PUBLISHED_AT
"""
Sort products by update date.
"""
LAST_MODIFIED_AT
"""
Sort products by collection. Note: This option is available only for the `Collection.products` query.
This option requires a channel filter to work as the values can vary between channels.
"""
COLLECTION
"""
Sort products by rating.
"""
RATING
"""
Sort products by creation date.
"""
CREATED_AT
}
"""
Represents an image.
"""
type Image {
"""
The URL of the image.
"""
url: String!
"""
Alt text for an image.
"""
alt: String
}
enum ThumbnailFormatEnum {
ORIGINAL
AVIF
WEBP
}
"""
Represents category translations.
"""
type CategoryTranslation implements Node @doc(category: "Products") {
"""
The ID of the category translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated SEO title.
"""
seoTitle: String
"""
Translated SEO description.
"""
seoDescription: String
"""
Translated category slug.
Added in Saleor 3.21.
"""
slug: String
"""
Translated category name.
"""
name: String
"""
Translated description of the category.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Translated description of the category.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Represents the category fields to translate.
"""
translatableContent: CategoryTranslatableContent
}
"""
Represents category original translatable fields and related translations.
"""
type CategoryTranslatableContent implements Node @doc(category: "Products") {
"""
The ID of the category translatable content.
"""
id: ID!
"""
The ID of the category to translate.
"""
categoryId: ID!
"""
SEO title to translate.
"""
seoTitle: String
"""
SEO description to translate.
"""
seoDescription: String
"""
Slug to translate.
Added in Saleor 3.21.
"""
slug: String
"""
Name of the category translatable content.
"""
name: String!
"""
Category description to translate.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Description of the category.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Returns translated category fields for the given language code.
"""
translation(
"""
A language code to return the translation for category.
"""
languageCode: LanguageCodeEnum!
): CategoryTranslation
"""
Represents a single category of products.
"""
category: Category
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents a version of a product such as different size or color.
"""
type ProductVariant implements Node & ObjectWithMetadata
@doc(category: "Products") {
"""
The ID of the product variant.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The name of the product variant.
"""
name: String!
"""
The SKU (stock keeping unit) of the product variant.
"""
sku: String
"""
The product to which the variant belongs.
"""
product: Product!
"""
Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. If the field is not provided, `Shop.trackInventoryByDefault` will be used.
"""
trackInventory: Boolean!
"""
The maximum quantity of this variant that a customer can purchase.
"""
quantityLimitPerCustomer: Int
"""
The weight of the product variant.
"""
weight: Weight
"""
Channel given to retrieve this product variant. Also used by federation gateway to resolve this object in a federated query.
"""
channel: String
"""
List of price information in channels for the product.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
channelListings: [ProductVariantChannelListing!]
"""
Lists the storefront variant's pricing, the current price and discounts, only meant for displaying.
"""
pricing(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
): VariantPricingInfo
"""
List of attributes assigned to this variant.
"""
attributes(
"""
Define scope of returned attributes.
"""
variantSelection: VariantAttributeScope
): [SelectedAttribute!]!
"""
Gross margin percentage value.
"""
margin: Int
"""
Total quantity ordered.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
quantityOrdered: Int
"""
Total revenue generated by a variant in given period of time. Note: this field should be queried using `reportProductSales` query as it uses optimizations suitable for such calculations.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
revenue(period: ReportingPeriod): TaxedMoney
"""
List of images for the product variant.
"""
images: [ProductImage!] @deprecated(reason: "Use the `media` field instead.")
"""
List of media for the product variant.
"""
media: [ProductMedia!]
"""
Returns translated product variant fields for the given language code.
"""
translation(
"""
A language code to return the translation for product variant.
"""
languageCode: LanguageCodeEnum!
): ProductVariantTranslation
"""
Digital content for the product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContent: DigitalContent
"""
Stocks for the product variant.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
stocks(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
"""
Two-letter ISO 3166-1 country code.
"""
countryCode: CountryCode
@deprecated(reason: "Use `address` argument instead.")
): [Stock!]
"""
Quantity of a product available for sale in one checkout. Field value will be `null` when no `limitQuantityPerCheckout` in global settings has been set, and `productVariant` stocks are not tracked.
"""
quantityAvailable(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
"""
Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones.
"""
countryCode: CountryCode
@deprecated(reason: "Use `address` argument instead.")
): Int
"""
Preorder data for product variant.
"""
preorder: PreorderData
"""
The date and time when the product variant was created.
"""
created: DateTime!
"""
The date and time when the product variant was last updated.
"""
updatedAt: DateTime!
"""
External ID of this product.
"""
externalReference: String
}
"""
Represents product variant channel listing.
"""
type ProductVariantChannelListing implements Node @doc(category: "Products") {
"""
The ID of the variant channel listing.
"""
id: ID!
"""
The channel to which the variant listing belongs.
"""
channel: Channel!
"""
The price of the variant.
"""
price: Money
"""
Cost price of the variant.
"""
costPrice: Money
"""
Prior price of the variant used for discount calculations.
Added in Saleor 3.21.
"""
priorPrice: Money
"""
Gross margin percentage value.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
margin: Int
"""
Preorder variant data.
"""
preorderThreshold: PreorderThreshold
}
"""
Represents preorder variant data for channel.
"""
type PreorderThreshold @doc(category: "Products") {
"""
Preorder threshold for product variant in this channel.
"""
quantity: Int
"""
Number of sold product variant in this channel.
"""
soldUnits: Int!
}
"""
Represents availability of a variant in the storefront.
"""
type VariantPricingInfo @doc(category: "Products") {
"""
Whether it is in sale or not.
"""
onSale: Boolean
"""
The discount amount if in sale (null otherwise).
"""
discount: TaxedMoney
"""
The discount amount compared to prior price. Null if product is not on sale or prior price was not provided in VariantChannelListing
Added in Saleor 3.21.
"""
discountPrior: TaxedMoney
"""
The discount amount in the local currency.
"""
discountLocalCurrency: TaxedMoney
@deprecated(reason: "Always returns `null`.")
"""
The price, with any discount subtracted.
"""
price: TaxedMoney
"""
The price without any discount.
"""
priceUndiscounted: TaxedMoney
"""
The price prior to discount.
Added in Saleor 3.21.
"""
pricePrior: TaxedMoney
"""
The discounted price in the local currency.
"""
priceLocalCurrency: TaxedMoney @deprecated(reason: "Always returns `null`.")
}
"""
Represents a monetary value with taxes. In cases where taxes were not applied, net and gross values will be equal.
"""
type TaxedMoney {
"""
Currency code.
"""
currency: String!
"""
Amount of money including taxes.
"""
gross: Money!
"""
Amount of money without taxes.
"""
net: Money!
"""
Amount of taxes.
"""
tax: Money!
}
input AddressInput {
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
Company or organization.
"""
companyName: String
"""
Address.
"""
streetAddress1: String
"""
Address.
"""
streetAddress2: String
"""
City.
"""
city: String
"""
District.
"""
cityArea: String
"""
Postal code.
"""
postalCode: String
"""
Country.
"""
country: CountryCode
"""
State or province.
"""
countryArea: String
"""
Phone number.
Phone numbers are validated with Google's [libphonenumber](https://github.com/google/libphonenumber) library.
"""
phone: String
"""
Address public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Determine if the address should be validated. By default, Saleor accepts only address inputs matching ruleset from [Google Address Data]{https://chromium-i18n.appspot.com/ssl-address), using [i18naddress](https://github.com/mirumee/google-i18n-address) library. Some mutations may require additional permissions to use the the field. More info about permissions can be found in relevant mutation.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
skipValidation: Boolean = false
}
input MetadataInput {
"""
Key of a metadata item.
"""
key: String!
"""
Value of a metadata item.
"""
value: String!
}
"""
Represents a custom attribute.
"""
type SelectedAttribute @doc(category: "Attributes") {
"""
Name of an attribute displayed in the interface.
"""
attribute: Attribute!
"""
Values of an attribute.
"""
values: [AttributeValue!]!
}
enum ReportingPeriod {
TODAY
THIS_MONTH
}
"""
Represents a product image.
"""
type ProductImage @doc(category: "Products") {
"""
The ID of the image.
"""
id: ID!
"""
The alt text of the image.
"""
alt: String
"""
The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged.
"""
sortOrder: Int
"""
The URL of the image.
"""
url(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): String!
}
"""
Represents a product media.
"""
type ProductMedia implements Node & ObjectWithMetadata
@doc(category: "Products") {
"""
The unique ID of the product media.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The sort order of the media.
"""
sortOrder: Int
"""
The alt text of the media.
"""
alt: String!
"""
The type of the media.
"""
type: ProductMediaType!
"""
The oEmbed data of the media.
"""
oembedData: JSONString!
"""
The URL of the media.
"""
url(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): String!
"""
Product id the media refers to.
"""
productId: ID
}
enum ProductMediaType @doc(category: "Products") {
IMAGE
VIDEO
}
"""
Represents product variant translations.
"""
type ProductVariantTranslation implements Node @doc(category: "Products") {
"""
The ID of the product variant translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated product variant name.
"""
name: String!
"""
Represents the product variant fields to translate.
"""
translatableContent: ProductVariantTranslatableContent
}
"""
Represents product variant's original translatable fields and related translations.
"""
type ProductVariantTranslatableContent implements Node
@doc(category: "Products") {
"""
The ID of the product variant translatable content.
"""
id: ID!
"""
The ID of the product variant to translate.
"""
productVariantId: ID!
"""
Name of the product variant to translate.
"""
name: String!
"""
Returns translated product variant fields for the given language code.
"""
translation(
"""
A language code to return the translation for product variant.
"""
languageCode: LanguageCodeEnum!
): ProductVariantTranslation
"""
Represents a version of a product such as different size or color.
"""
productVariant: ProductVariant
@deprecated(reason: "Get model fields from the root level queries.")
"""
List of product variant attribute values that can be translated.
"""
attributeValues: [AttributeValueTranslatableContent!]!
}
"""
Represents digital content associated with a product variant.
"""
type DigitalContent implements Node & ObjectWithMetadata
@doc(category: "Products") {
"""
The ID of the digital content.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Default settings indicator for digital content.
"""
useDefaultSettings: Boolean!
"""
Indicator for automatic fulfillment of digital content.
"""
automaticFulfillment: Boolean!
"""
File associated with digital content.
"""
contentFile: String!
"""
Maximum number of allowed downloads for the digital content.
"""
maxDownloads: Int
"""
Number of days the URL for the digital content remains valid.
"""
urlValidDays: Int
"""
List of URLs for the digital variant.
"""
urls: [DigitalContentUrl!]
"""
Product variant assigned to digital content.
"""
productVariant: ProductVariant!
}
"""
Represents a URL for digital content.
"""
type DigitalContentUrl implements Node @doc(category: "Products") {
"""
The ID of the digital content URL.
"""
id: ID!
"""
Digital content associated with the URL.
"""
content: DigitalContent!
"""
Date and time when the digital content URL was created.
"""
created: DateTime!
"""
Number of times digital content has been downloaded.
"""
downloadNum: Int!
"""
URL for digital content.
"""
url: String
"""
UUID of digital content.
"""
token: UUID!
}
scalar UUID
"""
Represents stock.
"""
type Stock implements Node @doc(category: "Products") {
"""
The ID of stock.
"""
id: ID!
"""
The warehouse associated with the stock.
"""
warehouse: Warehouse!
"""
Information about the product variant.
"""
productVariant: ProductVariant!
"""
Quantity of a product in the warehouse's possession, including the allocated stock that is waiting for shipment.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
quantity: Int!
"""
Quantity allocated for orders.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
quantityAllocated: Int!
"""
Quantity reserved for checkouts.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
quantityReserved: Int!
}
"""
Represents preorder settings for product variant.
"""
type PreorderData @doc(category: "Products") {
"""
The global preorder threshold for product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
globalThreshold: Int
"""
Total number of sold product variant during preorder.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
globalSoldUnits: Int!
"""
Preorder end date.
"""
endDate: DateTime
}
"""
Represents availability of a product in the storefront.
"""
type ProductPricingInfo @doc(category: "Products") {
"""
Whether it is in sale or not.
"""
onSale: Boolean
"""
The discount amount if in sale (null otherwise).
"""
discount: TaxedMoney
"""
The discount amount compared to prior price. Null if product is not on sale or prior price was not provided in VariantChannelListing
Added in Saleor 3.21.
"""
discountPrior: TaxedMoney
"""
The discount amount in the local currency.
"""
discountLocalCurrency: TaxedMoney
@deprecated(reason: "Always returns `null`.")
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean!
"""
The discounted price range of the product variants.
"""
priceRange: TaxedMoneyRange
"""
The undiscounted price range of the product variants.
"""
priceRangeUndiscounted: TaxedMoneyRange
"""
The prior price range of the product variants.
Added in Saleor 3.21.
"""
priceRangePrior: TaxedMoneyRange
"""
The discounted price range of the product variants in the local currency.
"""
priceRangeLocalCurrency: TaxedMoneyRange
@deprecated(reason: "Always returns `null`.")
}
"""
Represents a range of monetary values.
"""
type TaxedMoneyRange {
"""
Lower bound of a price range.
"""
start: TaxedMoney
"""
Upper bound of a price range.
"""
stop: TaxedMoney
}
"""
Represents product channel listing.
"""
type ProductChannelListing implements Node @doc(category: "Products") {
"""
The ID of the product channel listing.
"""
id: ID!
publicationDate: Date
@deprecated(
reason: "Use the `publishedAt` field to fetch the publication date."
)
"""
The product publication date time.
"""
publishedAt: DateTime
"""
Indicates if the product is published in the channel.
"""
isPublished: Boolean!
"""
The channel in which the product is listed.
"""
channel: Channel!
"""
Indicates product visibility in the channel listings.
"""
visibleInListings: Boolean!
availableForPurchase: Date
@deprecated(
reason: "Use the `availableForPurchaseAt` field to fetch the available for purchase date."
)
"""
The product available for purchase date time.
"""
availableForPurchaseAt: DateTime
"""
The price of the cheapest variant (including discounts).
"""
discountedPrice: Money
"""
Purchase cost of product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
purchaseCost: MoneyRange
"""
Range of margin percentage value.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
margin: Margin
"""
Refers to a state that can be set by admins to control whether a product is available for purchase in storefronts in this channel. This does not guarantee the availability of stock. When set to `False`, this product is still visible to customers, but it cannot be purchased.
"""
isAvailableForPurchase: Boolean
"""
Lists the storefront product's pricing, the current price and discounts, only meant for displaying.
"""
pricing(
"""
Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration.
"""
address: AddressInput
): ProductPricingInfo
}
"""
Metadata for the Margin class.
"""
type Margin @doc(category: "Products") {
"""
The starting value of the margin.
"""
start: Int
"""
The ending value of the margin.
"""
stop: Int
}
type ProductVariantCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [ProductVariantCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type ProductVariantCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: ProductVariant!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input ProductVariantFilterInput @doc(category: "Products") {
search: String
sku: [String!]
metadata: [MetadataFilter!]
isPreorder: Boolean
updatedAt: DateTimeRangeInput
}
input ProductVariantWhereInput @doc(category: "Products") {
metadata: [MetadataFilter!]
ids: [ID!]
"""
List of conditions that must be met.
"""
AND: [ProductVariantWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [ProductVariantWhereInput!]
}
input ProductVariantSortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort productVariants.
"""
direction: OrderDirection!
"""
Sort productVariants by the selected field.
"""
field: ProductVariantSortField!
}
enum ProductVariantSortField @doc(category: "Products") {
"""
Sort products variants by last modified at.
"""
LAST_MODIFIED_AT
}
input MediaSortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort media.
"""
direction: OrderDirection!
"""
Sort media by the selected field.
"""
field: MediaChoicesSortField!
}
enum MediaChoicesSortField @doc(category: "Products") {
"""
Sort media by ID.
"""
ID
}
"""
Represents a collection of products.
"""
type Collection implements Node & ObjectWithMetadata
@doc(category: "Products") {
"""
The ID of the collection.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
SEO title of the collection.
"""
seoTitle: String
"""
SEO description of the collection.
"""
seoDescription: String
"""
Name of the collection.
"""
name: String!
"""
Description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Slug of the collection.
"""
slug: String!
"""
Channel given to retrieve this collection. Also used by federation gateway to resolve this object in a federated query.
"""
channel: String
"""
Description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
List of products in this collection.
"""
products(
"""
Filtering options for products.
"""
filter: ProductFilterInput
"""
Filtering options for products.
"""
where: ProductWhereInput
"""
Sort products.
"""
sortBy: ProductOrder
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
"""
Background image of the collection.
"""
backgroundImage(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): Image
"""
Returns translated collection fields for the given language code.
"""
translation(
"""
A language code to return the translation for collection.
"""
languageCode: LanguageCodeEnum!
): CollectionTranslation
"""
List of channels in which the collection is available.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
channelListings: [CollectionChannelListing!]
}
"""
Represents collection translations.
"""
type CollectionTranslation implements Node @doc(category: "Products") {
"""
The ID of the collection translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated SEO title.
"""
seoTitle: String
"""
Translated SEO description.
"""
seoDescription: String
"""
Translated collection slug.
Added in Saleor 3.21.
"""
slug: String
"""
Translated collection name.
"""
name: String
"""
Translated description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Translated description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Represents the collection fields to translate.
"""
translatableContent: CollectionTranslatableContent
}
"""
Represents collection's original translatable fields and related translations.
"""
type CollectionTranslatableContent implements Node @doc(category: "Products") {
"""
The ID of the collection translatable content.
"""
id: ID!
"""
The ID of the collection to translate.
"""
collectionId: ID!
"""
SEO title to translate.
"""
seoTitle: String
"""
SEO description to translate.
"""
seoDescription: String
"""
Slug to translate
Added in Saleor 3.21.
"""
slug: String
"""
Collection's name to translate.
"""
name: String!
"""
Collection's description to translate.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Returns translated collection fields for the given language code.
"""
translation(
"""
A language code to return the translation for collection.
"""
languageCode: LanguageCodeEnum!
): CollectionTranslation
"""
Represents a collection of products.
"""
collection: Collection
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents collection channel listing.
"""
type CollectionChannelListing implements Node @doc(category: "Products") {
"""
The ID of the collection channel listing.
"""
id: ID!
publicationDate: Date
@deprecated(
reason: "Use the `publishedAt` field to fetch the publication date."
)
"""
The collection publication date.
"""
publishedAt: DateTime
"""
Indicates if the collection is published in the channel.
"""
isPublished: Boolean!
"""
The channel to which the collection belongs.
"""
channel: Channel!
}
"""
Represents product translations.
"""
type ProductTranslation implements Node @doc(category: "Products") {
"""
The ID of the product translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated SEO title.
"""
seoTitle: String
"""
Translated SEO description.
"""
seoDescription: String
"""
Translated product slug.
Added in Saleor 3.21.
"""
slug: String
"""
Translated product name.
"""
name: String
"""
Translated description of the product.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Translated description of the product.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Represents the product fields to translate.
"""
translatableContent: ProductTranslatableContent
}
"""
Represents product's original translatable fields and related translations.
"""
type ProductTranslatableContent implements Node @doc(category: "Products") {
"""
The ID of the product translatable content.
"""
id: ID!
"""
The ID of the product to translate.
"""
productId: ID!
"""
SEO title to translate.
"""
seoTitle: String
"""
SEO description to translate.
"""
seoDescription: String
"""
Slug to translate.
Added in Saleor 3.21.
"""
slug: String
"""
Product's name to translate.
"""
name: String!
"""
Product's description to translate.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Description of the product.
Rich text format. For reference see https://editorjs.io/
"""
descriptionJson: JSONString
@deprecated(reason: "Use the `description` field instead.")
"""
Returns translated product fields for the given language code.
"""
translation(
"""
A language code to return the translation for product.
"""
languageCode: LanguageCodeEnum!
): ProductTranslation
"""
Represents an individual item for sale in the storefront.
"""
product: Product
@deprecated(reason: "Get model fields from the root level queries.")
"""
List of product attribute values that can be translated.
"""
attributeValues: [AttributeValueTranslatableContent!]!
}
type StockCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [StockCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type StockCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: Stock!
"""
A cursor for use in pagination.
"""
cursor: String!
}
type WarehouseCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [WarehouseCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type WarehouseCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: Warehouse!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input WarehouseFilterInput @doc(category: "Products") {
clickAndCollectOption: WarehouseClickAndCollectOptionEnum
metadata: [MetadataFilter!]
search: String
ids: [ID!]
isPrivate: Boolean
channels: [ID!]
slugs: [String!]
}
input WarehouseSortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort warehouses.
"""
direction: OrderDirection!
"""
Sort warehouses by the selected field.
"""
field: WarehouseSortField!
}
enum WarehouseSortField @doc(category: "Products") {
"""
Sort warehouses by name.
"""
NAME
}
type TranslatableItemConnection {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [TranslatableItemEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type TranslatableItemEdge {
"""
The item at the end of the edge.
"""
node: TranslatableItem!
"""
A cursor for use in pagination.
"""
cursor: String!
}
union TranslatableItem =
ProductTranslatableContent
| CollectionTranslatableContent
| CategoryTranslatableContent
| AttributeTranslatableContent
| AttributeValueTranslatableContent
| ProductVariantTranslatableContent
| PageTranslatableContent
| ShippingMethodTranslatableContent
| VoucherTranslatableContent
| MenuItemTranslatableContent
| PromotionTranslatableContent
| PromotionRuleTranslatableContent
| SaleTranslatableContent
"""
Represents page's original translatable fields and related translations.
"""
type PageTranslatableContent implements Node @doc(category: "Pages") {
"""
The ID of the page translatable content.
"""
id: ID!
"""
The ID of the page to translate.
"""
pageId: ID!
"""
SEO title to translate.
"""
seoTitle: String
"""
SEO description to translate.
"""
seoDescription: String
"""
Slug to translate.
Added in Saleor 3.21.
"""
slug: String
"""
Page title to translate.
"""
title: String!
"""
Content of the page to translate.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
"""
Content of the page.
Rich text format. For reference see https://editorjs.io/
"""
contentJson: JSONString
@deprecated(reason: "Use the `content` field instead.")
"""
Returns translated page fields for the given language code.
"""
translation(
"""
A language code to return the translation for page.
"""
languageCode: LanguageCodeEnum!
): PageTranslation
"""
A static page that can be manually added by a shop operator through the dashboard.
"""
page: Page
@deprecated(reason: "Get model fields from the root level queries.")
"""
List of page content attribute values that can be translated.
"""
attributeValues: [AttributeValueTranslatableContent!]!
}
"""
Represents page translations.
"""
type PageTranslation implements Node @doc(category: "Pages") {
"""
The ID of the page translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated SEO title.
"""
seoTitle: String
"""
Translated SEO description.
"""
seoDescription: String
"""
Translated page slug.
Added in Saleor 3.21.
"""
slug: String
"""
Translated page title.
"""
title: String
"""
Translated content of the page.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
"""
Translated description of the page.
Rich text format. For reference see https://editorjs.io/
"""
contentJson: JSONString
@deprecated(reason: "Use the `content` field instead.")
"""
Represents the page fields to translate.
"""
translatableContent: PageTranslatableContent
}
"""
A static page that can be manually added by a shop operator through the dashboard.
"""
type Page implements Node & ObjectWithMetadata @doc(category: "Pages") {
"""
ID of the page.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Title of the page for SEO.
"""
seoTitle: String
"""
Description of the page for SEO.
"""
seoDescription: String
"""
Title of the page.
"""
title: String!
"""
Content of the page.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
publicationDate: Date
@deprecated(
reason: "Use the `publishedAt` field to fetch the publication date."
)
"""
The page publication date.
"""
publishedAt: DateTime
"""
Determines if the page is published.
"""
isPublished: Boolean!
"""
Slug of the page.
"""
slug: String!
"""
Determines the type of page
"""
pageType: PageType!
"""
Date and time at which page was created.
"""
created: DateTime!
"""
Content of the page.
Rich text format. For reference see https://editorjs.io/
"""
contentJson: JSONString!
@deprecated(reason: "Use the `content` field instead.")
"""
Returns translated page fields for the given language code.
"""
translation(
"""
A language code to return the translation for page.
"""
languageCode: LanguageCodeEnum!
): PageTranslation
"""
List of attributes assigned to this product.
"""
attributes: [SelectedAttribute!]!
}
"""
Represents a type of page. It defines what attributes are available to pages of this type.
"""
type PageType implements Node & ObjectWithMetadata @doc(category: "Pages") {
"""
ID of the page type.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Name of the page type.
"""
name: String!
"""
Slug of the page type.
"""
slug: String!
"""
Page attributes of that page type.
"""
attributes: [Attribute!]
"""
Attributes that can be assigned to the page type.
Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
availableAttributes(
filter: AttributeFilterInput
where: AttributeWhereInput
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): AttributeCountableConnection
"""
Whether page type has pages assigned.
Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
hasPages: Boolean
}
"""
Represents voucher's original translatable fields and related translations.
"""
type VoucherTranslatableContent implements Node @doc(category: "Discounts") {
"""
The ID of the voucher translatable content.
"""
id: ID!
"""
The ID of the voucher to translate.
"""
voucherId: ID!
"""
Voucher name to translate.
"""
name: String
"""
Returns translated voucher fields for the given language code.
"""
translation(
"""
A language code to return the translation for voucher.
"""
languageCode: LanguageCodeEnum!
): VoucherTranslation
"""
Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
voucher: Voucher
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents voucher translations.
"""
type VoucherTranslation implements Node @doc(category: "Discounts") {
"""
The ID of the voucher translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated voucher name.
"""
name: String
"""
Represents the voucher fields to translate.
"""
translatableContent: VoucherTranslatableContent
}
"""
Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes.
"""
type Voucher implements Node & ObjectWithMetadata @doc(category: "Discounts") {
"""
The ID of the voucher.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The name of the voucher.
"""
name: String
"""
List of codes available for this voucher.
Added in Saleor 3.18.
"""
codes(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): VoucherCodeCountableConnection
"""
The code of the voucher.
"""
code: String
"""
The number of times a voucher can be used.
"""
usageLimit: Int
"""
Usage count of the voucher.
"""
used: Int!
"""
The start date and time of voucher.
"""
startDate: DateTime!
"""
The end date and time of voucher.
"""
endDate: DateTime
"""
Determine if the voucher should be applied once per order. If set to True, the voucher is applied to a single cheapest eligible product in checkout.
"""
applyOncePerOrder: Boolean!
"""
Determine if the voucher usage should be limited to one use per customer.
"""
applyOncePerCustomer: Boolean!
"""
Determine if the voucher codes can be used once or multiple times.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
singleUse: Boolean!
"""
Determine if the voucher is available only for staff members.
"""
onlyForStaff: Boolean!
"""
Determine minimum quantity of items for checkout.
"""
minCheckoutItemsQuantity: Int
"""
List of categories this voucher applies to.
"""
categories(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CategoryCountableConnection
"""
List of collections this voucher applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
collections(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CollectionCountableConnection
"""
List of products this voucher applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
products(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
"""
List of product variants this voucher applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
variants(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductVariantCountableConnection
"""
List of countries available for the shipping voucher.
"""
countries: [CountryDisplay!]
"""
Returns translated voucher fields for the given language code.
"""
translation(
"""
A language code to return the translation for voucher.
"""
languageCode: LanguageCodeEnum!
): VoucherTranslation
"""
Determines a type of discount for voucher - value or percentage
"""
discountValueType: DiscountValueTypeEnum!
"""
Voucher value.
"""
discountValue: Float
"""
Currency code for voucher.
"""
currency: String
"""
Minimum order value to apply voucher.
"""
minSpent: Money
"""
Determines a type of voucher.
"""
type: VoucherTypeEnum!
"""
List of availability in channels for the voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
channelListings: [VoucherChannelListing!]
}
type VoucherCodeCountableConnection @doc(category: "Discounts") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [VoucherCodeCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type VoucherCodeCountableEdge @doc(category: "Discounts") {
"""
The item at the end of the edge.
"""
node: VoucherCode!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Represents voucher code.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
type VoucherCode {
"""
The ID of the voucher code.
"""
id: ID!
"""
Code to use the voucher.
"""
code: String
"""
Number of times a code has been used.
"""
used: Int
"""
Whether a code is active or not.
"""
isActive: Boolean
"""
Date time of code creation.
"""
createdAt: DateTime!
}
"""
Represents a connection to a list of collections.
"""
type CollectionCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [CollectionCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type CollectionCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: Collection!
"""
A cursor for use in pagination.
"""
cursor: String!
}
enum DiscountValueTypeEnum @doc(category: "Discounts") {
FIXED
PERCENTAGE
}
enum VoucherTypeEnum @doc(category: "Discounts") {
SHIPPING
ENTIRE_ORDER
SPECIFIC_PRODUCT
}
"""
Represents voucher channel listing.
"""
type VoucherChannelListing implements Node @doc(category: "Discounts") {
"""
The ID of channel listing.
"""
id: ID!
"""
The channel in which voucher can be applied.
"""
channel: Channel!
"""
The value of the discount on voucher in a channel.
"""
discountValue: Float!
"""
Currency code for voucher in a channel.
"""
currency: String!
"""
Minimum order value for voucher to apply in channel.
"""
minSpent: Money
}
"""
Represents menu item's original translatable fields and related translations.
"""
type MenuItemTranslatableContent implements Node @doc(category: "Menu") {
"""
The ID of the menu item translatable content.
"""
id: ID!
"""
The ID of the menu item to translate.
"""
menuItemId: ID!
"""
Name of the menu item to translate.
"""
name: String!
"""
Returns translated menu item fields for the given language code.
"""
translation(
"""
A language code to return the translation for menu item.
"""
languageCode: LanguageCodeEnum!
): MenuItemTranslation
"""
Represents a single item of the related menu. Can store categories, collection or pages.
"""
menuItem: MenuItem
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents menu item translations.
"""
type MenuItemTranslation implements Node @doc(category: "Menu") {
"""
The ID of the menu item translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated menu item name.
"""
name: String!
"""
Represents the menu item fields to translate.
"""
translatableContent: MenuItemTranslatableContent
}
"""
Represents a single item of the related menu. Can store categories, collection or pages.
"""
type MenuItem implements Node & ObjectWithMetadata @doc(category: "Menu") {
"""
The ID of the menu item.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The name of the menu item.
"""
name: String!
"""
Represents the menu to which the menu item belongs.
"""
menu: Menu!
"""
ID of parent menu item. If empty, menu will be top level menu.
"""
parent: MenuItem
"""
Category associated with the menu item.
"""
category: Category
"""
A collection associated with this menu item. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
collection: Collection
"""
A page associated with this menu item. Requires one of the following permissions to include unpublished items: MANAGE_PAGES.
"""
page: Page
"""
Indicates the position of the menu item within the menu structure.
"""
level: Int!
"""
Represents the child items of the current menu item.
"""
children: [MenuItem!]
"""
URL to the menu item.
"""
url: String
"""
Returns translated menu item fields for the given language code.
"""
translation(
"""
A language code to return the translation for menu item.
"""
languageCode: LanguageCodeEnum!
): MenuItemTranslation
}
"""
Represents a single menu - an object that is used to help navigate through the store.
"""
type Menu implements Node & ObjectWithMetadata @doc(category: "Menu") {
"""
The ID of the menu.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The name of the menu.
"""
name: String!
"""
Slug of the menu.
"""
slug: String!
"""
Menu items associated with this menu.
"""
items: [MenuItem!]
}
"""
Represents promotion's original translatable fields and related translations.
"""
type PromotionTranslatableContent implements Node @doc(category: "Discounts") {
"""
ID of the promotion translatable content.
"""
id: ID!
"""
ID of the promotion to translate.
"""
promotionId: ID!
"""
Name of the promotion.
"""
name: String!
"""
Description of the promotion.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Returns translated promotion fields for the given language code.
"""
translation(
"""
A language code to return the translation for promotion.
"""
languageCode: LanguageCodeEnum!
): PromotionTranslation
}
"""
Represents promotion translations.
"""
type PromotionTranslation implements Node @doc(category: "Discounts") {
"""
ID of the promotion translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated name of the promotion.
"""
name: String
"""
Translated description of the promotion.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Represents the promotion fields to translate.
"""
translatableContent: PromotionTranslatableContent
}
"""
Represents promotion rule's original translatable fields and related translations.
"""
type PromotionRuleTranslatableContent implements Node
@doc(category: "Discounts") {
"""
ID of the promotion rule translatable content.
"""
id: ID!
"""
ID of the promotion rule to translate.
"""
promotionRuleId: ID!
"""
Name of the promotion rule.
"""
name: String
"""
Description of the promotion rule.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Returns translated promotion rule fields for the given language code.
"""
translation(
"""
A language code to return the translation for promotion rule.
"""
languageCode: LanguageCodeEnum!
): PromotionRuleTranslation
}
"""
Represents promotion rule translations.
"""
type PromotionRuleTranslation implements Node @doc(category: "Discounts") {
"""
ID of the promotion rule translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated name of the promotion rule.
"""
name: String
"""
Translated description of the promotion rule.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Represents the promotion rule fields to translate.
"""
translatableContent: PromotionRuleTranslatableContent
}
"""
Represents sale's original translatable fields and related translations.
DEPRECATED: this type will be removed. Use `PromotionTranslatableContent` instead.
"""
type SaleTranslatableContent implements Node @doc(category: "Discounts") {
"""
The ID of the sale translatable content.
"""
id: ID!
"""
The ID of the sale to translate.
"""
saleId: ID!
"""
Name of the sale to translate.
"""
name: String!
"""
Returns translated sale fields for the given language code.
"""
translation(
"""
A language code to return the translation for sale.
"""
languageCode: LanguageCodeEnum!
): SaleTranslation
"""
Sales allow creating discounts for categories, collections or products and are visible to all the customers.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
sale: Sale
@deprecated(reason: "Get model fields from the root level queries.")
}
"""
Represents sale translations.
DEPRECATED: this type will be removed. Use `PromotionTranslation` instead.
"""
type SaleTranslation implements Node @doc(category: "Discounts") {
"""
The ID of the sale translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated name of sale.
"""
name: String
"""
Represents the sale fields to translate.
"""
translatableContent: SaleTranslatableContent
}
"""
Sales allow creating discounts for categories, collections or products and are visible to all the customers.
DEPRECATED: this type will be removed. Use `Promotion` type instead.
"""
type Sale implements Node & ObjectWithMetadata @doc(category: "Discounts") {
"""
The ID of the sale.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The name of the sale.
"""
name: String!
"""
Type of the sale, fixed or percentage.
"""
type: SaleType!
"""
The start date and time of the sale.
"""
startDate: DateTime!
"""
The end date and time of the sale.
"""
endDate: DateTime
"""
The date and time when the sale was created.
"""
created: DateTime!
"""
The date and time when the sale was updated.
"""
updatedAt: DateTime!
"""
List of categories this sale applies to.
"""
categories(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CategoryCountableConnection
"""
List of collections this sale applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
collections(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CollectionCountableConnection
"""
List of products this sale applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
products(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductCountableConnection
"""
List of product variants this sale applies to.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
variants(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): ProductVariantCountableConnection
"""
Returns translated sale fields for the given language code.
"""
translation(
"""
A language code to return the translation for sale.
"""
languageCode: LanguageCodeEnum!
): SaleTranslation
"""
List of channels available for the sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
channelListings: [SaleChannelListing!]
"""
Sale value.
"""
discountValue: Float
"""
Currency code for sale.
"""
currency: String
}
enum SaleType @doc(category: "Discounts") {
FIXED
PERCENTAGE
}
"""
Represents sale channel listing.
DEPRECATED: this type will be removed. Use `PromotionRule` type instead.
"""
type SaleChannelListing implements Node @doc(category: "Discounts") {
"""
The ID of the channel listing.
"""
id: ID!
"""
The channel in which the sale is available.
"""
channel: Channel!
"""
The value of the discount applied to the sale in the channel.
"""
discountValue: Float!
"""
The currency in which the discount value is specified.
"""
currency: String!
}
enum TranslatableKinds {
ATTRIBUTE
ATTRIBUTE_VALUE
CATEGORY
COLLECTION
MENU_ITEM
PAGE
PRODUCT
PROMOTION
PROMOTION_RULE
SALE
SHIPPING_METHOD
VARIANT
VOUCHER
}
type TaxConfigurationCountableConnection @doc(category: "Taxes") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [TaxConfigurationCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type TaxConfigurationCountableEdge @doc(category: "Taxes") {
"""
The item at the end of the edge.
"""
node: TaxConfiguration!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input TaxConfigurationFilterInput @doc(category: "Taxes") {
metadata: [MetadataFilter!]
ids: [ID!]
}
type TaxClassCountableConnection @doc(category: "Taxes") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [TaxClassCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type TaxClassCountableEdge @doc(category: "Taxes") {
"""
The item at the end of the edge.
"""
node: TaxClass!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input TaxClassSortingInput @doc(category: "Taxes") {
"""
Specifies the direction in which to sort tax classes.
"""
direction: OrderDirection!
"""
Sort tax classes by the selected field.
"""
field: TaxClassSortField!
}
enum TaxClassSortField @doc(category: "Taxes") {
"""
Sort tax classes by name.
"""
NAME
}
input TaxClassFilterInput @doc(category: "Taxes") {
metadata: [MetadataFilter!]
ids: [ID!]
countries: [CountryCode!]
}
"""
Tax class rates grouped by country.
"""
type TaxCountryConfiguration @doc(category: "Taxes") {
"""
A country for which tax class rates are grouped.
"""
country: CountryDisplay!
"""
List of tax class rates.
"""
taxClassCountryRates: [TaxClassCountryRate!]!
}
input StockFilterInput @doc(category: "Products") {
quantity: Float
search: String
}
"""
Represents a shop resource containing general shop data and configuration.
"""
type Shop implements ObjectWithMetadata {
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
ID of the shop.
"""
id: ID!
"""
List of available payment gateways.
"""
availablePaymentGateways(
"""
A currency for which gateways will be returned.
"""
currency: String @deprecated(reason: "Use `channel` argument instead.")
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): [PaymentGateway!]!
"""
List of available external authentications.
"""
availableExternalAuthentications: [ExternalAuthentication!]!
"""
Shipping methods that are available for the shop.
"""
availableShippingMethods(
"""
Slug of a channel for which the data should be returned.
"""
channel: String!
"""
Address for which available shipping methods should be returned.
"""
address: AddressInput
): [ShippingMethod!]
"""
List of all currencies supported by shop's channels.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
channelCurrencies: [String!]!
"""
List of countries available in the shop.
"""
countries(
"""
A language code to return the translation for.
"""
languageCode: LanguageCodeEnum @deprecated
"""
Filtering options for countries
"""
filter: CountryFilterInput
): [CountryDisplay!]!
"""
Shop's default country.
"""
defaultCountry: CountryDisplay
"""
Default shop's email sender's name.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
defaultMailSenderName: String
"""
Default shop's email sender's address.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
defaultMailSenderAddress: String
"""
Shop's description.
"""
description: String
"""
Shop's domain data.
"""
domain: Domain!
"""
List of the shops's supported languages.
"""
languages: [LanguageDisplay!]!
"""
Shop's name.
"""
name: String!
"""
List of available permissions.
"""
permissions: [Permission!]!
"""
List of possible phone prefixes.
"""
phonePrefixes: [String!]!
"""
Header text.
"""
headerText: String
"""
Automatically approve all new fulfillments.
"""
fulfillmentAutoApprove: Boolean!
"""
Allow to approve fulfillments which are unpaid.
"""
fulfillmentAllowUnpaid: Boolean!
"""
This field is used as a default value for `ProductVariant.trackInventory`.
"""
trackInventoryByDefault: Boolean
"""
Default weight unit.
"""
defaultWeightUnit: WeightUnitsEnum
"""
Returns translated shop fields for the given language code.
"""
translation(
"""
A language code to return the translation for shop.
"""
languageCode: LanguageCodeEnum!
): ShopTranslation
"""
Enable automatic fulfillment for all digital products.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
automaticFulfillmentDigitalProducts: Boolean
"""
Default number of minutes stock will be reserved for anonymous checkout or null when stock reservation is disabled.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
reserveStockDurationAnonymousUser: Int
"""
Default number of minutes stock will be reserved for authenticated checkout or null when stock reservation is disabled.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
reserveStockDurationAuthenticatedUser: Int
"""
Default number of maximum line quantity in single checkout (per single checkout line).
Requires one of the following permissions: MANAGE_SETTINGS.
"""
limitQuantityPerCheckout: Int
"""
Default number of max downloads per digital content URL.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
defaultDigitalMaxDownloads: Int
"""
Default number of days which digital content URL will be valid.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
defaultDigitalUrlValidDays: Int
"""
Company address.
"""
companyAddress: Address
"""
URL of a view where customers can set their password.
"""
customerSetPasswordUrl: String
"""
List of staff notification recipients.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
staffNotificationRecipients: [StaffNotificationRecipient!]
"""
Determines if account confirmation by email is enabled.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
enableAccountConfirmationByEmail: Boolean
"""
Determines if user can login without confirmation when `enableAccountConfirmation` is enabled.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
allowLoginWithoutConfirmation: Boolean
"""
Resource limitations and current usage if any set for a shop
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
limits: LimitInfo! @deprecated
"""
Saleor API version.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
version: String!
"""
Minor Saleor API version.
"""
schemaVersion: String!
"""
List of tax apps that can be assigned to the channel. The list will be calculated by Saleor based on the apps that are subscribed to webhooks related to tax calculations: CHECKOUT_CALCULATE_TAXES
Added in Saleor 3.19.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS.
"""
availableTaxApps: [App!]!
"""
Include taxes in prices.
"""
includeTaxesInPrices: Boolean!
@deprecated(
reason: "Use `Channel.taxConfiguration.pricesEnteredWithTax` to determine whether prices are entered with tax."
)
"""
Display prices with tax in store.
"""
displayGrossPrices: Boolean!
@deprecated(
reason: "Use `Channel.taxConfiguration` to determine whether to display gross or net prices."
)
"""
Charge taxes on shipping.
"""
chargeTaxesOnShipping: Boolean!
@deprecated(
reason: "Use `ShippingMethodType.taxClass` to determine whether taxes are calculated for shipping methods; if a tax class is set, the taxes will be calculated, otherwise no tax rate will be applied."
)
}
"""
Available payment gateway backend with configuration necessary to setup client.
"""
type PaymentGateway @doc(category: "Payments") {
"""
Payment gateway name.
"""
name: String!
"""
Payment gateway ID.
"""
id: ID!
"""
Payment gateway client configuration.
"""
config: [GatewayConfigLine!]!
"""
Payment gateway supported currencies.
"""
currencies: [String!]!
}
"""
Payment gateway client configuration key and value pair.
"""
type GatewayConfigLine @doc(category: "Payments") {
"""
Gateway config key.
"""
field: String!
"""
Gateway config value for key.
"""
value: String
}
"""
External authentication plugin.
"""
type ExternalAuthentication @doc(category: "Authentication") {
"""
ID of external authentication plugin.
"""
id: String!
"""
Name of external authentication plugin.
"""
name: String
}
input CountryFilterInput {
"""
Boolean for filtering countries by having shipping zone assigned.If 'true', return countries with shipping zone assigned.If 'false', return countries without any shipping zone assigned.If the argument is not provided (null), return all countries.
"""
attachedToShippingZones: Boolean
}
"""
Represents API domain.
"""
type Domain {
"""
The host name of the domain.
"""
host: String!
"""
Inform if SSL is enabled.
"""
sslEnabled: Boolean!
"""
The absolute URL of the API.
"""
url: String!
}
"""
Represents shop translations.
"""
type ShopTranslation implements Node @doc(category: "Shop") {
"""
The ID of the shop translation.
"""
id: ID!
"""
Translation language.
"""
language: LanguageDisplay!
"""
Translated header text of sale.
"""
headerText: String!
"""
Translated description of sale.
"""
description: String!
}
"""
Represents a recipient of email notifications send by Saleor, such as notifications about new orders. Notifications can be assigned to staff users or arbitrary email addresses.
"""
type StaffNotificationRecipient implements Node {
"""
The ID of the staff notification recipient.
"""
id: ID!
"""
Returns a user subscribed to email notifications.
"""
user: User
"""
Returns email address of a user subscribed to email notifications.
"""
email: String
"""
Determines if a notification active.
"""
active: Boolean
}
"""
Represents user data.
"""
type User implements Node & ObjectWithMetadata @doc(category: "Users") {
"""
The ID of the user.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The email address of the user.
"""
email: String!
"""
The given name of the address.
"""
firstName: String!
"""
The family name of the address.
"""
lastName: String!
"""
Determine if the user is a staff admin.
"""
isStaff: Boolean!
"""
Determine if the user is active.
"""
isActive: Boolean!
"""
Determines if user has confirmed email.
"""
isConfirmed: Boolean!
"""
List of all user's addresses.
"""
addresses: [Address!]!
"""
Returns the last open checkout of this user.
"""
checkout: Checkout
@deprecated(
reason: "Use the `checkoutTokens` field to fetch the user checkouts."
)
"""
Returns the checkout UUID's assigned to this user.
"""
checkoutTokens(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): [UUID!] @deprecated(reason: "Use `checkoutIds` instead.")
"""
Returns the checkout ID's assigned to this user.
"""
checkoutIds(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): [ID!]
"""
Returns checkouts assigned to this user. The query will not initiate any external requests, including fetching external shipping methods, filtering available shipping methods, or performing external tax calculations.
"""
checkouts(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): CheckoutCountableConnection
"""
List of the user gift cards.
"""
giftCards(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): GiftCardCountableConnection
"""
A note about the customer.
Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF.
"""
note: String
"""
List of user's orders. The query will not initiate any external requests, including filtering available shipping methods, or performing external tax calculations. Requires one of the following permissions: MANAGE_STAFF, OWNER.
"""
orders(
"""
Return the elements in the list that come before the specified cursor.
"""
before: String
"""
Return the elements in the list that come after the specified cursor.
"""
after: String
"""
Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
first: Int
"""
Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.
"""
last: Int
): OrderCountableConnection
"""
List of user's permissions.
"""
userPermissions: [UserPermission!]
"""
List of user's permission groups.
"""
permissionGroups: [Group!]
"""
List of user's permission groups which user can manage.
"""
editableGroups: [Group!]
"""
List of channels the user has access to. The sum of channels from all user groups. If at least one group has `restrictedAccessToChannels` set to False - all channels are returned.
"""
accessibleChannels: [Channel!]
"""
Determine if user have restricted access to channels. False if at least one user group has `restrictedAccessToChannels` set to False.
"""
restrictedAccessToChannels: Boolean!
"""
The avatar of the user.
"""
avatar(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): Image
"""
List of events associated with the user.
Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF.
"""
events: [CustomerEvent!]
"""
List of stored payment sources. The field returns a list of payment sources stored for payment plugins.
"""
storedPaymentSources(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): [PaymentSource!]
"""
User language code.
"""
languageCode: LanguageCodeEnum!
"""
The default shipping address of the user.
"""
defaultShippingAddress: Address
"""
The default billing address of the user.
"""
defaultBillingAddress: Address
"""
External ID of this user.
"""
externalReference: String
"""
The date when the user last time log in to the system.
"""
lastLogin: DateTime
"""
The data when the user create account.
"""
dateJoined: DateTime!
"""
The data when the user last update the account information.
"""
updatedAt: DateTime!
"""
Returns a list of user's stored payment methods that can be used in provided channel. The field returns a list of stored payment methods by payment apps. When `amount` is not provided, 0 will be used as default value.
"""
storedPaymentMethods(
"""
Slug of a channel for which the data should be returned.
"""
channel: String!
): [StoredPaymentMethod!]
}
"""
Checkout object.
"""
type Checkout implements Node & ObjectWithMetadata @doc(category: "Checkout") {
"""
The ID of the checkout.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The date and time when the checkout was created.
"""
created: DateTime!
"""
Time of last modification of the given checkout.
"""
updatedAt: DateTime!
lastChange: DateTime! @deprecated(reason: "Use `updatedAt` instead.")
"""
The user assigned to the checkout. Requires one of the following permissions: MANAGE_USERS, HANDLE_PAYMENTS, OWNER.
"""
user: User
"""
The channel for which checkout was created.
"""
channel: Channel!
"""
The billing address of the checkout.
"""
billingAddress: Address
"""
The shipping address of the checkout.
"""
shippingAddress: Address
"""
The customer note for the checkout.
Added in Saleor 3.21.
"""
customerNote: String!
"""
The note for the checkout.
"""
note: String! @deprecated(reason: "Use `customerNote` instead.")
"""
The total discount applied to the checkout. Note: Only discount created via voucher are included in this field.
"""
discount: Money
"""
The name of voucher assigned to the checkout.
"""
discountName: String
"""
Translation of the discountName field in the language set in Checkout.languageCode field.Note: this field is set automatically when Checkout.languageCode is defined; otherwise it's null
"""
translatedDiscountName: String
"""
The voucher assigned to the checkout.
Added in Saleor 3.18.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
voucher: Voucher
"""
The code of voucher assigned to the checkout.
"""
voucherCode: String
"""
Shipping methods that can be used with this checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
"""
availableShippingMethods: [ShippingMethod!]!
@webhookEventsInfo(
asyncEvents: []
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
]
)
@deprecated(reason: "Use `shippingMethods` instead.")
"""
Shipping methods that can be used with this checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
"""
shippingMethods: [ShippingMethod!]!
@webhookEventsInfo(
asyncEvents: []
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
]
)
"""
Collection points that can be used for this order.
"""
availableCollectionPoints: [Warehouse!]!
"""
List of available payment gateways.
Triggers the following webhook events:
- PAYMENT_LIST_GATEWAYS (sync): Fetch payment gateways available for checkout.
"""
availablePaymentGateways: [PaymentGateway!]!
@webhookEventsInfo(asyncEvents: [], syncEvents: [PAYMENT_LIST_GATEWAYS])
"""
Email of a customer.
"""
email: String
"""
List of gift cards associated with this checkout.
"""
giftCards: [GiftCard!]!
"""
Returns True, if checkout requires shipping.
"""
isShippingRequired: Boolean!
"""
The number of items purchased.
"""
quantity: Int!
"""
Date when oldest stock reservation for this checkout expires or null if no stock is reserved.
"""
stockReservationExpires: DateTime
"""
A list of checkout lines, each containing information about an item in the checkout.
"""
lines: [CheckoutLine!]!
"""
The price of the shipping, with all the taxes included. Set to 0 when no delivery method is selected.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
shippingPrice: TaxedMoney!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
The shipping method related with checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
"""
shippingMethod: ShippingMethod
@webhookEventsInfo(
asyncEvents: []
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
]
)
@deprecated(reason: "Use `deliveryMethod` instead.")
"""
The delivery method selected for this checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
"""
deliveryMethod: DeliveryMethod
@webhookEventsInfo(
asyncEvents: []
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
]
)
"""
The price of the checkout before shipping, with taxes included.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
subtotalPrice: TaxedMoney!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
Returns True if checkout has to be exempt from taxes.
"""
taxExemption: Boolean!
"""
The checkout's token.
"""
token: UUID!
"""
The sum of the checkout line prices, with all the taxes,shipping costs, and discounts included.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
totalPrice: TaxedMoney!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
The difference between the paid and the checkout total amount.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
totalBalance: Money!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
Checkout language code.
"""
languageCode: LanguageCodeEnum!
"""
List of transactions for the checkout. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS.
"""
transactions: [TransactionItem!]
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean!
"""
The authorize status of the checkout.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
authorizeStatus: CheckoutAuthorizeStatusEnum!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
The charge status of the checkout.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
chargeStatus: CheckoutChargeStatusEnum!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
List of user's stored payment methods that can be used in this checkout session. It uses the channel that the checkout was created in. When `amount` is not provided, `checkout.total` will be used as a default value.
"""
storedPaymentMethods(
"""
Amount that will be used to fetch stored payment methods.
"""
amount: PositiveDecimal
): [StoredPaymentMethod!]
"""
List of problems with the checkout.
"""
problems: [CheckoutProblem!]
}
"""
A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes.
"""
type GiftCard implements Node & ObjectWithMetadata
@doc(category: "Gift cards") {
"""
ID of the gift card.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Code in format which allows displaying in a user interface.
"""
displayCode: String!
"""
Last 4 characters of gift card code.
"""
last4CodeChars: String!
"""
Gift card code. It can be fetched both by a staff member with 'MANAGE_GIFT_CARD' when gift card hasn't been used yet or a user who bought or issued the gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD, OWNER.
"""
code: String!
"""
Date and time when gift card was created.
"""
created: DateTime!
"""
The user who bought or issued a gift card.
"""
createdBy: User
"""
The customer who used a gift card.
"""
usedBy: User @deprecated
"""
Email address of the user who bought or issued gift card.
Requires one of the following permissions: MANAGE_USERS, OWNER.
"""
createdByEmail: String
"""
Email address of the customer who used a gift card.
"""
usedByEmail: String @deprecated
"""
Date and time when gift card was last used.
"""
lastUsedOn: DateTime
"""
Expiry date of the gift card.
"""
expiryDate: Date
"""
App which created the gift card.
Requires one of the following permissions: MANAGE_APPS, OWNER.
"""
app: App
"""
Related gift card product.
"""
product: Product
"""
List of events associated with the gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
events(
"""
Filtering options for gift card events.
"""
filter: GiftCardEventFilterInput
): [GiftCardEvent!]!
"""
The gift card tag.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
tags: [GiftCardTag!]!
"""
Slug of the channel where the gift card was bought.
"""
boughtInChannel: String
isActive: Boolean!
initialBalance: Money!
currentBalance: Money!
"""
The customer who bought a gift card.
"""
user: User @deprecated(reason: "Use `createdBy` field instead.")
"""
End date of gift card.
"""
endDate: DateTime @deprecated(reason: "Use `expiryDate` field instead.")
"""
Start date of gift card.
"""
startDate: DateTime @deprecated
}
"""
History log of the gift card.
"""
type GiftCardEvent implements Node @doc(category: "Gift cards") {
"""
ID of the event associated with a gift card.
"""
id: ID!
"""
Date when event happened at in ISO 8601 format.
"""
date: DateTime
"""
Gift card event type.
"""
type: GiftCardEventsEnum
"""
User who performed the action. Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF, OWNER.
"""
user: User
"""
App that performed the action. Requires one of the following permissions: MANAGE_APPS, OWNER.
"""
app: App
"""
Content of the event.
"""
message: String
"""
Email of the customer.
"""
email: String
"""
The order ID where gift card was used or bought.
"""
orderId: ID
"""
User-friendly number of an order where gift card was used or bought.
"""
orderNumber: String
"""
The list of gift card tags.
"""
tags: [String!]
"""
The list of old gift card tags.
"""
oldTags: [String!]
"""
The gift card balance.
"""
balance: GiftCardEventBalance
"""
The gift card expiry date.
"""
expiryDate: Date
"""
Previous gift card expiry date.
"""
oldExpiryDate: Date
}
enum GiftCardEventsEnum @doc(category: "Gift cards") {
ISSUED
BOUGHT
UPDATED
ACTIVATED
DEACTIVATED
BALANCE_RESET
EXPIRY_DATE_UPDATED
TAGS_UPDATED
SENT_TO_CUSTOMER
RESENT
NOTE_ADDED
USED_IN_ORDER
}
type GiftCardEventBalance @doc(category: "Gift cards") {
"""
Initial balance of the gift card.
"""
initialBalance: Money
"""
Current balance of the gift card.
"""
currentBalance: Money!
"""
Previous initial balance of the gift card.
"""
oldInitialBalance: Money
"""
Previous current balance of the gift card.
"""
oldCurrentBalance: Money
}
input GiftCardEventFilterInput @doc(category: "Gift cards") {
type: GiftCardEventsEnum
orders: [ID!]
}
"""
The gift card tag.
"""
type GiftCardTag implements Node @doc(category: "Gift cards") {
"""
ID of the tag associated with a gift card.
"""
id: ID!
"""
Name of the tag associated with a gift card.
"""
name: String!
}
"""
Represents an item in the checkout.
"""
type CheckoutLine implements Node & ObjectWithMetadata
@doc(category: "Checkout") {
"""
The ID of the checkout line.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The product variant from which the checkout line was created.
"""
variant: ProductVariant!
"""
The quantity of product variant assigned to the checkout line.
"""
quantity: Int!
"""
The unit price of the checkout line, with taxes and discounts.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
unitPrice: TaxedMoney!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
The unit price of the checkout line, without discounts.
"""
undiscountedUnitPrice: Money!
"""
The unit price of the checkout line prior to promotion.
Added in Saleor 3.21.
"""
priorUnitPrice: Money
"""
The sum of the checkout line price, taxes and discounts.
Triggers the following webhook events:
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
"""
totalPrice: TaxedMoney!
@webhookEventsInfo(asyncEvents: [], syncEvents: [CHECKOUT_CALCULATE_TAXES])
"""
The sum of the checkout line price, without discounts.
"""
undiscountedTotalPrice: Money!
"""
The sum of the checkout line price prior to promotion.
Added in Saleor 3.21.
"""
priorTotalPrice: Money
"""
Indicates whether the item need to be delivered.
"""
requiresShipping: Boolean!
"""
List of problems with the checkout line.
"""
problems: [CheckoutLineProblem!]
"""
Determine if the line is a gift.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
isGift: Boolean
}
"""
Represents an problem in the checkout line.
"""
union CheckoutLineProblem =
CheckoutLineProblemInsufficientStock
| CheckoutLineProblemVariantNotAvailable
"""
Indicates insufficient stock for a given checkout line.Placing the order will not be possible until solving this problem.
"""
type CheckoutLineProblemInsufficientStock @doc(category: "Checkout") {
"""
Available quantity of a variant.
"""
availableQuantity: Int
"""
The line that has variant with insufficient stock.
"""
line: CheckoutLine!
"""
The variant with insufficient stock.
"""
variant: ProductVariant!
}
"""
The variant assigned to the checkout line is not available.Placing the order will not be possible until solving this problem.
"""
type CheckoutLineProblemVariantNotAvailable @doc(category: "Checkout") {
"""
The line that has variant that is not available.
"""
line: CheckoutLine!
}
"""
Represents a delivery method chosen for the checkout. `Warehouse` type is used when checkout is marked as "click and collect" and `ShippingMethod` otherwise.
"""
union DeliveryMethod = Warehouse | ShippingMethod
"""
Represents a payment transaction.
"""
type TransactionItem implements Node & ObjectWithMetadata
@doc(category: "Payments") {
"""
The ID of the object.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
The transaction token.
"""
token: UUID!
"""
Date and time at which payment transaction was created.
"""
createdAt: DateTime!
"""
Date and time at which payment transaction was modified.
"""
modifiedAt: DateTime!
"""
List of actions that can be performed in the current state of a payment.
"""
actions: [TransactionActionEnum!]!
"""
Total amount authorized for this payment.
"""
authorizedAmount: Money!
"""
Total amount of ongoing authorization requests for the transaction.
"""
authorizePendingAmount: Money!
"""
Total amount refunded for this payment.
"""
refundedAmount: Money!
"""
Total amount of ongoing refund requests for the transaction.
"""
refundPendingAmount: Money!
"""
Total amount canceled for this payment.
"""
canceledAmount: Money!
"""
Total amount of ongoing cancel requests for the transaction.
"""
cancelPendingAmount: Money!
"""
Total amount charged for this payment.
"""
chargedAmount: Money!
"""
Total amount of ongoing charge requests for the transaction.
"""
chargePendingAmount: Money!
"""
Name of the transaction.
"""
name: String!
"""
Message related to the transaction.
"""
message: String!
"""
PSP reference of transaction.
"""
pspReference: String!
"""
The related order.
"""
order: Order
"""
The related checkout.
"""
checkout: Checkout
"""
List of all transaction's events.
"""
events: [TransactionEvent!]!
"""
User or App that created the transaction.
"""
createdBy: UserOrApp
"""
The url that will allow to redirect user to payment provider page with transaction details.
"""
externalUrl: String!
}
"""
Represents possible actions on payment transaction.
The following actions are possible:
CHARGE - Represents the charge action.
REFUND - Represents a refund action.
CANCEL - Represents a cancel action. Added in Saleor 3.12.
"""
enum TransactionActionEnum @doc(category: "Payments") {
CHARGE
REFUND
CANCEL
}
"""
Represents an order in the shop.
"""
type Order implements Node & ObjectWithMetadata @doc(category: "Orders") {
"""
ID of the order.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Date and time when the order was created.
"""
created: DateTime!
"""
Date and time when the order was created.
"""
updatedAt: DateTime!
"""
Status of the order.
"""
status: OrderStatus!
"""
User who placed the order. This field is set only for orders placed by authenticated users. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_USERS, MANAGE_ORDERS, HANDLE_PAYMENTS, OWNER.
"""
user: User
"""
Google Analytics tracking client ID.
"""
trackingClientId: String!
"""
Billing address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER.
"""
billingAddress: Address
"""
Shipping address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER.
"""
shippingAddress: Address
"""
Method used for shipping.
"""
shippingMethodName: String
"""
Name of the collection point where the order should be picked up by the customer.
"""
collectionPointName: String
"""
Channel through which the order was placed.
"""
channel: Channel!
"""
List of shipments for the order.
"""
fulfillments: [Fulfillment!]!
"""
List of order lines.
"""
lines: [OrderLine!]!
"""
List of actions that can be performed in the current state of an order.
"""
actions: [OrderAction!]!
"""
Shipping methods that can be used with this order.
"""
availableShippingMethods: [ShippingMethod!]
@deprecated(
reason: "Use `shippingMethods`, this field will be removed in 4.0"
)
"""
Shipping methods related to this order.
"""
shippingMethods: [ShippingMethod!]!
"""
Collection points that can be used for this order.
"""
availableCollectionPoints: [Warehouse!]!
"""
List of order invoices. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER.
"""
invoices: [Invoice!]!
"""
User-friendly number of an order.
"""
number: String!
"""
The ID of the order that was the base for this order.
"""
original: ID
"""
The order origin.
"""
origin: OrderOriginEnum!
"""
Informs if an order is fully paid.
"""
isPaid: Boolean!
"""
Internal payment status.
"""
paymentStatus: PaymentChargeStatusEnum!
"""
User-friendly payment status.
"""
paymentStatusDisplay: String!
"""
The authorize status of the order.
"""
authorizeStatus: OrderAuthorizeStatusEnum!
"""
The charge status of the order.
"""
chargeStatus: OrderChargeStatusEnum!
"""
Returns True if order has to be exempt from taxes.
"""
taxExemption: Boolean!
"""
List of transactions for the order. Requires one of the following permissions: MANAGE_ORDERS, HANDLE_PAYMENTS.
"""
transactions: [TransactionItem!]!
"""
List of payments for the order.
"""
payments: [Payment!]!
"""
Total amount of the order.
"""
total: TaxedMoney!
"""
Undiscounted total amount of the order.
"""
undiscountedTotal: TaxedMoney!
"""
Shipping method for this order.
"""
shippingMethod: ShippingMethod
@deprecated(reason: "Use `deliveryMethod` instead.")
"""
Undiscounted total price of shipping.
Added in Saleor 3.19.
"""
undiscountedShippingPrice: Money!
"""
Total price of shipping.
"""
shippingPrice: TaxedMoney!
"""
The shipping tax rate value.
"""
shippingTaxRate: Float!
"""
Denormalized tax class assigned to the shipping method.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
shippingTaxClass: TaxClass
"""
Denormalized name of the tax class assigned to the shipping method.
"""
shippingTaxClassName: String
"""
Denormalized public metadata of the shipping method's tax class.
"""
shippingTaxClassMetadata: [MetadataItem!]!
"""
Denormalized private metadata of the shipping method's tax class. Requires staff permissions to access.
"""
shippingTaxClassPrivateMetadata: [MetadataItem!]!
token: String! @deprecated(reason: "Use `id` instead.")
"""
Voucher linked to the order.
"""
voucher: Voucher
"""
Voucher code that was used for Order.
Added in Saleor 3.18.
"""
voucherCode: String
"""
List of user gift cards.
"""
giftCards: [GiftCard!]!
"""
Additional information provided by the customer about the order.
"""
customerNote: String!
"""
Weight of the order.
"""
weight: Weight!
"""
URL to which user should be redirected after order is placed.
"""
redirectUrl: String
"""
The sum of line prices not including shipping.
"""
subtotal: TaxedMoney!
"""
User-friendly order status.
"""
statusDisplay: String!
"""
Informs whether a draft order can be finalized(turned into a regular order).
"""
canFinalize: Boolean!
"""
Amount authorized for the order.
"""
totalAuthorized: Money!
"""
Amount captured for the order.
"""
totalCaptured: Money! @deprecated(reason: "Use `totalCharged` instead.")
"""
Amount charged for the order.
"""
totalCharged: Money!
"""
Amount canceled for the order.
"""
totalCanceled: Money!
"""
List of events associated with the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
events: [OrderEvent!]!
"""
The difference between the paid and the order total amount.
"""
totalBalance: Money!
"""
Email address of the customer. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER.
"""
userEmail: String
"""
Returns True, if order requires shipping.
"""
isShippingRequired: Boolean!
"""
The delivery method selected for this order.
"""
deliveryMethod: DeliveryMethod
languageCode: String!
@deprecated(
reason: "Use the `languageCodeEnum` field to fetch the language code."
)
"""
Order language code.
"""
languageCodeEnum: LanguageCodeEnum!
"""
Returns applied discount.
"""
discount: Money @deprecated(reason: "Use the `discounts` field instead.")
"""
Discount name.
"""
discountName: String @deprecated(reason: "Use the `discounts` field instead.")
"""
Translated discount name.
"""
translatedDiscountName: String
@deprecated(reason: "Use the `discounts` field instead.")
"""
List of all discounts assigned to the order.
"""
discounts: [OrderDiscount!]!
"""
List of errors that occurred during order validation.
"""
errors: [OrderError!]!
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean!
"""
External ID of this order.
"""
externalReference: String
"""
ID of the checkout that the order was created from.
"""
checkoutId: ID
"""
List of granted refunds.
Requires one of the following permissions: MANAGE_ORDERS.
"""
grantedRefunds: [OrderGrantedRefund!]!
"""
Total amount of granted refund.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalGrantedRefund: Money!
"""
Total refund amount for the order.
"""
totalRefunded: Money!
"""
Total amount of ongoing refund requests for the order's transactions.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalRefundPending: Money!
"""
Total amount of ongoing authorize requests for the order's transactions.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalAuthorizePending: Money!
"""
Total amount of ongoing charge requests for the order's transactions.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalChargePending: Money!
"""
Total amount of ongoing cancel requests for the order's transactions.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalCancelPending: Money!
"""
The difference amount between granted refund and the amounts that are pending and refunded.
Requires one of the following permissions: MANAGE_ORDERS.
"""
totalRemainingGrant: Money!
}
enum OrderStatus @doc(category: "Orders") {
DRAFT
UNCONFIRMED
UNFULFILLED
PARTIALLY_FULFILLED
PARTIALLY_RETURNED
RETURNED
FULFILLED
CANCELED
EXPIRED
}
"""
Represents order fulfillment.
"""
type Fulfillment implements Node & ObjectWithMetadata @doc(category: "Orders") {
"""
ID of the fulfillment.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Sequence in which the fulfillments were created for an order.
"""
fulfillmentOrder: Int!
"""
Status of fulfillment.
"""
status: FulfillmentStatus!
"""
Fulfillment tracking number.
"""
trackingNumber: String!
"""
Date and time when fulfillment was created.
"""
created: DateTime!
"""
List of lines for the fulfillment.
"""
lines: [FulfillmentLine!]
"""
User-friendly fulfillment status.
"""
statusDisplay: String
"""
Warehouse from fulfillment was fulfilled.
"""
warehouse: Warehouse
"""
Amount of refunded shipping price.
"""
shippingRefundedAmount: Money
"""
Total refunded amount assigned to this fulfillment.
"""
totalRefundedAmount: Money
}
enum FulfillmentStatus @doc(category: "Orders") {
FULFILLED
REFUNDED
RETURNED
REPLACED
REFUNDED_AND_RETURNED
CANCELED
WAITING_FOR_APPROVAL
}
"""
Represents line of the fulfillment.
"""
type FulfillmentLine implements Node @doc(category: "Orders") {
"""
ID of the fulfillment line.
"""
id: ID!
"""
The number of items included in the fulfillment line.
"""
quantity: Int!
"""
The order line to which the fulfillment line is related.
"""
orderLine: OrderLine
}
"""
Represents order line of particular order.
"""
type OrderLine implements Node & ObjectWithMetadata @doc(category: "Orders") {
"""
ID of the order line.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Name of the product in order line.
"""
productName: String!
"""
Name of the variant of product in order line.
"""
variantName: String!
"""
SKU of the product variant.
"""
productSku: String
"""
The ID of the product variant.
"""
productVariantId: String
"""
Whether the product variant requires shipping.
"""
isShippingRequired: Boolean!
"""
Number of variant items ordered.
"""
quantity: Int!
"""
Number of variant items fulfilled.
"""
quantityFulfilled: Int!
"""
Rate of tax applied on product variant.
"""
taxRate: Float!
digitalContentUrl: DigitalContentUrl
thumbnail(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: ThumbnailFormatEnum = ORIGINAL
): Image
"""
Price of the single item in the order line with all the line-level discounts and order-level discount portions applied.
"""
unitPrice: TaxedMoney!
"""
Price of the single item in the order line without any discount applied.
"""
undiscountedUnitPrice: TaxedMoney!
"""
Sum of the line-level discounts applied to the order line. Order-level discounts which affect the line are not visible in this field. For order-level discount portion (if any), please query `order.discounts` field.
"""
unitDiscount: Money!
"""
Reason for line-level discounts applied on the order line. Order-level discounts which affect the line are not visible in this field. For order-level discount reason (if any), please query `order.discounts` field.
"""
unitDiscountReason: String
"""
Value of the discount. Can store fixed value or percent value. This field shouldn't be used when multiple discounts affect the line. There is a limitation, that after running `checkoutComplete` mutation the field always stores fixed value.
"""
unitDiscountValue: PositiveDecimal!
"""
Type of the discount: `fixed` or `percent`. This field shouldn't be used when multiple discounts affect the line. There is a limitation, that after running `checkoutComplete` mutation the field is always set to `fixed`.
"""
unitDiscountType: DiscountValueTypeEnum
"""
Price of the order line.
"""
totalPrice: TaxedMoney!
"""
Price of the order line without discounts.
"""
undiscountedTotalPrice: TaxedMoney!
"""
Returns True, if the line unit price was overridden.
"""
isPriceOverridden: Boolean
"""
A purchased product variant. Note: this field may be null if the variant has been removed from stock at all. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS.
"""
variant: ProductVariant
"""
Product name in the customer's language
"""
translatedProductName: String!
"""
Variant name in the customer's language
"""
translatedVariantName: String!
"""
List of allocations across warehouses.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
allocations: [Allocation!]
"""
Denormalized sale ID, set when order line is created for a product variant that is on sale.
"""
saleId: ID
"""
A quantity of items remaining to be fulfilled.
"""
quantityToFulfill: Int!
"""
Denormalized tax class of the product in this order line.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP.
"""
taxClass: TaxClass
"""
Denormalized name of the tax class.
"""
taxClassName: String
"""
Denormalized public metadata of the tax class.
"""
taxClassMetadata: [MetadataItem!]!
"""
Denormalized private metadata of the tax class. Requires staff permissions to access.
"""
taxClassPrivateMetadata: [MetadataItem!]!
"""
Voucher code that was used for this order line.
"""
voucherCode: String
"""
Determine if the line is a gift.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
isGift: Boolean
"""
List of applied discounts
Added in Saleor 3.21.
"""
discounts: [OrderLineDiscount!]
}
"""
Nonnegative Decimal scalar implementation.
Should be used in places where value must be nonnegative (0 or greater).
"""
scalar PositiveDecimal
"""
Represents allocation.
"""
type Allocation implements Node @doc(category: "Products") {
"""
The ID of allocation.
"""
id: ID!
"""
Quantity allocated for orders.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
quantity: Int!
"""
The warehouse were items were allocated.
Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS.
"""
warehouse: Warehouse!
}
"""
Represent the discount applied to order line.
"""
type OrderLineDiscount @doc(category: "Orders") {
"""
The ID of discount applied.
"""
id: ID!
"""
The type of applied discount: Sale, Voucher or Manual.
"""
type: OrderDiscountType!
"""
The name of applied discount.
"""
name: String
"""
Translated name of the applied discount.
"""
translatedName: String
"""
Type of the discount: fixed or percent
"""
valueType: DiscountValueTypeEnum!
"""
Value of the discount. Can store fixed value or percent value
"""
value: PositiveDecimal!
"""
Explanation for the applied discount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
reason: String
"""
The discount amount applied to the line item.
"""
total: Money!
"""
The discount amount applied to the single line unit.
"""
unit: Money!
}
enum OrderDiscountType @doc(category: "Discounts") {
SALE
VOUCHER
MANUAL
PROMOTION
ORDER_PROMOTION
}
enum OrderAction @doc(category: "Payments") {
"""
Represents the capture action.
"""
CAPTURE
"""
Represents a mark-as-paid action.
"""
MARK_AS_PAID
"""
Represents a refund action.
"""
REFUND
"""
Represents a void action.
"""
VOID
}
"""
Represents an Invoice.
"""
type Invoice implements ObjectWithMetadata & Job & Node
@doc(category: "Orders") {
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Job status.
"""
status: JobStatusEnum!
"""
Date and time at which invoice was created.
"""
createdAt: DateTime!
"""
Date and time at which invoice was updated.
"""
updatedAt: DateTime!
"""
Message associated with an invoice.
"""
message: String
"""
The ID of the object.
"""
id: ID!
"""
Invoice number.
"""
number: String
"""
URL to view an invoice.
"""
externalUrl: String @deprecated(reason: "Use `url` field.")
"""
URL to view/download an invoice.
"""
url: String
"""
Order related to the invoice.
"""
order: Order
}
interface Job {
"""
Job status.
"""
status: JobStatusEnum!
"""
Created date time of job in ISO 8601 format.
"""
createdAt: DateTime!
"""
Date time of job last update in ISO 8601 format.
"""
updatedAt: DateTime!
"""
Job message.
"""
message: String
}
enum JobStatusEnum {
PENDING
SUCCESS
FAILED
DELETED
}
enum OrderOriginEnum @doc(category: "Orders") {
CHECKOUT
DRAFT
REISSUE
BULK_CREATE
}
enum PaymentChargeStatusEnum @doc(category: "Payments") {
NOT_CHARGED
PENDING
PARTIALLY_CHARGED
FULLY_CHARGED
PARTIALLY_REFUNDED
FULLY_REFUNDED
REFUSED
CANCELLED
}
"""
Determine a current authorize status for order.
We treat the order as fully authorized when the sum of authorized and charged funds
cover the `order.total`-`order.totalGrantedRefund`.
We treat the order as partially authorized when the sum of authorized and charged
funds covers only part of the `order.total`-`order.totalGrantedRefund`.
We treat the order as not authorized when the sum of authorized and charged funds is
0.
NONE - the funds are not authorized
PARTIAL - the funds that are authorized and charged don't cover fully the
`order.total`-`order.totalGrantedRefund`
FULL - the funds that are authorized and charged fully cover the
`order.total`-`order.totalGrantedRefund`
"""
enum OrderAuthorizeStatusEnum @doc(category: "Orders") {
NONE
PARTIAL
FULL
}
"""
Determine the current charge status for the order.
An order is considered overcharged when the sum of the
transactionItem's charge amounts exceeds the value of
`order.total` - `order.totalGrantedRefund`.
If the sum of the transactionItem's charge amounts equals
`order.total` - `order.totalGrantedRefund`, we consider the order to be fully
charged.
If the sum of the transactionItem's charge amounts covers a part of the
`order.total` - `order.totalGrantedRefund`, we treat the order as partially charged.
NONE - the funds are not charged.
PARTIAL - the funds that are charged don't cover the
`order.total`-`order.totalGrantedRefund`
FULL - the funds that are charged fully cover the
`order.total`-`order.totalGrantedRefund`
OVERCHARGED - the charged funds are bigger than the
`order.total`-`order.totalGrantedRefund`
"""
enum OrderChargeStatusEnum @doc(category: "Orders") {
NONE
PARTIAL
FULL
OVERCHARGED
}
"""
Represents a payment of a given type.
"""
type Payment implements Node & ObjectWithMetadata @doc(category: "Payments") {
"""
ID of the payment.
"""
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Payment gateway used for payment.
"""
gateway: String!
"""
Determines if the payment is active or not.
"""
isActive: Boolean!
"""
Date and time at which payment was created.
"""
created: DateTime!
"""
Date and time at which payment was modified.
"""
modified: DateTime!
"""
Unique token associated with a payment.
"""
token: String!
"""
Checkout associated with a payment.
"""
checkout: Checkout
"""
Order associated with a payment.
"""
order: Order
"""
Type of method used for payment.
"""
paymentMethodType: String!
"""
IP address of the user who created the payment.
Requires one of the following permissions: MANAGE_ORDERS.
"""
customerIpAddress: String
"""
Internal payment status.
"""
chargeStatus: PaymentChargeStatusEnum!
"""
List of actions that can be performed in the current state of a payment.
Requires one of the following permissions: MANAGE_ORDERS.
"""
actions: [OrderAction!]!
"""
Total amount of the payment.
"""
total: Money
"""
Total amount captured for this payment.
"""
capturedAmount: Money
"""
List of all transactions within this payment.
Requires one of the following permissions: MANAGE_ORDERS.
"""
transactions: [Transaction!]
"""
Maximum amount of money that can be captured.
Requires one of the following permissions: MANAGE_ORDERS.
"""
availableCaptureAmount: Money
"""
Maximum amount of money that can be refunded.
Requires one of the following permissions: MANAGE_ORDERS.
"""
availableRefundAmount: Money
"""
The details of the card used for this payment.
"""
creditCard: CreditCard
"""
Informs whether this is a partial payment.
"""
partial: Boolean!
"""
PSP reference of the payment.
"""
pspReference: String
}
"""
An object representing a single payment.
"""
type Transaction implements Node @doc(category: "Payments") {
"""
ID of the transaction.
"""
id: ID!
"""
Date and time at which transaction was created.
"""
created: DateTime!
"""
Determines the payment associated with a transaction.
"""
payment: Payment!
"""
Unique token associated with a transaction.
"""
token: String!
"""
Determines the type of transaction.
"""
kind: TransactionKind!
"""
Determines if the transaction was successful.
"""
isSuccess: Boolean!
"""
Error associated with transaction, if any.
"""
error: String
"""
Response returned by payment gateway.
"""
gatewayResponse: JSONString!
"""
Total amount of the transaction.
"""
amount: Money
}
enum TransactionKind @doc(category: "Payments") {
EXTERNAL
AUTH
PENDING
ACTION_TO_CONFIRM
REFUND
REFUND_ONGOING
CAPTURE
VOID
CONFIRM
CANCEL
}
type CreditCard @doc(category: "Payments") {
"""
Card brand.
"""
brand: String!
"""
First 4 digits of the card number.
"""
firstDigits: String
"""
Last 4 digits of the card number.
"""
lastDigits: String!
"""
Two-digit number representing the card’s expiration month.
"""
expMonth: Int
"""
Four-digit number representing the card’s expiration year.
"""
expYear: Int
}
"""
History log of the order.
"""
type OrderEvent implements Node @doc(category: "Orders") {
"""
ID of the event associated with an order.
"""
id: ID!
"""
Date when event happened at in ISO 8601 format.
"""
date: DateTime
"""
Order event type.
"""
type: OrderEventsEnum
"""
User who performed the action.
"""
user: User
"""
App that performed the action. Requires of of the following permissions: MANAGE_APPS, MANAGE_ORDERS, OWNER.
"""
app: App
"""
Content of the event.
"""
message: String
"""
Email of the customer.
"""
email: String
"""
Type of an email sent to the customer.
"""
emailType: OrderEventsEmailsEnum
"""
Amount of money.
"""
amount: Float
"""
The payment reference from the payment provider.
"""
paymentId: String
"""
The payment gateway of the payment.
"""
paymentGateway: String
"""
Number of items.
"""
quantity: Int
"""
Composed ID of the Fulfillment.
"""
composedId: String
"""
User-friendly number of an order.
"""
orderNumber: String
"""
Number of an invoice related to the order.
"""
invoiceNumber: String
"""
List of oversold lines names.
"""
oversoldItems: [String!]
"""
The concerned lines.
"""
lines: [OrderEventOrderLineObject!]
"""
The lines fulfilled.
"""
fulfilledItems: [FulfillmentLine!]
"""
The warehouse were items were restocked.
"""
warehouse: Warehouse
"""
The transaction reference of captured payment.
"""
transactionReference: String
"""
Define if shipping costs were included to the refund.
"""
shippingCostsIncluded: Boolean
"""
The order which is related to this order.
"""
relatedOrder: Order
"""
The order event which is related to this event.
"""
related: OrderEvent
"""
The discount applied to the order.
"""
discount: OrderEventDiscountObject
"""
The reference of payment's transaction.
"""
reference: String
}
"""
The different order event types.
"""
enum OrderEventsEnum @doc(category: "Orders") {
DRAFT_CREATED
DRAFT_CREATED_FROM_REPLACE
ADDED_PRODUCTS
REMOVED_PRODUCTS
PLACED
PLACED_FROM_DRAFT
PLACED_AUTOMATICALLY_FROM_PAID_CHECKOUT
OVERSOLD_ITEMS
CANCELED
EXPIRED
ORDER_MARKED_AS_PAID
ORDER_FULLY_PAID
ORDER_REPLACEMENT_CREATED
ORDER_DISCOUNT_ADDED
ORDER_DISCOUNT_AUTOMATICALLY_UPDATED
ORDER_DISCOUNT_UPDATED
ORDER_DISCOUNT_DELETED
ORDER_LINE_DISCOUNT_UPDATED
ORDER_LINE_DISCOUNT_REMOVED
ORDER_LINE_PRODUCT_DELETED
ORDER_LINE_VARIANT_DELETED
UPDATED_ADDRESS
EMAIL_SENT
CONFIRMED
PAYMENT_AUTHORIZED
PAYMENT_CAPTURED
EXTERNAL_SERVICE_NOTIFICATION
PAYMENT_REFUNDED
PAYMENT_VOIDED
PAYMENT_FAILED
TRANSACTION_EVENT
TRANSACTION_CHARGE_REQUESTED
TRANSACTION_REFUND_REQUESTED
TRANSACTION_CANCEL_REQUESTED
TRANSACTION_MARK_AS_PAID_FAILED
INVOICE_REQUESTED
INVOICE_GENERATED
INVOICE_UPDATED
INVOICE_SENT
FULFILLMENT_CANCELED
FULFILLMENT_RESTOCKED_ITEMS
FULFILLMENT_FULFILLED_ITEMS
FULFILLMENT_REFUNDED
FULFILLMENT_RETURNED
FULFILLMENT_REPLACED
FULFILLMENT_AWAITS_APPROVAL
TRACKING_UPDATED
NOTE_ADDED
NOTE_UPDATED
OTHER
}
enum OrderEventsEmailsEnum @doc(category: "Orders") {
PAYMENT_CONFIRMATION
CONFIRMED
SHIPPING_CONFIRMATION
TRACKING_UPDATED
ORDER_CONFIRMATION
ORDER_CANCEL
ORDER_REFUND
FULFILLMENT_CONFIRMATION
DIGITAL_LINKS
}
type OrderEventOrderLineObject @doc(category: "Orders") {
"""
The variant quantity.
"""
quantity: Int
"""
The order line.
"""
orderLine: OrderLine
"""
The variant name.
"""
itemName: String
"""
The discount applied to the order line.
"""
discount: OrderEventDiscountObject
}
type OrderEventDiscountObject @doc(category: "Orders") {
"""
Type of the discount: fixed or percent.
"""
valueType: DiscountValueTypeEnum!
"""
Value of the discount. Can store fixed value or percent value.
"""
value: PositiveDecimal!
"""
Explanation for the applied discount.
"""
reason: String
"""
Returns amount of discount.
"""
amount: Money
"""
Type of the discount: fixed or percent.
"""
oldValueType: DiscountValueTypeEnum
"""
Value of the discount. Can store fixed value or percent value.
"""
oldValue: PositiveDecimal
"""
Returns amount of discount.
"""
oldAmount: Money
}
"""
Contains all details related to the applied discount to the order.
"""
type OrderDiscount implements Node @doc(category: "Discounts") {
"""
The ID of discount applied.
"""
id: ID!
"""
The type of applied discount: Sale, Voucher or Manual.
"""
type: OrderDiscountType!
"""
The name of applied discount.
"""
name: String
"""
Translated name of the applied discount.
"""
translatedName: String
"""
Type of the discount: fixed or percent
"""
valueType: DiscountValueTypeEnum!
"""
Value of the discount. Can store fixed value or percent value
"""
value: PositiveDecimal!
"""
Explanation for the applied discount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
reason: String
"""
Returns amount of discount.
"""
amount: Money! @deprecated(reason: "Use `total` instead.")
"""
The amount of discount applied to the order.
Added in Saleor 3.21.
"""
total: Money!
}
type OrderError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderErrorCode!
"""
Warehouse ID which causes the error.
"""
warehouse: ID
"""
List of order line IDs that cause the error.
"""
orderLines: [ID!]
"""
List of product variants that are associated with the error
"""
variants: [ID!]
"""
A type of address that causes the error.
"""
addressType: AddressTypeEnum
}
enum OrderErrorCode @doc(category: "Orders") {
BILLING_ADDRESS_NOT_SET
CANNOT_CANCEL_FULFILLMENT
CANNOT_CANCEL_ORDER
CANNOT_DELETE
CANNOT_DISCOUNT
CANNOT_REFUND
CANNOT_FULFILL_UNPAID_ORDER
CAPTURE_INACTIVE_PAYMENT
GIFT_CARD_LINE
NOT_EDITABLE
FULFILL_ORDER_LINE
GRAPHQL_ERROR
INVALID
PRODUCT_NOT_PUBLISHED
PRODUCT_UNAVAILABLE_FOR_PURCHASE
NOT_FOUND
ORDER_NO_SHIPPING_ADDRESS
PAYMENT_ERROR
PAYMENT_MISSING
TRANSACTION_ERROR
REQUIRED
SHIPPING_METHOD_NOT_APPLICABLE
SHIPPING_METHOD_REQUIRED
TAX_ERROR
UNIQUE
VOID_INACTIVE_PAYMENT
ZERO_QUANTITY
INVALID_QUANTITY
INSUFFICIENT_STOCK
DUPLICATED_INPUT_ITEM
NOT_AVAILABLE_IN_CHANNEL
CHANNEL_INACTIVE
INVALID_VOUCHER
INVALID_VOUCHER_CODE
NON_EDITABLE_GIFT_LINE
NON_REMOVABLE_GIFT_LINE
MISSING_ADDRESS_DATA
}
enum AddressTypeEnum {
BILLING
SHIPPING
}
"""
The details of granted refund.
"""
type OrderGrantedRefund @doc(category: "Orders") {
id: ID!
"""
Time of creation.
"""
createdAt: DateTime!
"""
Time of last update.
"""
updatedAt: DateTime!
"""
Refund amount.
"""
amount: Money!
"""
Reason of the refund.
"""
reason: String
"""
User who performed the action. Requires of of the following permissions: MANAGE_USERS, MANAGE_STAFF, OWNER.
"""
user: User
"""
App that performed the action.
"""
app: App
"""
If true, the refunded amount includes the shipping price.If false, the refunded amount does not include the shipping price.
"""
shippingCostsIncluded: Boolean!
"""
Lines assigned to the granted refund.
"""
lines: [OrderGrantedRefundLine!]
"""
Status of the granted refund calculated based on transactionItem assigned to granted refund.
Added in Saleor 3.20.
"""
status: OrderGrantedRefundStatusEnum!
"""
List of refund events associated with the granted refund.
Added in Saleor 3.20.
"""
transactionEvents: [TransactionEvent!]
"""
The transaction assigned to the granted refund.
Added in Saleor 3.20.
"""
transaction: TransactionItem
}
"""
Represents granted refund line.
"""
type OrderGrantedRefundLine {
id: ID!
"""
Number of items to refund.
"""
quantity: Int!
"""
Line of the order associated with this granted refund.
"""
orderLine: OrderLine!
"""
Reason for refunding the line.
"""
reason: String
}
"""
Represents the status of a granted refund.
NONE - the refund on related transactionItem is not processed
PENDING - the refund on related transactionItem is pending
FULL - the refund on related transactionItem is fully processed
FAIL - the refund on related transactionItem failed
"""
enum OrderGrantedRefundStatusEnum @doc(category: "Orders") {
NONE
PENDING
SUCCESS
FAILURE
}
"""
Represents transaction's event.
"""
type TransactionEvent implements Node @doc(category: "Payments") {
"""
The ID of the object.
"""
id: ID!
"""
Date and time at which a transaction event was created.
"""
createdAt: DateTime!
"""
PSP reference of transaction.
"""
pspReference: String!
"""
Message related to the transaction's event.
"""
message: String!
"""
The url that will allow to redirect user to payment provider page with transaction details.
"""
externalUrl: String!
"""
The amount related to this event.
"""
amount: Money!
"""
The type of action related to this event.
"""
type: TransactionEventTypeEnum
"""
User or App that created the transaction event.
"""
createdBy: UserOrApp
"""
Idempotency key assigned to the event.
"""
idempotencyKey: String
}
"""
Represents possible event types.
Added in Saleor 3.12.
The following types are possible:
AUTHORIZATION_SUCCESS - represents success authorization.
AUTHORIZATION_FAILURE - represents failure authorization.
AUTHORIZATION_ADJUSTMENT - represents authorization adjustment.
AUTHORIZATION_REQUEST - represents authorization request.
AUTHORIZATION_ACTION_REQUIRED - represents authorization that needs
additional actions from the customer.
CHARGE_ACTION_REQUIRED - represents charge that needs
additional actions from the customer.
CHARGE_SUCCESS - represents success charge.
CHARGE_FAILURE - represents failure charge.
CHARGE_BACK - represents chargeback.
CHARGE_REQUEST - represents charge request.
REFUND_SUCCESS - represents success refund.
REFUND_FAILURE - represents failure refund.
REFUND_REVERSE - represents reverse refund.
REFUND_REQUEST - represents refund request.
CANCEL_SUCCESS - represents success cancel.
CANCEL_FAILURE - represents failure cancel.
CANCEL_REQUEST - represents cancel request.
INFO - represents info event.
"""
enum TransactionEventTypeEnum @doc(category: "Payments") {
AUTHORIZATION_SUCCESS
AUTHORIZATION_FAILURE
AUTHORIZATION_ADJUSTMENT
AUTHORIZATION_REQUEST
AUTHORIZATION_ACTION_REQUIRED
CHARGE_ACTION_REQUIRED
CHARGE_SUCCESS
CHARGE_FAILURE
CHARGE_BACK
CHARGE_REQUEST
REFUND_SUCCESS
REFUND_FAILURE
REFUND_REVERSE
REFUND_REQUEST
CANCEL_SUCCESS
CANCEL_FAILURE
CANCEL_REQUEST
INFO
}
union UserOrApp = User | App
"""
Determine a current authorize status for checkout.
We treat the checkout as fully authorized when the sum of authorized and charged
funds cover the checkout.total.
We treat the checkout as partially authorized when the sum of authorized and charged
funds covers only part of the checkout.total
We treat the checkout as not authorized when the sum of authorized and charged funds
is 0.
NONE - the funds are not authorized
PARTIAL - the cover funds don't cover fully the checkout's total
FULL - the cover funds covers the checkout's total
"""
enum CheckoutAuthorizeStatusEnum @doc(category: "Checkout") {
NONE
PARTIAL
FULL
}
"""
Determine the current charge status for the checkout.
The checkout is considered overcharged when the sum of the transactionItem's charge
amounts exceeds the value of `checkout.total`.
If the sum of the transactionItem's charge amounts equals
`checkout.total`, we consider the checkout to be fully charged.
If the sum of the transactionItem's charge amounts covers a part of the
`checkout.total`, we treat the checkout as partially charged.
NONE - the funds are not charged.
PARTIAL - the funds that are charged don't cover the checkout's total
FULL - the funds that are charged fully cover the checkout's total
OVERCHARGED - the charged funds are bigger than checkout's total
"""
enum CheckoutChargeStatusEnum @doc(category: "Checkout") {
NONE
PARTIAL
FULL
OVERCHARGED
}
"""
Represents a payment method stored for user (tokenized) in payment gateway.
"""
type StoredPaymentMethod @doc(category: "Payments") {
"""
Stored payment method ID.
"""
id: ID!
"""
Payment gateway that stores this payment method.
"""
gateway: PaymentGateway!
"""
ID of stored payment method used to make payment actions. Note: method ID is unique only within the payment gateway.
"""
paymentMethodId: String!
"""
Stored credit card details if available.
"""
creditCardInfo: CreditCard
supportedPaymentFlows: [TokenizedPaymentFlowEnum!]
"""
Type of the payment method. Example: credit card, wallet, etc.
"""
type: String!
"""
Payment method name. Example: last 4 digits of credit card, obfuscated email, etc.
"""
name: String
"""
JSON data returned by Payment Provider app for this payment method.
"""
data: JSON
}
"""
Represents possible tokenized payment flows that can be used to process payment.
The following flows are possible:
INTERACTIVE - Payment method can be used for 1 click checkout - it's prefilled in
checkout form (might require additional authentication from user)
"""
enum TokenizedPaymentFlowEnum @doc(category: "Payments") {
INTERACTIVE
}
scalar JSON
"""
Represents an problem in the checkout.
"""
union CheckoutProblem =
CheckoutLineProblemInsufficientStock
| CheckoutLineProblemVariantNotAvailable
type CheckoutCountableConnection @doc(category: "Checkout") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [CheckoutCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type CheckoutCountableEdge @doc(category: "Checkout") {
"""
The item at the end of the edge.
"""
node: Checkout!
"""
A cursor for use in pagination.
"""
cursor: String!
}
type GiftCardCountableConnection @doc(category: "Gift cards") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [GiftCardCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type GiftCardCountableEdge @doc(category: "Gift cards") {
"""
The item at the end of the edge.
"""
node: GiftCard!
"""
A cursor for use in pagination.
"""
cursor: String!
}
type OrderCountableConnection @doc(category: "Orders") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [OrderCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type OrderCountableEdge @doc(category: "Orders") {
"""
The item at the end of the edge.
"""
node: Order!
"""
A cursor for use in pagination.
"""
cursor: String!
}
"""
Represents user's permissions.
"""
type UserPermission @doc(category: "Users") {
"""
Internal code for permission.
"""
code: PermissionEnum!
"""
Describe action(s) allowed to do by permission.
"""
name: String!
"""
List of user permission groups which contains this permission.
"""
sourcePermissionGroups(
"""
ID of user whose groups should be returned.
"""
userId: ID!
): [Group!]
}
"""
Represents permission group data.
"""
type Group implements Node @doc(category: "Users") {
"""
The ID of the group.
"""
id: ID!
"""
The name of the group.
"""
name: String!
"""
List of group users
Requires one of the following permissions: MANAGE_STAFF.
"""
users: [User!]
"""
List of group permissions
"""
permissions: [Permission!]
"""
True, if the currently authenticated user has rights to manage a group.
"""
userCanManage: Boolean!
"""
List of channels the group has access to.
"""
accessibleChannels: [Channel!]
"""
Determine if the group have restricted access to channels.
"""
restrictedAccessToChannels: Boolean!
}
"""
History log of the customer.
"""
type CustomerEvent implements Node @doc(category: "Users") {
"""
The ID of the customer event.
"""
id: ID!
"""
Date when event happened at in ISO 8601 format.
"""
date: DateTime
"""
Customer event type.
"""
type: CustomerEventsEnum
"""
User who performed the action.
"""
user: User
"""
App that performed the action.
"""
app: App
"""
Content of the event.
"""
message: String
"""
Number of objects concerned by the event.
"""
count: Int
"""
The concerned order.
"""
order: Order
"""
The concerned order line.
"""
orderLine: OrderLine
}
enum CustomerEventsEnum @doc(category: "Users") {
ACCOUNT_CREATED
ACCOUNT_ACTIVATED
ACCOUNT_DEACTIVATED
PASSWORD_RESET_LINK_SENT
PASSWORD_RESET
EMAIL_CHANGED_REQUEST
PASSWORD_CHANGED
EMAIL_CHANGED
PLACED_ORDER
NOTE_ADDED_TO_ORDER
DIGITAL_LINK_DOWNLOADED
CUSTOMER_DELETED
NAME_ASSIGNED
EMAIL_ASSIGNED
NOTE_ADDED
}
"""
Represents a payment source stored for user in payment gateway, such as credit card.
"""
type PaymentSource @doc(category: "Payments") {
"""
Payment gateway name.
"""
gateway: String!
"""
ID of stored payment method.
"""
paymentMethodId: String
"""
Stored credit card details if available.
"""
creditCardInfo: CreditCard
"""
List of public metadata items.
Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
}
"""
Store the current and allowed usage.
"""
type LimitInfo {
"""
Defines the current resource usage.
"""
currentUsage: Limits!
"""
Defines the allowed maximum resource usage, null means unlimited.
"""
allowedUsage: Limits!
}
type Limits {
"""
Defines the number of channels.
"""
channels: Int
"""
Defines the number of order.
"""
orders: Int
"""
Defines the number of product variants.
"""
productVariants: Int
"""
Defines the number of staff users.
"""
staffUsers: Int
"""
Defines the number of warehouses.
"""
warehouses: Int
}
"""
Gift card related settings from site settings.
"""
type GiftCardSettings @doc(category: "Gift cards") {
"""
The gift card expiry type settings.
"""
expiryType: GiftCardSettingsExpiryTypeEnum!
"""
The gift card expiry period settings.
"""
expiryPeriod: TimePeriod
}
enum GiftCardSettingsExpiryTypeEnum @doc(category: "Gift cards") {
NEVER_EXPIRE
EXPIRY_PERIOD
}
type TimePeriod {
"""
The length of the period.
"""
amount: Int!
"""
The type of the period.
"""
type: TimePeriodTypeEnum!
}
enum TimePeriodTypeEnum {
DAY
WEEK
MONTH
YEAR
}
input ShippingZoneFilterInput @doc(category: "Shipping") {
search: String
channels: [ID!]
}
"""
A connection to a list of digital content items.
"""
type DigitalContentCountableConnection @doc(category: "Products") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [DigitalContentCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type DigitalContentCountableEdge @doc(category: "Products") {
"""
The item at the end of the edge.
"""
node: DigitalContent!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input CategoryFilterInput @doc(category: "Products") {
search: String
metadata: [MetadataFilter!]
ids: [ID!]
slugs: [String!]
"""
Filter by when was the most recent update.
"""
updatedAt: DateTimeRangeInput
}
input CategoryWhereInput @doc(category: "Products") {
metadata: [MetadataFilter!]
ids: [ID!]
"""
List of conditions that must be met.
"""
AND: [CategoryWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [CategoryWhereInput!]
}
input CategorySortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort categories.
"""
direction: OrderDirection!
"""
Specifies the channel in which to sort the data.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
"""
Sort categories by the selected field.
"""
field: CategorySortField!
}
enum CategorySortField @doc(category: "Products") {
"""
Sort categories by name.
"""
NAME
"""
Sort categories by product count.
"""
PRODUCT_COUNT
"""
Sort categories by subcategory count.
"""
SUBCATEGORY_COUNT
}
input CollectionFilterInput @doc(category: "Products") {
published: CollectionPublished
search: String
metadata: [MetadataFilter!]
ids: [ID!]
slugs: [String!]
"""
Specifies the channel by which the data should be filtered.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
}
enum CollectionPublished @doc(category: "Products") {
PUBLISHED
HIDDEN
}
input CollectionWhereInput @doc(category: "Products") {
metadata: [MetadataFilter!]
ids: [ID!]
"""
List of conditions that must be met.
"""
AND: [CollectionWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [CollectionWhereInput!]
}
input CollectionSortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort collections.
"""
direction: OrderDirection!
"""
Specifies the channel in which to sort the data.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
"""
Sort collections by the selected field.
"""
field: CollectionSortField!
}
enum CollectionSortField @doc(category: "Products") {
"""
Sort collections by name.
"""
NAME
"""
Sort collections by availability.
This option requires a channel filter to work as the values can vary between channels.
"""
AVAILABILITY
"""
Sort collections by product count.
"""
PRODUCT_COUNT
"""
Sort collections by publication date.
This option requires a channel filter to work as the values can vary between channels.
"""
PUBLICATION_DATE
"""
Sort collections by publication date.
This option requires a channel filter to work as the values can vary between channels.
"""
PUBLISHED_AT
}
input ProductTypeFilterInput @doc(category: "Products") {
search: String
configurable: ProductTypeConfigurable
productType: ProductTypeEnum
metadata: [MetadataFilter!]
kind: ProductTypeKindEnum
ids: [ID!]
slugs: [String!]
}
enum ProductTypeConfigurable @doc(category: "Products") {
CONFIGURABLE
SIMPLE
}
enum ProductTypeEnum @doc(category: "Products") {
DIGITAL
SHIPPABLE
}
input ProductTypeSortingInput @doc(category: "Products") {
"""
Specifies the direction in which to sort product types.
"""
direction: OrderDirection!
"""
Sort product types by the selected field.
"""
field: ProductTypeSortField!
}
enum ProductTypeSortField @doc(category: "Products") {
"""
Sort products by name.
"""
NAME
"""
Sort products by type.
"""
DIGITAL
"""
Sort products by shipping.
"""
SHIPPING_REQUIRED
}
type PaymentCountableConnection @doc(category: "Payments") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [PaymentCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type PaymentCountableEdge @doc(category: "Payments") {
"""
The item at the end of the edge.
"""
node: Payment!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PaymentFilterInput @doc(category: "Payments") {
"""
Filter by ids.
"""
ids: [ID!]
checkouts: [ID!]
}
type PageCountableConnection @doc(category: "Pages") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [PageCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type PageCountableEdge @doc(category: "Pages") {
"""
The item at the end of the edge.
"""
node: Page!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PageSortingInput @doc(category: "Pages") {
"""
Specifies the direction in which to sort pages.
"""
direction: OrderDirection!
"""
Sort pages by the selected field.
"""
field: PageSortField!
}
enum PageSortField @doc(category: "Pages") {
"""
Sort pages by title.
"""
TITLE
"""
Sort pages by slug.
"""
SLUG
"""
Sort pages by visibility.
"""
VISIBILITY
"""
Sort pages by creation date.
"""
CREATION_DATE
"""
Sort pages by publication date.
"""
PUBLICATION_DATE
"""
Sort pages by publication date.
"""
PUBLISHED_AT
"""
Sort pages by creation date.
"""
CREATED_AT
}
input PageFilterInput @doc(category: "Pages") {
search: String
metadata: [MetadataFilter!]
pageTypes: [ID!]
ids: [ID!]
slugs: [String!]
}
type PageTypeCountableConnection @doc(category: "Pages") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [PageTypeCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type PageTypeCountableEdge @doc(category: "Pages") {
"""
The item at the end of the edge.
"""
node: PageType!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PageTypeSortingInput @doc(category: "Pages") {
"""
Specifies the direction in which to sort page types.
"""
direction: OrderDirection!
"""
Sort page types by the selected field.
"""
field: PageTypeSortField!
}
enum PageTypeSortField @doc(category: "Pages") {
"""
Sort page types by name.
"""
NAME
"""
Sort page types by slug.
"""
SLUG
}
input PageTypeFilterInput @doc(category: "Pages") {
search: String
slugs: [String!]
}
type OrderEventCountableConnection @doc(category: "Orders") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [OrderEventCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type OrderEventCountableEdge @doc(category: "Orders") {
"""
The item at the end of the edge.
"""
node: OrderEvent!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input OrderSortingInput @doc(category: "Orders") {
"""
Specifies the direction in which to sort orders.
"""
direction: OrderDirection!
"""
Sort orders by the selected field.
"""
field: OrderSortField!
}
enum OrderSortField @doc(category: "Orders") {
"""
Sort orders by number.
"""
NUMBER
"""
Sort orders by rank. Note: This option is available only with the `search` filter.
"""
RANK
"""
Sort orders by creation date.
"""
CREATION_DATE
"""
Sort orders by creation date.
"""
CREATED_AT
"""
Sort orders by last modified at.
"""
LAST_MODIFIED_AT
"""
Sort orders by customer.
"""
CUSTOMER
"""
Sort orders by payment.
"""
PAYMENT
"""
Sort orders by fulfillment status.
"""
FULFILLMENT_STATUS
}
input OrderFilterInput @doc(category: "Orders") {
paymentStatus: [PaymentChargeStatusEnum!]
status: [OrderStatusFilter!]
customer: String
created: DateRangeInput
search: String
metadata: [MetadataFilter!]
channels: [ID!]
authorizeStatus: [OrderAuthorizeStatusEnum!]
chargeStatus: [OrderChargeStatusEnum!]
updatedAt: DateTimeRangeInput
isClickAndCollect: Boolean
isPreorder: Boolean
ids: [ID!]
checkoutTokens: [UUID!]
giftCardUsed: Boolean
giftCardBought: Boolean
numbers: [String!]
checkoutIds: [ID!]
}
enum OrderStatusFilter @doc(category: "Orders") {
READY_TO_FULFILL
READY_TO_CAPTURE
UNFULFILLED
UNCONFIRMED
PARTIALLY_FULFILLED
FULFILLED
CANCELED
}
input OrderDraftFilterInput @doc(category: "Orders") {
customer: String
created: DateRangeInput
search: String
metadata: [MetadataFilter!]
channels: [ID!]
}
type MenuCountableConnection @doc(category: "Menu") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [MenuCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type MenuCountableEdge @doc(category: "Menu") {
"""
The item at the end of the edge.
"""
node: Menu!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input MenuSortingInput {
"""
Specifies the direction in which to sort menus.
"""
direction: OrderDirection!
"""
Sort menus by the selected field.
"""
field: MenuSortField!
}
enum MenuSortField {
"""
Sort menus by name.
"""
NAME
"""
Sort menus by items count.
"""
ITEMS_COUNT
}
input MenuFilterInput {
search: String
slug: [String!]
metadata: [MetadataFilter!]
slugs: [String!]
}
type MenuItemCountableConnection @doc(category: "Menu") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [MenuItemCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type MenuItemCountableEdge @doc(category: "Menu") {
"""
The item at the end of the edge.
"""
node: MenuItem!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input MenuItemSortingInput {
"""
Specifies the direction in which to sort menu items.
"""
direction: OrderDirection!
"""
Sort menu items by the selected field.
"""
field: MenuItemsSortField!
}
enum MenuItemsSortField {
"""
Sort menu items by name.
"""
NAME
}
input MenuItemFilterInput {
search: String
metadata: [MetadataFilter!]
}
input GiftCardSortingInput @doc(category: "Gift cards") {
"""
Specifies the direction in which to sort gift cards.
"""
direction: OrderDirection!
"""
Sort gift cards by the selected field.
"""
field: GiftCardSortField!
}
enum GiftCardSortField @doc(category: "Gift cards") {
"""
Sort gift cards by product.
"""
PRODUCT
"""
Sort gift cards by used by.
"""
USED_BY
"""
Sort gift cards by current balance.
"""
CURRENT_BALANCE
"""
Sort gift cards by created at.
"""
CREATED_AT
}
input GiftCardFilterInput @doc(category: "Gift cards") {
isActive: Boolean
metadata: [MetadataFilter!]
tags: [String!]
products: [ID!]
usedBy: [ID!]
used: Boolean
currency: String
currentBalance: PriceRangeInput
initialBalance: PriceRangeInput
code: String
createdByEmail: String
}
type GiftCardTagCountableConnection @doc(category: "Gift cards") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [GiftCardTagCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type GiftCardTagCountableEdge @doc(category: "Gift cards") {
"""
The item at the end of the edge.
"""
node: GiftCardTag!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input GiftCardTagFilterInput @doc(category: "Gift cards") {
search: String
}
"""
Plugin.
"""
type Plugin {
"""
Identifier of the plugin.
"""
id: ID!
"""
Name of the plugin.
"""
name: String!
"""
Description of the plugin.
"""
description: String!
"""
Global configuration of the plugin (not channel-specific).
"""
globalConfiguration: PluginConfiguration
"""
Channel-specific plugin configuration.
"""
channelConfigurations: [PluginConfiguration!]!
}
"""
Stores information about a configuration of plugin.
"""
type PluginConfiguration {
"""
Determines if plugin is active or not.
"""
active: Boolean!
"""
The channel to which the plugin configuration is assigned to.
"""
channel: Channel
"""
Configuration of the plugin.
"""
configuration: [ConfigurationItem!]
}
"""
Stores information about a single configuration field.
"""
type ConfigurationItem {
"""
Name of the field.
"""
name: String!
"""
Current value of the field.
"""
value: String
"""
Type of the field.
"""
type: ConfigurationTypeFieldEnum
"""
Help text for the field.
"""
helpText: String
"""
Label for the field.
"""
label: String
}
enum ConfigurationTypeFieldEnum {
STRING
MULTILINE
BOOLEAN
SECRET
PASSWORD
SECRETMULTILINE
OUTPUT
}
type PluginCountableConnection {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [PluginCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type PluginCountableEdge {
"""
The item at the end of the edge.
"""
node: Plugin!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PluginFilterInput {
statusInChannels: PluginStatusInChannelsInput
search: String
type: PluginConfigurationType
}
input PluginStatusInChannelsInput {
active: Boolean!
channels: [ID!]!
}
enum PluginConfigurationType {
PER_CHANNEL
GLOBAL
}
input PluginSortingInput {
"""
Specifies the direction in which to sort plugins.
"""
direction: OrderDirection!
"""
Sort plugins by the selected field.
"""
field: PluginSortField!
}
enum PluginSortField {
NAME
IS_ACTIVE
}
type SaleCountableConnection @doc(category: "Discounts") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [SaleCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type SaleCountableEdge @doc(category: "Discounts") {
"""
The item at the end of the edge.
"""
node: Sale!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input SaleFilterInput @doc(category: "Discounts") {
status: [DiscountStatusEnum!]
saleType: DiscountValueTypeEnum
started: DateTimeRangeInput
search: String
metadata: [MetadataFilter!]
updatedAt: DateTimeRangeInput
}
enum DiscountStatusEnum @doc(category: "Discounts") {
ACTIVE
EXPIRED
SCHEDULED
}
input SaleSortingInput @doc(category: "Discounts") {
"""
Specifies the direction in which to sort sales.
"""
direction: OrderDirection!
"""
Specifies the channel in which to sort the data.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
"""
Sort sales by the selected field.
"""
field: SaleSortField!
}
enum SaleSortField @doc(category: "Discounts") {
"""
Sort sales by name.
"""
NAME
"""
Sort sales by start date.
"""
START_DATE
"""
Sort sales by end date.
"""
END_DATE
"""
Sort sales by value.
This option requires a channel filter to work as the values can vary between channels.
"""
VALUE
"""
Sort sales by type.
"""
TYPE
"""
Sort sales by created at.
"""
CREATED_AT
"""
Sort sales by last modified at.
"""
LAST_MODIFIED_AT
}
type VoucherCountableConnection @doc(category: "Discounts") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [VoucherCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type VoucherCountableEdge @doc(category: "Discounts") {
"""
The item at the end of the edge.
"""
node: Voucher!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input VoucherFilterInput @doc(category: "Discounts") {
status: [DiscountStatusEnum!]
timesUsed: IntRangeInput
discountType: [VoucherDiscountType!]
started: DateTimeRangeInput
search: String
metadata: [MetadataFilter!]
ids: [ID!]
}
enum VoucherDiscountType @doc(category: "Discounts") {
FIXED
PERCENTAGE
SHIPPING
}
input VoucherSortingInput @doc(category: "Discounts") {
"""
Specifies the direction in which to sort vouchers.
"""
direction: OrderDirection!
"""
Specifies the channel in which to sort the data.
"""
channel: String
@deprecated(reason: "Use root-level channel argument instead.")
"""
Sort vouchers by the selected field.
"""
field: VoucherSortField!
}
enum VoucherSortField {
"""
Sort vouchers by code.
"""
CODE
"""
Sort vouchers by name.
Added in Saleor 3.18.
"""
NAME
"""
Sort vouchers by start date.
"""
START_DATE
"""
Sort vouchers by end date.
"""
END_DATE
"""
Sort vouchers by value.
This option requires a channel filter to work as the values can vary between channels.
"""
VALUE
"""
Sort vouchers by type.
"""
TYPE
"""
Sort vouchers by usage limit.
"""
USAGE_LIMIT
"""
Sort vouchers by minimum spent amount.
This option requires a channel filter to work as the values can vary between channels.
"""
MINIMUM_SPENT_AMOUNT
}
"""
Represents the promotion that allow creating discounts based on given conditions, and is visible to all the customers.
"""
type Promotion implements Node & ObjectWithMetadata
@doc(category: "Discounts") {
id: ID!
"""
List of private metadata items. Requires staff permissions to access.
"""
privateMetadata: [MetadataItem!]!
"""
A single key from private metadata. Requires staff permissions to access.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
privateMetafield(key: String!): String
"""
Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.
"""
privateMetafields(keys: [String!]): Metadata
"""
List of public metadata items. Can be accessed without permissions.
"""
metadata: [MetadataItem!]!
"""
A single key from public metadata.
Tip: Use GraphQL aliases to fetch multiple keys.
"""
metafield(key: String!): String
"""
Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.
"""
metafields(keys: [String!]): Metadata
"""
Name of the promotion.
"""
name: String!
"""
The type of the promotion. Implicate if the discount is applied on catalogue or order level.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
type: PromotionTypeEnum
"""
Description of the promotion.
"""
description: JSON
"""
Start date of the promotion.
"""
startDate: DateTime!
"""
End date of the promotion.
"""
endDate: DateTime
"""
Date time of promotion creation.
"""
createdAt: DateTime!
"""
Date time of last update of promotion.
"""
updatedAt: DateTime!
"""
The list of promotion rules.
"""
rules: [PromotionRule!]
"""
Returns translated promotion fields for the given language code.
"""
translation(
"""
A language code to return the translation for promotion.
"""
languageCode: LanguageCodeEnum!
): PromotionTranslation
"""
The list of events associated with the promotion.
"""
events: [PromotionEvent!]
}
enum PromotionTypeEnum @doc(category: "Discounts") {
CATALOGUE
ORDER
}
"""
Represents the promotion rule that specifies the conditions that must be met to apply the promotion discount.
"""
type PromotionRule implements Node @doc(category: "Discounts") {
id: ID!
"""
Name of the promotion rule.
"""
name: String
"""
Description of the promotion rule.
"""
description: JSON
"""
Promotion to which the rule belongs.
"""
promotion: Promotion
"""
List of channels where the rule applies.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
channels: [Channel!]
"""
The reward value of the promotion rule. Defines the discount value applied when the rule conditions are met.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
rewardValue: PositiveDecimal
"""
The type of reward value of the promotion rule.
"""
rewardValueType: RewardValueTypeEnum
"""
The type of the predicate that must be met to apply the reward.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
predicateType: PromotionTypeEnum
"""
The catalogue predicate that must be met to apply the rule reward.
"""
cataloguePredicate: JSON
"""
The checkout/order predicate that must be met to apply the rule reward.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderPredicate: JSON
"""
The reward type of the promotion rule.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
rewardType: RewardTypeEnum
"""
Returns translated promotion rule fields for the given language code.
"""
translation(
"""
A language code to return the translation for promotion rule.
"""
languageCode: LanguageCodeEnum!
): PromotionRuleTranslation
"""
Product variant IDs available as a gift to choose.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
giftIds: [ID!]
"""
Defines the maximum number of gifts to choose from the gifts list.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
giftsLimit: Int
}
enum RewardValueTypeEnum @doc(category: "Discounts") {
FIXED
PERCENTAGE
}
enum RewardTypeEnum @doc(category: "Discounts") {
SUBTOTAL_DISCOUNT
GIFT
}
union PromotionEvent =
PromotionCreatedEvent
| PromotionUpdatedEvent
| PromotionStartedEvent
| PromotionEndedEvent
| PromotionRuleCreatedEvent
| PromotionRuleUpdatedEvent
| PromotionRuleDeletedEvent
"""
History log of the promotion created event.
"""
type PromotionCreatedEvent implements Node & PromotionEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
}
interface PromotionEventInterface {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
}
enum PromotionEventsEnum @doc(category: "Discounts") {
PROMOTION_CREATED
PROMOTION_UPDATED
PROMOTION_STARTED
PROMOTION_ENDED
RULE_CREATED
RULE_UPDATED
RULE_DELETED
}
"""
History log of the promotion updated event.
"""
type PromotionUpdatedEvent implements Node & PromotionEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
}
"""
History log of the promotion started event.
"""
type PromotionStartedEvent implements Node & PromotionEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
}
"""
History log of the promotion ended event.
"""
type PromotionEndedEvent implements Node & PromotionEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
}
"""
History log of the promotion rule created event.
"""
type PromotionRuleCreatedEvent implements Node & PromotionEventInterface & PromotionRuleEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
"""
The rule ID associated with the promotion event.
"""
ruleId: String
}
"""
History log of the promotion event related to rule.
"""
interface PromotionRuleEventInterface {
"""
The rule ID associated with the promotion event.
"""
ruleId: String
}
"""
History log of the promotion rule created event.
"""
type PromotionRuleUpdatedEvent implements Node & PromotionEventInterface & PromotionRuleEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
"""
The rule ID associated with the promotion event.
"""
ruleId: String
}
"""
History log of the promotion rule created event.
"""
type PromotionRuleDeletedEvent implements Node & PromotionEventInterface & PromotionRuleEventInterface
@doc(category: "Discounts") {
id: ID!
"""
Date when event happened.
"""
date: DateTime!
"""
Promotion event type.
"""
type: PromotionEventsEnum!
"""
User or App that created the promotion event.
Requires one of the following permissions: MANAGE_STAFF, MANAGE_APPS, OWNER.
"""
createdBy: UserOrApp
"""
The rule ID associated with the promotion event.
"""
ruleId: String
}
type PromotionCountableConnection @doc(category: "Discounts") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [PromotionCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type PromotionCountableEdge @doc(category: "Discounts") {
"""
The item at the end of the edge.
"""
node: Promotion!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PromotionWhereInput @doc(category: "Discounts") {
metadata: [MetadataFilter!]
ids: [ID!]
"""
Filter by promotion name.
"""
name: StringFilterInput
"""
Filter promotions by end date.
"""
endDate: DateTimeFilterInput
"""
Filter promotions by start date.
"""
startDate: DateTimeFilterInput
isOldSale: Boolean
type: PromotionTypeEnumFilterInput
"""
List of conditions that must be met.
"""
AND: [PromotionWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [PromotionWhereInput!]
}
input PromotionTypeEnumFilterInput @doc(category: "Discounts") {
"""
The value equal to.
"""
eq: PromotionTypeEnum
"""
The value included in.
"""
oneOf: [PromotionTypeEnum!]
}
input PromotionSortingInput @doc(category: "Discounts") {
"""
Specifies the direction in which to sort promotions.
"""
direction: OrderDirection!
"""
Sort promotions by the selected field.
"""
field: PromotionSortField!
}
enum PromotionSortField @doc(category: "Discounts") {
"""
Sort promotions by name.
"""
NAME
"""
Sort promotions by start date.
"""
START_DATE
"""
Sort promotions by end date.
"""
END_DATE
"""
Sort promotions by created at.
"""
CREATED_AT
}
"""
Represents a job data of exported file.
"""
type ExportFile implements Node & Job {
"""
The ID of the export file.
"""
id: ID!
"""
Job status.
"""
status: JobStatusEnum!
"""
Created date time of job in ISO 8601 format.
"""
createdAt: DateTime!
"""
Date time of job last update in ISO 8601 format.
"""
updatedAt: DateTime!
"""
Job message.
"""
message: String
"""
The URL of field to download.
"""
url: String
"""
List of events associated with the export.
"""
events: [ExportEvent!]
"""
The user who requests file export.
"""
user: User
"""
The app which requests file export.
"""
app: App
}
"""
History log of export file.
"""
type ExportEvent implements Node {
"""
The ID of the object.
"""
id: ID!
"""
Date when event happened at in ISO 8601 format.
"""
date: DateTime!
"""
Export event type.
"""
type: ExportEventsEnum!
"""
User who performed the action. Requires one of the following permissions: OWNER, MANAGE_STAFF.
"""
user: User
"""
App which performed the action. Requires one of the following permissions: OWNER, MANAGE_APPS.
"""
app: App
"""
Content of the event.
"""
message: String!
}
enum ExportEventsEnum {
EXPORT_PENDING
EXPORT_SUCCESS
EXPORT_FAILED
EXPORT_DELETED
EXPORTED_FILE_SENT
EXPORT_FAILED_INFO_SENT
}
type ExportFileCountableConnection {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [ExportFileCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type ExportFileCountableEdge {
"""
The item at the end of the edge.
"""
node: ExportFile!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input ExportFileFilterInput {
createdAt: DateTimeRangeInput
updatedAt: DateTimeRangeInput
status: JobStatusEnum
user: String
app: String
}
input ExportFileSortingInput {
"""
Specifies the direction in which to sort export file.
"""
direction: OrderDirection!
"""
Sort export file by the selected field.
"""
field: ExportFileSortField!
}
enum ExportFileSortField {
STATUS
CREATED_AT
UPDATED_AT
LAST_MODIFIED_AT
}
input CheckoutSortingInput @doc(category: "Checkout") {
"""
Specifies the direction in which to sort checkouts.
"""
direction: OrderDirection!
"""
Sort checkouts by the selected field.
"""
field: CheckoutSortField!
}
enum CheckoutSortField @doc(category: "Checkout") {
"""
Sort checkouts by creation date.
"""
CREATION_DATE
"""
Sort checkouts by customer.
"""
CUSTOMER
"""
Sort checkouts by payment.
"""
PAYMENT
}
input CheckoutFilterInput @doc(category: "Checkout") {
customer: String
created: DateRangeInput
search: String
metadata: [MetadataFilter!]
channels: [ID!]
updatedAt: DateRangeInput
authorizeStatus: [CheckoutAuthorizeStatusEnum!]
chargeStatus: [CheckoutChargeStatusEnum!]
}
type CheckoutLineCountableConnection @doc(category: "Checkout") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [CheckoutLineCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type CheckoutLineCountableEdge @doc(category: "Checkout") {
"""
The item at the end of the edge.
"""
node: CheckoutLine!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input AttributeSortingInput @doc(category: "Attributes") {
"""
Specifies the direction in which to sort attributes.
"""
direction: OrderDirection!
"""
Sort attributes by the selected field.
"""
field: AttributeSortField!
}
enum AttributeSortField @doc(category: "Attributes") {
"""
Sort attributes by name
"""
NAME
"""
Sort attributes by slug
"""
SLUG
"""
Sort attributes by the value required flag
"""
VALUE_REQUIRED
"""
Sort attributes by the variant only flag
"""
IS_VARIANT_ONLY
"""
Sort attributes by visibility in the storefront
"""
VISIBLE_IN_STOREFRONT
"""
Sort attributes by the filterable in storefront flag
"""
FILTERABLE_IN_STOREFRONT
"""
Sort attributes by the filterable in dashboard flag
"""
FILTERABLE_IN_DASHBOARD
"""
Sort attributes by their position in storefront
"""
STOREFRONT_SEARCH_POSITION
"""
Sort attributes based on whether they can be displayed or not in a product grid.
"""
AVAILABLE_IN_GRID
}
"""
Represents ongoing installation of app.
"""
type AppInstallation implements Node & Job @doc(category: "Apps") {
"""
The ID of the app installation.
"""
id: ID!
"""
Job status.
"""
status: JobStatusEnum!
"""
Created date time of job in ISO 8601 format.
"""
createdAt: DateTime!
"""
Date time of job last update in ISO 8601 format.
"""
updatedAt: DateTime!
"""
Job message.
"""
message: String
"""
The name of the app installation.
"""
appName: String!
"""
The URL address of manifest for the app installation.
"""
manifestUrl: String!
"""
App's brand data.
"""
brand: AppBrand
}
type AppCountableConnection @doc(category: "Apps") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [AppCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type AppCountableEdge @doc(category: "Apps") {
"""
The item at the end of the edge.
"""
node: App!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input AppFilterInput @doc(category: "Apps") {
search: String
isActive: Boolean
type: AppTypeEnum
}
input AppSortingInput @doc(category: "Apps") {
"""
Specifies the direction in which to sort apps.
"""
direction: OrderDirection!
"""
Sort apps by the selected field.
"""
field: AppSortField!
}
enum AppSortField @doc(category: "Apps") {
"""
Sort apps by name.
"""
NAME
"""
Sort apps by creation date.
"""
CREATION_DATE
}
type AppExtensionCountableConnection @doc(category: "Apps") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [AppExtensionCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type AppExtensionCountableEdge @doc(category: "Apps") {
"""
The item at the end of the edge.
"""
node: AppExtension!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input AppExtensionFilterInput @doc(category: "Apps") {
mount: [AppExtensionMountEnum!]
target: AppExtensionTargetEnum
}
"""
Represents address validation rules for a country.
"""
type AddressValidationData @doc(category: "Users") {
"""
The country code of the address validation rule.
"""
countryCode: String!
"""
The country name of the address validation rule.
"""
countryName: String!
"""
The address format of the address validation rule.
Many fields in the JSON refer to address fields by one-letter abbreviations. These are defined as follows:
- `N`: Name
- `O`: Organization
- `A`: Street Address Line(s)
- `D`: Dependent locality (may be an inner-city district or a suburb)
- `C`: City or Locality
- `S`: Administrative area such as a state, province, island etc
- `Z`: Zip or postal code
- `X`: Sorting code
[Click here for more information.](https://github.com/google/libaddressinput/wiki/AddressValidationMetadata)
"""
addressFormat: String!
"""
The latin address format of the address validation rule.
Many fields in the JSON refer to address fields by one-letter abbreviations. These are defined as follows:
- `N`: Name
- `O`: Organization
- `A`: Street Address Line(s)
- `D`: Dependent locality (may be an inner-city district or a suburb)
- `C`: City or Locality
- `S`: Administrative area such as a state, province, island etc
- `Z`: Zip or postal code
- `X`: Sorting code
[Click here for more information.](https://github.com/google/libaddressinput/wiki/AddressValidationMetadata)
"""
addressLatinFormat: String!
"""
The allowed fields to use in address.
"""
allowedFields: [String!]!
"""
The required fields to create a valid address.
"""
requiredFields: [String!]!
"""
The list of fields that should be in upper case for address validation rule.
"""
upperFields: [String!]!
"""
The formal name of the county area of the address validation rule.
"""
countryAreaType: String!
"""
The available choices for the country area of the address validation rule.
"""
countryAreaChoices: [ChoiceValue!]!
"""
The formal name of the city of the address validation rule.
"""
cityType: String!
"""
The available choices for the city of the address validation rule.
"""
cityChoices: [ChoiceValue!]!
"""
The formal name of the city area of the address validation rule.
"""
cityAreaType: String!
"""
The available choices for the city area of the address validation rule.
"""
cityAreaChoices: [ChoiceValue!]!
"""
The formal name of the postal code of the address validation rule.
"""
postalCodeType: String!
"""
The regular expression for postal code validation.
"""
postalCodeMatchers: [String!]!
"""
The example postal code of the address validation rule.
"""
postalCodeExamples: [String!]!
"""
The postal code prefix of the address validation rule.
"""
postalCodePrefix: String!
}
type ChoiceValue {
"""
The raw name of the choice.
"""
raw: String
"""
The verbose name of the choice.
"""
verbose: String
}
type UserCountableConnection @doc(category: "Users") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [UserCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type UserCountableEdge @doc(category: "Users") {
"""
The item at the end of the edge.
"""
node: User!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input CustomerFilterInput @doc(category: "Users") {
dateJoined: DateRangeInput
numberOfOrders: IntRangeInput
placedOrders: DateRangeInput
search: String
metadata: [MetadataFilter!]
"""
Filter by ids.
"""
ids: [ID!]
updatedAt: DateTimeRangeInput
}
input UserSortingInput @doc(category: "Users") {
"""
Specifies the direction in which to sort users.
"""
direction: OrderDirection!
"""
Sort users by the selected field.
"""
field: UserSortField!
}
enum UserSortField @doc(category: "Users") {
"""
Sort users by first name.
"""
FIRST_NAME
"""
Sort users by last name.
"""
LAST_NAME
"""
Sort users by email.
"""
EMAIL
"""
Sort users by order count.
"""
ORDER_COUNT
"""
Sort users by created at.
"""
CREATED_AT
"""
Sort users by last modified at.
"""
LAST_MODIFIED_AT
}
type GroupCountableConnection @doc(category: "Users") {
"""
Pagination data for this connection.
"""
pageInfo: PageInfo!
edges: [GroupCountableEdge!]!
"""
A total count of items in the collection.
"""
totalCount: Int
}
type GroupCountableEdge @doc(category: "Users") {
"""
The item at the end of the edge.
"""
node: Group!
"""
A cursor for use in pagination.
"""
cursor: String!
}
input PermissionGroupFilterInput @doc(category: "Users") {
search: String
ids: [ID!]
}
input PermissionGroupSortingInput @doc(category: "Users") {
"""
Specifies the direction in which to sort permission group.
"""
direction: OrderDirection!
"""
Sort permission group by the selected field.
"""
field: PermissionGroupSortField!
}
"""
Sorting options for permission groups.
"""
enum PermissionGroupSortField @doc(category: "Users") {
"""
Sort permission group accounts by name.
"""
NAME
}
input StaffUserInput @doc(category: "Users") {
status: StaffMemberStatus
search: String
ids: [ID!]
}
"""
Represents status of a staff account.
"""
enum StaffMemberStatus @doc(category: "Users") {
"""
User account has been activated.
"""
ACTIVE
"""
User account has not been activated yet.
"""
DEACTIVATED
}
type Mutation {
"""
Creates a new webhook subscription.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
webhookCreate(
"""
Fields required to create a webhook.
"""
input: WebhookCreateInput!
): WebhookCreate @doc(category: "Webhooks")
"""
Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
webhookDelete(
"""
ID of a webhook to delete.
"""
id: ID!
): WebhookDelete @doc(category: "Webhooks")
"""
Updates a webhook subscription.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
webhookUpdate(
"""
ID of a webhook to update.
"""
id: ID!
"""
Fields required to update a webhook.
"""
input: WebhookUpdateInput!
): WebhookUpdate @doc(category: "Webhooks")
"""
Retries event delivery.
Requires one of the following permissions: MANAGE_APPS.
"""
eventDeliveryRetry(
"""
ID of the event delivery to retry.
"""
id: ID!
): EventDeliveryRetry @doc(category: "Webhooks")
"""
Performs a dry run of a webhook event. Supports a single event (the first, if multiple provided in the `query`). Requires permission relevant to processed event.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
webhookDryRun(
"""
The ID of an object to serialize.
"""
objectId: ID!
"""
The subscription query that defines the webhook event and its payload.
"""
query: String!
): WebhookDryRun @doc(category: "Webhooks")
"""
Trigger a webhook event. Supports a single event (the first, if multiple provided in the `webhook.subscription_query`). Requires permission relevant to processed event. Successfully delivered webhook returns `delivery` with status='PENDING' and empty payload.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
webhookTrigger(
"""
The ID of an object to serialize.
"""
objectId: ID!
"""
The ID of the webhook.
"""
webhookId: ID!
): WebhookTrigger @doc(category: "Webhooks")
"""
Creates new warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
createWarehouse(
"""
Fields required to create warehouse.
"""
input: WarehouseCreateInput!
): WarehouseCreate @doc(category: "Products")
"""
Updates given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
updateWarehouse(
"""
External reference of a warehouse.
"""
externalReference: String
"""
ID of a warehouse to update.
"""
id: ID
"""
Fields required to update warehouse.
"""
input: WarehouseUpdateInput!
): WarehouseUpdate @doc(category: "Products")
"""
Deletes selected warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
deleteWarehouse(
"""
ID of a warehouse to delete.
"""
id: ID!
): WarehouseDelete @doc(category: "Products")
"""
Add shipping zone to given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
assignWarehouseShippingZone(
"""
ID of a warehouse to update.
"""
id: ID!
"""
List of shipping zone IDs.
"""
shippingZoneIds: [ID!]!
): WarehouseShippingZoneAssign @doc(category: "Products")
"""
Remove shipping zone from given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
unassignWarehouseShippingZone(
"""
ID of a warehouse to update.
"""
id: ID!
"""
List of shipping zone IDs.
"""
shippingZoneIds: [ID!]!
): WarehouseShippingZoneUnassign @doc(category: "Products")
"""
Create a tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxClassCreate(
"""
Fields required to create a tax class.
"""
input: TaxClassCreateInput!
): TaxClassCreate @doc(category: "Taxes")
"""
Delete a tax class. After deleting the tax class any products, product types or shipping methods using it are updated to use the default tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxClassDelete(
"""
ID of a tax class to delete.
"""
id: ID!
): TaxClassDelete @doc(category: "Taxes")
"""
Update a tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxClassUpdate(
"""
ID of the tax class.
"""
id: ID!
"""
Fields required to update a tax class.
"""
input: TaxClassUpdateInput!
): TaxClassUpdate @doc(category: "Taxes")
"""
Update tax configuration for a channel.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxConfigurationUpdate(
"""
ID of the tax configuration.
"""
id: ID!
"""
Fields required to update the tax configuration.
"""
input: TaxConfigurationUpdateInput!
): TaxConfigurationUpdate @doc(category: "Taxes")
"""
Update tax class rates for a specific country.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxCountryConfigurationUpdate(
"""
Country in which to update the tax class rates.
"""
countryCode: CountryCode!
"""
List of tax rates per tax class to update. When `{taxClass: id, rate: null`} is passed, it deletes the rate object for given taxClass ID. When `{rate: Int}` is passed without a tax class, it updates the default tax class for this country.
"""
updateTaxClassRates: [TaxClassRateInput!]!
): TaxCountryConfigurationUpdate @doc(category: "Taxes")
"""
Remove all tax class rates for a specific country.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxCountryConfigurationDelete(
"""
Country in which to update the tax class rates.
"""
countryCode: CountryCode!
): TaxCountryConfigurationDelete @doc(category: "Taxes")
"""
Exempt checkout or order from charging the taxes. When tax exemption is enabled, taxes won't be charged for the checkout or order. Taxes may still be calculated in cases when product prices are entered with the tax included and the net price needs to be known.
Requires one of the following permissions: MANAGE_TAXES.
"""
taxExemptionManage(
"""
ID of the Checkout or Order object.
"""
id: ID!
"""
Determines if a taxes should be exempt.
"""
taxExemption: Boolean!
): TaxExemptionManage @doc(category: "Taxes")
"""
Updates stocks for a given variant and warehouse. Variant and warehouse selectors have to be the same for all stock inputs. Is not allowed to use 'variantId' in one input and 'variantExternalReference' in another.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- PRODUCT_VARIANT_STOCK_UPDATED (async): A product variant stock details were updated.
"""
stockBulkUpdate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
Input list of stocks to update.
"""
stocks: [StockBulkUpdateInput!]!
): StockBulkUpdate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [PRODUCT_VARIANT_STOCK_UPDATED]
syncEvents: []
)
"""
Creates a new staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
staffNotificationRecipientCreate(
"""
Fields required to create a staff notification recipient.
"""
input: StaffNotificationRecipientInput!
): StaffNotificationRecipientCreate @doc(category: "Users")
"""
Updates a staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
staffNotificationRecipientUpdate(
"""
ID of a staff notification recipient to update.
"""
id: ID!
"""
Fields required to update a staff notification recipient.
"""
input: StaffNotificationRecipientInput!
): StaffNotificationRecipientUpdate @doc(category: "Users")
"""
Delete staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
staffNotificationRecipientDelete(
"""
ID of a staff notification recipient to delete.
"""
id: ID!
): StaffNotificationRecipientDelete @doc(category: "Users")
"""
Updates site domain of the shop.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
shopDomainUpdate(
"""
Fields required to update site.
"""
input: SiteDomainInput
): ShopDomainUpdate
@doc(category: "Shop")
@deprecated(reason: "Use `PUBLIC_URL` environment variable instead.")
"""
Updates shop settings.
Requires one of the following permissions: MANAGE_SETTINGS.
Triggers the following webhook events:
- SHOP_METADATA_UPDATED (async): Optionally triggered when public or private metadata is updated.
"""
shopSettingsUpdate(
"""
Fields required to update shop settings.
"""
input: ShopSettingsInput!
): ShopSettingsUpdate
@doc(category: "Shop")
@webhookEventsInfo(asyncEvents: [SHOP_METADATA_UPDATED], syncEvents: [])
"""
Fetch tax rates.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
shopFetchTaxRates: ShopFetchTaxRates @doc(category: "Shop") @deprecated
"""
Creates/updates translations for shop settings.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
shopSettingsTranslate(
"""
Fields required to update shop settings translations.
"""
input: ShopSettingsTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): ShopSettingsTranslate @doc(category: "Shop")
"""
Update the shop's address. If the `null` value is passed, the currently selected address will be deleted.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
shopAddressUpdate(
"""
Fields required to update shop address.
"""
input: AddressInput
): ShopAddressUpdate @doc(category: "Shop")
"""
Update shop order settings across all channels. Returns `orderSettings` for the first `channel` in alphabetical order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderSettingsUpdate(
"""
Fields required to update shop order settings.
"""
input: OrderSettingsUpdateInput!
): OrderSettingsUpdate
@doc(category: "Orders")
@deprecated(reason: "Use `channelUpdate` mutation instead.")
"""
Update gift card settings.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
giftCardSettingsUpdate(
"""
Fields required to update gift card settings.
"""
input: GiftCardSettingsUpdateInput!
): GiftCardSettingsUpdate @doc(category: "Gift cards")
"""
Manage shipping method's availability in channels.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingMethodChannelListingUpdate(
"""
ID of a shipping method to update.
"""
id: ID!
"""
Fields required to update shipping method channel listings.
"""
input: ShippingMethodChannelListingInput!
): ShippingMethodChannelListingUpdate @doc(category: "Shipping")
"""
Creates a new shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceCreate(
"""
Fields required to create a shipping price.
"""
input: ShippingPriceInput!
): ShippingPriceCreate @doc(category: "Shipping")
"""
Deletes a shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceDelete(
"""
ID of a shipping price to delete.
"""
id: ID!
): ShippingPriceDelete @doc(category: "Shipping")
"""
Deletes shipping prices.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceBulkDelete(
"""
List of shipping price IDs to delete.
"""
ids: [ID!]!
): ShippingPriceBulkDelete @doc(category: "Shipping")
"""
Updates a new shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceUpdate(
"""
ID of a shipping price to update.
"""
id: ID!
"""
Fields required to update a shipping price.
"""
input: ShippingPriceInput!
): ShippingPriceUpdate @doc(category: "Shipping")
"""
Creates/updates translations for a shipping method.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
shippingPriceTranslate(
"""
ShippingMethodType ID or ShippingMethodTranslatableContent ID.
"""
id: ID!
"""
Fields required to update shipping price translations.
"""
input: ShippingPriceTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): ShippingPriceTranslate @doc(category: "Shipping")
"""
Exclude products from shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceExcludeProducts(
"""
ID of a shipping price.
"""
id: ID!
"""
Exclude products input.
"""
input: ShippingPriceExcludeProductsInput!
): ShippingPriceExcludeProducts @doc(category: "Shipping")
"""
Remove product from excluded list for shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingPriceRemoveProductFromExclude(
"""
ID of a shipping price.
"""
id: ID!
"""
List of products which will be removed from excluded list.
"""
products: [ID!]!
): ShippingPriceRemoveProductFromExclude @doc(category: "Shipping")
"""
Creates a new shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZoneCreate(
"""
Fields required to create a shipping zone.
"""
input: ShippingZoneCreateInput!
): ShippingZoneCreate @doc(category: "Shipping")
"""
Deletes a shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZoneDelete(
"""
ID of a shipping zone to delete.
"""
id: ID!
): ShippingZoneDelete @doc(category: "Shipping")
"""
Deletes shipping zones.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZoneBulkDelete(
"""
List of shipping zone IDs to delete.
"""
ids: [ID!]!
): ShippingZoneBulkDelete @doc(category: "Shipping")
"""
Updates a new shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
shippingZoneUpdate(
"""
ID of a shipping zone to update.
"""
id: ID!
"""
Fields required to update a shipping zone.
"""
input: ShippingZoneUpdateInput!
): ShippingZoneUpdate @doc(category: "Shipping")
"""
Assign attributes to a given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productAttributeAssign(
"""
The operations to perform.
"""
operations: [ProductAttributeAssignInput!]!
"""
ID of the product type to assign the attributes into.
"""
productTypeId: ID!
): ProductAttributeAssign @doc(category: "Products")
"""
Update attributes assigned to product variant for given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productAttributeAssignmentUpdate(
"""
The operations to perform.
"""
operations: [ProductAttributeAssignmentUpdateInput!]!
"""
ID of the product type to assign the attributes into.
"""
productTypeId: ID!
): ProductAttributeAssignmentUpdate @doc(category: "Products")
"""
Un-assign attributes from a given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productAttributeUnassign(
"""
The IDs of the attributes to unassign.
"""
attributeIds: [ID!]!
"""
ID of the product type from which the attributes should be unassigned.
"""
productTypeId: ID!
): ProductAttributeUnassign @doc(category: "Products")
"""
Creates a new category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
categoryCreate(
"""
Fields required to create a category.
"""
input: CategoryInput!
"""
ID of the parent category. If empty, category will be top level category.
"""
parent: ID
): CategoryCreate @doc(category: "Products")
"""
Deletes a category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
categoryDelete(
"""
ID of a category to delete.
"""
id: ID!
): CategoryDelete @doc(category: "Products")
"""
Deletes categories.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
categoryBulkDelete(
"""
List of category IDs to delete.
"""
ids: [ID!]!
): CategoryBulkDelete @doc(category: "Products")
"""
Updates a category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
categoryUpdate(
"""
ID of a category to update.
"""
id: ID!
"""
Fields required to update a category.
"""
input: CategoryInput!
): CategoryUpdate @doc(category: "Products")
"""
Creates/updates translations for a category.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
categoryTranslate(
"""
Category ID or CategoryTranslatableContent ID.
"""
id: ID!
"""
Fields required to update category translations.
"""
input: TranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): CategoryTranslate @doc(category: "Products")
"""
Adds products to a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionAddProducts(
"""
ID of a collection.
"""
collectionId: ID!
"""
List of product IDs.
"""
products: [ID!]!
): CollectionAddProducts @doc(category: "Products")
"""
Creates a new collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionCreate(
"""
Fields required to create a collection.
"""
input: CollectionCreateInput!
): CollectionCreate @doc(category: "Products")
"""
Deletes a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionDelete(
"""
ID of a collection to delete.
"""
id: ID!
): CollectionDelete @doc(category: "Products")
"""
Reorder the products of a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionReorderProducts(
"""
ID of a collection.
"""
collectionId: ID!
"""
The collection products position operations.
"""
moves: [MoveProductInput!]!
): CollectionReorderProducts @doc(category: "Products")
"""
Deletes collections.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionBulkDelete(
"""
List of collection IDs to delete.
"""
ids: [ID!]!
): CollectionBulkDelete @doc(category: "Products")
"""
Remove products from a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionRemoveProducts(
"""
ID of a collection.
"""
collectionId: ID!
"""
List of product IDs.
"""
products: [ID!]!
): CollectionRemoveProducts @doc(category: "Products")
"""
Updates a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionUpdate(
"""
ID of a collection to update.
"""
id: ID!
"""
Fields required to update a collection.
"""
input: CollectionInput!
): CollectionUpdate @doc(category: "Products")
"""
Creates/updates translations for a collection.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
collectionTranslate(
"""
Collection ID or CollectionTranslatableContent ID.
"""
id: ID!
"""
Fields required to update collection translations.
"""
input: TranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): CollectionTranslate @doc(category: "Products")
"""
Manage collection's availability in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
collectionChannelListingUpdate(
"""
ID of a collection to update.
"""
id: ID!
"""
Fields required to create or update collection channel listings.
"""
input: CollectionChannelListingUpdateInput!
): CollectionChannelListingUpdate @doc(category: "Products")
"""
Creates a new product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productCreate(
"""
Fields required to create a product.
"""
input: ProductCreateInput!
): ProductCreate @doc(category: "Products")
"""
Deletes a product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productDelete(
"""
External ID of a product to delete.
"""
externalReference: String
"""
ID of a product to delete.
"""
id: ID
): ProductDelete @doc(category: "Products")
"""
Creates products.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productBulkCreate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
Input list of products to create.
"""
products: [ProductBulkCreateInput!]!
): ProductBulkCreate @doc(category: "Products")
"""
Deletes products.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productBulkDelete(
"""
List of product IDs to delete.
"""
ids: [ID!]!
): ProductBulkDelete @doc(category: "Products")
"""
Updates an existing product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productUpdate(
"""
External ID of a product to update.
"""
externalReference: String
"""
ID of a product to update.
"""
id: ID
"""
Fields required to update a product.
"""
input: ProductInput!
): ProductUpdate @doc(category: "Products")
"""
Creates/updates translations for products.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
Triggers the following webhook events:
- TRANSLATION_CREATED (async): Called when a translation was created.
- TRANSLATION_UPDATED (async): Called when a translation was updated.
"""
productBulkTranslate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
List of product translations.
"""
translations: [ProductBulkTranslateInput!]!
): ProductBulkTranslate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [TRANSLATION_CREATED, TRANSLATION_UPDATED]
syncEvents: []
)
"""
Creates/updates translations for a product.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
productTranslate(
"""
Product ID or ProductTranslatableContent ID.
"""
id: ID!
"""
Fields required to update product translations.
"""
input: TranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): ProductTranslate @doc(category: "Products")
"""
Manage product's availability in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productChannelListingUpdate(
"""
ID of a product to update.
"""
id: ID!
"""
Fields required to create or update product channel listings.
"""
input: ProductChannelListingUpdateInput!
): ProductChannelListingUpdate @doc(category: "Products")
"""
Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productMediaCreate(
"""
Fields required to create a product media.
"""
input: ProductMediaCreateInput!
): ProductMediaCreate @doc(category: "Products")
"""
Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantReorder(
"""
The list of variant reordering operations.
"""
moves: [ReorderInput!]!
"""
Id of product that variants order will be altered.
"""
productId: ID!
): ProductVariantReorder @doc(category: "Products")
"""
Deletes a product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productMediaDelete(
"""
ID of a product media to delete.
"""
id: ID!
): ProductMediaDelete @doc(category: "Products")
"""
Deletes product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productMediaBulkDelete(
"""
List of product media IDs to delete.
"""
ids: [ID!]!
): ProductMediaBulkDelete @doc(category: "Products")
"""
Changes ordering of the product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productMediaReorder(
"""
IDs of a product media in the desired order.
"""
mediaIds: [ID!]!
"""
ID of product that media order will be altered.
"""
productId: ID!
): ProductMediaReorder @doc(category: "Products")
"""
Updates a product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productMediaUpdate(
"""
ID of a product media to update.
"""
id: ID!
"""
Fields required to update a product media.
"""
input: ProductMediaUpdateInput!
): ProductMediaUpdate @doc(category: "Products")
"""
Creates a new product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productTypeCreate(
"""
Fields required to create a product type.
"""
input: ProductTypeInput!
): ProductTypeCreate @doc(category: "Products")
"""
Deletes a product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productTypeDelete(
"""
ID of a product type to delete.
"""
id: ID!
): ProductTypeDelete @doc(category: "Products")
"""
Deletes product types.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productTypeBulkDelete(
"""
List of product type IDs to delete.
"""
ids: [ID!]!
): ProductTypeBulkDelete @doc(category: "Products")
"""
Updates an existing product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productTypeUpdate(
"""
ID of a product type to update.
"""
id: ID!
"""
Fields required to update a product type.
"""
input: ProductTypeInput!
): ProductTypeUpdate @doc(category: "Products")
"""
Reorder the attributes of a product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
productTypeReorderAttributes(
"""
The list of attribute reordering operations.
"""
moves: [ReorderInput!]!
"""
ID of a product type.
"""
productTypeId: ID!
"""
The attribute type to reorder.
"""
type: ProductAttributeType!
): ProductTypeReorderAttributes @doc(category: "Products")
"""
Reorder product attribute values.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productReorderAttributeValues(
"""
ID of an attribute.
"""
attributeId: ID!
"""
The list of reordering operations for given attribute values.
"""
moves: [ReorderInput!]!
"""
ID of a product.
"""
productId: ID!
): ProductReorderAttributeValues @doc(category: "Products")
"""
Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContentCreate(
"""
Fields required to create a digital content.
"""
input: DigitalContentUploadInput!
"""
ID of a product variant to upload digital content.
"""
variantId: ID!
): DigitalContentCreate @doc(category: "Products")
"""
Remove digital content assigned to given variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContentDelete(
"""
ID of a product variant with digital content to remove.
"""
variantId: ID!
): DigitalContentDelete @doc(category: "Products")
"""
Update digital content.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContentUpdate(
"""
Fields required to update a digital content.
"""
input: DigitalContentInput!
"""
ID of a product variant with digital content to update.
"""
variantId: ID!
): DigitalContentUpdate @doc(category: "Products")
"""
Generate new URL to digital content.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
digitalContentUrlCreate(
"""
Fields required to create a new url.
"""
input: DigitalContentUrlCreateInput!
): DigitalContentUrlCreate @doc(category: "Products")
"""
Creates a new variant for a product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantCreate(
"""
Fields required to create a product variant.
"""
input: ProductVariantCreateInput!
): ProductVariantCreate @doc(category: "Products")
"""
Deletes a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantDelete(
"""
External ID of a product variant to update.
"""
externalReference: String
"""
ID of a product variant to delete.
"""
id: ID
"""
SKU of a product variant to delete.
"""
sku: String
): ProductVariantDelete @doc(category: "Products")
"""
Creates product variants for a given product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantBulkCreate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
ID of the product to create the variants for.
"""
product: ID!
"""
Input list of product variants to create.
"""
variants: [ProductVariantBulkCreateInput!]!
): ProductVariantBulkCreate @doc(category: "Products")
"""
Update multiple product variants.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantBulkUpdate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
ID of the product to update the variants for.
"""
product: ID!
"""
Input list of product variants to update.
"""
variants: [ProductVariantBulkUpdateInput!]!
): ProductVariantBulkUpdate @doc(category: "Products")
"""
Deletes product variants.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantBulkDelete(
"""
List of product variant IDs to delete.
"""
ids: [ID!]
"""
List of product variant SKUs to delete.
"""
skus: [String!]
): ProductVariantBulkDelete @doc(category: "Products")
"""
Creates stocks for product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantStocksCreate(
"""
Input list of stocks to create.
"""
stocks: [StockInput!]!
"""
ID of a product variant for which stocks will be created.
"""
variantId: ID!
): ProductVariantStocksCreate @doc(category: "Products")
"""
Delete stocks from product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantStocksDelete(
"""
SKU of product variant for which stocks will be deleted.
"""
sku: String
"""
ID of product variant for which stocks will be deleted.
"""
variantId: ID
"""
Input list of warehouse IDs.
"""
warehouseIds: [ID!]
): ProductVariantStocksDelete @doc(category: "Products")
"""
Update stocks for product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantStocksUpdate(
"""
SKU of product variant for which stocks will be updated.
"""
sku: String
"""
Input list of stocks to create or update.
"""
stocks: [StockInput!]!
"""
ID of a product variant for which stocks will be updated.
"""
variantId: ID
): ProductVariantStocksUpdate @doc(category: "Products")
"""
Updates an existing variant for product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantUpdate(
"""
External ID of a product variant to update.
"""
externalReference: String
"""
ID of a product to update.
"""
id: ID
"""
Fields required to update a product variant.
"""
input: ProductVariantInput!
"""
SKU of a product variant to update.
"""
sku: String
): ProductVariantUpdate @doc(category: "Products")
"""
Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantSetDefault(
"""
Id of a product that will have the default variant set.
"""
productId: ID!
"""
Id of a variant that will be set as default.
"""
variantId: ID!
): ProductVariantSetDefault @doc(category: "Products")
"""
Creates/updates translations for a product variant.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
productVariantTranslate(
"""
ProductVariant ID or ProductVariantTranslatableContent ID.
"""
id: ID!
"""
Fields required to update product variant translations.
"""
input: NameTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): ProductVariantTranslate @doc(category: "Products")
"""
Creates/updates translations for products variants.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
Triggers the following webhook events:
- TRANSLATION_CREATED (async): A translation was created.
- TRANSLATION_UPDATED (async): A translation was updated.
"""
productVariantBulkTranslate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
List of products variants translations.
"""
translations: [ProductVariantBulkTranslateInput!]!
): ProductVariantBulkTranslate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [TRANSLATION_CREATED, TRANSLATION_UPDATED]
syncEvents: []
)
"""
Manage product variant prices in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantChannelListingUpdate(
"""
ID of a product variant to update.
"""
id: ID
"""
List of fields required to create or upgrade product variant channel listings.
"""
input: [ProductVariantChannelListingAddInput!]!
"""
SKU of a product variant to update.
"""
sku: String
): ProductVariantChannelListingUpdate @doc(category: "Products")
"""
Reorder product variant attribute values.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantReorderAttributeValues(
"""
ID of an attribute.
"""
attributeId: ID!
"""
The list of reordering operations for given attribute values.
"""
moves: [ReorderInput!]!
"""
ID of a product variant.
"""
variantId: ID!
): ProductVariantReorderAttributeValues @doc(category: "Products")
"""
Deactivates product variant preorder. It changes all preorder allocation into regular allocation.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
productVariantPreorderDeactivate(
"""
ID of a variant which preorder should be deactivated.
"""
id: ID!
): ProductVariantPreorderDeactivate @doc(category: "Products")
"""
Assign an media to a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
variantMediaAssign(
"""
ID of a product media to assign to a variant.
"""
mediaId: ID!
"""
ID of a product variant.
"""
variantId: ID!
): VariantMediaAssign @doc(category: "Products")
"""
Unassign an media from a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
variantMediaUnassign(
"""
ID of a product media to unassign from a variant.
"""
mediaId: ID!
"""
ID of a product variant.
"""
variantId: ID!
): VariantMediaUnassign @doc(category: "Products")
"""
Captures the authorized payment amount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
paymentCapture(
"""
Transaction amount.
"""
amount: PositiveDecimal
"""
Payment ID.
"""
paymentId: ID!
): PaymentCapture @doc(category: "Payments")
"""
Refunds the captured payment amount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
paymentRefund(
"""
Transaction amount.
"""
amount: PositiveDecimal
"""
Payment ID.
"""
paymentId: ID!
): PaymentRefund @doc(category: "Payments")
"""
Voids the authorized payment.
Requires one of the following permissions: MANAGE_ORDERS.
"""
paymentVoid(
"""
Payment ID.
"""
paymentId: ID!
): PaymentVoid @doc(category: "Payments")
"""
Initializes payment process when it is required by gateway.
"""
paymentInitialize(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
"""
A gateway name used to initialize the payment.
"""
gateway: String!
"""
Client-side generated data required to initialize the payment.
"""
paymentData: JSONString
): PaymentInitialize @doc(category: "Payments")
"""
Check payment balance.
"""
paymentCheckBalance(
"""
Fields required to check payment balance.
"""
input: PaymentCheckBalanceInput!
): PaymentCheckBalance @doc(category: "Payments")
"""
Create transaction for checkout or order.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
transactionCreate(
"""
The ID of the checkout or order.
"""
id: ID!
"""
Input data required to create a new transaction object.
"""
transaction: TransactionCreateInput!
"""
Data that defines a transaction event.
"""
transactionEvent: TransactionEventInput
): TransactionCreate @doc(category: "Payments")
"""
Update transaction.
Requires the following permissions: OWNER and HANDLE_PAYMENTS for apps, HANDLE_PAYMENTS for staff users. Staff user cannot update a transaction that is owned by the app.
"""
transactionUpdate(
"""
The ID of the transaction. One of field id or token is required.
"""
id: ID
"""
The token of the transaction. One of field id or token is required.
"""
token: UUID
"""
Input data required to create a new transaction object.
"""
transaction: TransactionUpdateInput
"""
Data that defines a transaction transaction.
"""
transactionEvent: TransactionEventInput
): TransactionUpdate @doc(category: "Payments")
"""
Request an action for payment transaction.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
transactionRequestAction(
"""
Determines the action type.
"""
actionType: TransactionActionEnum!
"""
Transaction request amount. If empty, maximal possible amount will be used.
"""
amount: PositiveDecimal
"""
The ID of the transaction. One of field id or token is required.
"""
id: ID
"""
The token of the transaction. One of field id or token is required.
"""
token: UUID
): TransactionRequestAction @doc(category: "Payments")
"""
Request a refund for payment transaction based on granted refund.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
transactionRequestRefundForGrantedRefund(
"""
The ID of the granted refund.
"""
grantedRefundId: ID!
"""
The ID of the transaction. One of field id or token is required, if `transactionItem` is not already assigned to the `orderGrantedRefund`. If `transactionItem` is already assigned to the grantedRefund the field will be ignored.
"""
id: ID
"""
The token of the transaction. One of field id or token is required, if `transactionItem` is not already assigned to the `orderGrantedRefund`. If `transactionItem` is already assigned to the grantedRefund the field will be ignored.
"""
token: UUID
): TransactionRequestRefundForGrantedRefund @doc(category: "Payments")
"""
Report the event for the transaction.
Requires the following permissions: OWNER and HANDLE_PAYMENTS for apps, HANDLE_PAYMENTS for staff users. Staff user cannot update a transaction that is owned by the app.
Triggers the following webhook events:
- TRANSACTION_ITEM_METADATA_UPDATED (async): Optionally called when transaction's metadata was updated.
- CHECKOUT_FULLY_PAID (async): Optionally called when the checkout charge status changed to `FULL` or `OVERCHARGED`.
- ORDER_UPDATED (async): Optionally called when the transaction is related to the order and the order was updated.
"""
transactionEventReport(
"""
The amount of the event to report.
Required for all `REQUEST`, `SUCCESS`, `ACTION_REQUIRED`, and `ADJUSTMENT` events. For other events, the amount will be calculated based on the previous events with the same pspReference. If not possible to calculate, the mutation will return an error.
"""
amount: PositiveDecimal
"""
List of all possible actions for the transaction
"""
availableActions: [TransactionActionEnum!]
"""
The url that will allow to redirect user to payment provider page with event details.
"""
externalUrl: String
"""
The ID of the transaction. One of field id or token is required.
"""
id: ID
"""
The message related to the event. The maximum length is 512 characters; any text exceeding this limit will be truncated.
"""
message: String
"""
PSP Reference of the event to report.
"""
pspReference: String!
"""
The time of the event to report. If not provide, the current time will be used.
"""
time: DateTime
"""
The token of the transaction. One of field id or token is required.
"""
token: UUID
"""
Fields required to update the transaction metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
transactionMetadata: [MetadataInput!]
"""
Fields required to update the transaction private metadata.
Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
transactionPrivateMetadata: [MetadataInput!]
"""
Current status of the event to report.
"""
type: TransactionEventTypeEnum!
): TransactionEventReport
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: [
TRANSACTION_ITEM_METADATA_UPDATED
CHECKOUT_FULLY_PAID
ORDER_UPDATED
]
syncEvents: []
)
"""
Initializes a payment gateway session. It triggers the webhook `PAYMENT_GATEWAY_INITIALIZE_SESSION`, to the requested `paymentGateways`. If `paymentGateways` is not provided, the webhook will be send to all subscribed payment gateways. There is a limit of 100 transaction items per checkout / order.
"""
paymentGatewayInitialize(
"""
The amount requested for initializing the payment gateway. If not provided, the difference between checkout.total - transactions that are already processed will be send.
"""
amount: PositiveDecimal
"""
The ID of the checkout or order.
"""
id: ID!
"""
List of payment gateways to initialize.
"""
paymentGateways: [PaymentGatewayToInitialize!]
): PaymentGatewayInitialize @doc(category: "Payments")
"""
Initializes a transaction session. It triggers the webhook `TRANSACTION_INITIALIZE_SESSION`, to the requested `paymentGateways`. There is a limit of 100 transaction items per checkout / order.
"""
transactionInitialize(
"""
The expected action called for the transaction. By default, the `channel.paymentSettings.defaultTransactionFlowStrategy` will be used.The field can be used only by app that has `HANDLE_PAYMENTS` permission.
"""
action: TransactionFlowStrategyEnum
"""
The amount requested for initializing the payment gateway. If not provided, the difference between checkout.total - transactions that are already processed will be send.
"""
amount: PositiveDecimal
"""
The customer's IP address. If not provided Saleor will try to determine the customer's IP address on its own. The customer's IP address will be passed to the payment app. The IP should be in ipv4 or ipv6 format. The field can be used only by an app that has `HANDLE_PAYMENTS` permission.
"""
customerIpAddress: String
"""
The ID of the checkout or order.
"""
id: ID!
"""
The idempotency key assigned to the action. It will be passed to the payment app to discover potential duplicate actions. If not provided, the default one will be generated. If empty string provided, INVALID error code will be raised.
"""
idempotencyKey: String
"""
Payment gateway used to initialize the transaction.
"""
paymentGateway: PaymentGatewayToInitialize!
): TransactionInitialize @doc(category: "Payments")
"""
Processes a transaction session. It triggers the webhook `TRANSACTION_PROCESS_SESSION`, to the assigned `paymentGateways`.
"""
transactionProcess(
"""
The customer's IP address. If not provided Saleor will try to determine the customer's IP address on its own. The customer's IP address will be passed to the payment app. The IP should be in ipv4 or ipv6 format. The field can be used only by an app that has `HANDLE_PAYMENTS` permission.
"""
customerIpAddress: String
"""
The data that will be passed to the payment gateway.
"""
data: JSON
"""
The ID of the transaction to process. One of field id or token is required.
"""
id: ID
"""
The token of the transaction to process. One of field id or token is required.
"""
token: UUID
): TransactionProcess @doc(category: "Payments")
"""
Request to delete a stored payment method on payment provider side.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- STORED_PAYMENT_METHOD_DELETE_REQUESTED (sync): The customer requested to delete a payment method.
"""
storedPaymentMethodRequestDelete(
"""
Slug of a channel related to delete request.
"""
channel: String!
"""
The ID of the payment method.
"""
id: ID!
): StoredPaymentMethodRequestDelete
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [STORED_PAYMENT_METHOD_DELETE_REQUESTED]
)
"""
Initializes payment gateway for tokenizing payment method session.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION (sync): The customer requested to initialize payment gateway for tokenization.
"""
paymentGatewayInitializeTokenization(
"""
Slug of a channel related to tokenization request.
"""
channel: String!
"""
The data that will be passed to the payment gateway.
"""
data: JSON
"""
The identifier of the payment gateway app to initialize tokenization.
"""
id: String!
): PaymentGatewayInitializeTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION]
)
"""
Tokenize payment method.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION (sync): The customer requested to tokenize payment method.
"""
paymentMethodInitializeTokenization(
"""
Slug of a channel related to tokenization request.
"""
channel: String!
"""
The data that will be passed to the payment gateway.
"""
data: JSON
"""
The identifier of the payment gateway app to initialize payment method tokenization.
"""
id: String!
"""
The payment flow that the tokenized payment method should support.
"""
paymentFlowToSupport: TokenizedPaymentFlowEnum!
): PaymentMethodInitializeTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION]
)
"""
Tokenize payment method.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION (sync): The customer continues payment method tokenization.
"""
paymentMethodProcessTokenization(
"""
Slug of a channel related to tokenization request.
"""
channel: String!
"""
The data that will be passed to the payment gateway.
"""
data: JSON
"""
The identifier of the payment gateway app to process payment method tokenization.
"""
id: String!
): PaymentMethodProcessTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION]
)
"""
Creates a new page.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageCreate(
"""
Fields required to create a page.
"""
input: PageCreateInput!
): PageCreate @doc(category: "Pages")
"""
Deletes a page.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageDelete(
"""
ID of a page to delete.
"""
id: ID!
): PageDelete @doc(category: "Pages")
"""
Deletes pages.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageBulkDelete(
"""
List of page IDs to delete.
"""
ids: [ID!]!
): PageBulkDelete @doc(category: "Pages")
"""
Publish pages.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageBulkPublish(
"""
List of page IDs to (un)publish.
"""
ids: [ID!]!
"""
Determine if pages will be published or not.
"""
isPublished: Boolean!
): PageBulkPublish @doc(category: "Pages")
"""
Updates an existing page.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageUpdate(
"""
ID of a page to update.
"""
id: ID!
"""
Fields required to update a page.
"""
input: PageInput!
): PageUpdate @doc(category: "Pages")
"""
Creates/updates translations for a page.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
pageTranslate(
"""
Page ID or PageTranslatableContent ID.
"""
id: ID!
"""
Fields required to update page translations.
"""
input: PageTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): PageTranslate @doc(category: "Pages")
"""
Create a new page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageTypeCreate(
"""
Fields required to create page type.
"""
input: PageTypeCreateInput!
): PageTypeCreate @doc(category: "Pages")
"""
Update page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageTypeUpdate(
"""
ID of the page type to update.
"""
id: ID
"""
Fields required to update page type.
"""
input: PageTypeUpdateInput!
): PageTypeUpdate @doc(category: "Pages")
"""
Delete a page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageTypeDelete(
"""
ID of the page type to delete.
"""
id: ID!
): PageTypeDelete @doc(category: "Pages")
"""
Delete page types.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageTypeBulkDelete(
"""
List of page type IDs to delete
"""
ids: [ID!]!
): PageTypeBulkDelete @doc(category: "Pages")
"""
Assign attributes to a given page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageAttributeAssign(
"""
The IDs of the attributes to assign.
"""
attributeIds: [ID!]!
"""
ID of the page type to assign the attributes into.
"""
pageTypeId: ID!
): PageAttributeAssign @doc(category: "Pages")
"""
Unassign attributes from a given page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageAttributeUnassign(
"""
The IDs of the attributes to unassign.
"""
attributeIds: [ID!]!
"""
ID of the page type from which the attributes should be unassign.
"""
pageTypeId: ID!
): PageAttributeUnassign @doc(category: "Pages")
"""
Reorder the attributes of a page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
pageTypeReorderAttributes(
"""
The list of attribute reordering operations.
"""
moves: [ReorderInput!]!
"""
ID of a page type.
"""
pageTypeId: ID!
): PageTypeReorderAttributes @doc(category: "Pages")
"""
Reorder page attribute values.
Requires one of the following permissions: MANAGE_PAGES.
"""
pageReorderAttributeValues(
"""
ID of an attribute.
"""
attributeId: ID!
"""
The list of reordering operations for given attribute values.
"""
moves: [ReorderInput!]!
"""
ID of a page.
"""
pageId: ID!
): PageReorderAttributeValues @doc(category: "Pages")
"""
Completes creating an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderComplete(
"""
ID of the order that will be completed.
"""
id: ID!
): DraftOrderComplete @doc(category: "Orders")
"""
Creates a new draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderCreate(
"""
Fields required to create an order.
"""
input: DraftOrderCreateInput!
): DraftOrderCreate @doc(category: "Orders")
"""
Deletes a draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderDelete(
"""
External ID of a product to delete.
"""
externalReference: String
"""
ID of a product to delete.
"""
id: ID
): DraftOrderDelete @doc(category: "Orders")
"""
Deletes draft orders.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderBulkDelete(
"""
List of draft order IDs to delete.
"""
ids: [ID!]!
): DraftOrderBulkDelete @doc(category: "Orders")
"""
Deletes order lines.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderLinesBulkDelete(
"""
List of order lines IDs to delete.
"""
ids: [ID!]!
): DraftOrderLinesBulkDelete @doc(category: "Orders") @deprecated
"""
Updates a draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
draftOrderUpdate(
"""
External ID of a draft order to update.
"""
externalReference: String
"""
ID of a draft order to update.
"""
id: ID
"""
Fields required to update an order.
"""
input: DraftOrderInput!
): DraftOrderUpdate @doc(category: "Orders")
"""
Adds note to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderAddNote(
"""
ID of the order to add a note for.
"""
order: ID!
"""
Fields required to create a note for the order.
"""
input: OrderAddNoteInput!
): OrderAddNote
@doc(category: "Orders")
@deprecated(reason: "Use `orderNoteAdd` instead.")
"""
Cancel an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderCancel(
"""
ID of the order to cancel.
"""
id: ID!
): OrderCancel @doc(category: "Orders")
"""
Capture an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderCapture(
"""
Amount of money to capture.
"""
amount: PositiveDecimal!
"""
ID of the order to capture.
"""
id: ID!
): OrderCapture @doc(category: "Orders")
"""
Confirms an unconfirmed order by changing status to unfulfilled.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderConfirm(
"""
ID of an order to confirm.
"""
id: ID!
): OrderConfirm @doc(category: "Orders")
"""
Creates new fulfillments for an order.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_CREATED (async): A new fulfillment is created.
- ORDER_FULFILLED (async): Order is fulfilled.
- FULFILLMENT_TRACKING_NUMBER_UPDATED (async): Sent when fulfillment tracking number is updated.
- FULFILLMENT_APPROVED (async): A fulfillment is approved.
"""
orderFulfill(
"""
Fields required to create a fulfillment.
"""
input: OrderFulfillInput!
"""
ID of the order to be fulfilled.
"""
order: ID
): OrderFulfill
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [
FULFILLMENT_CREATED
ORDER_FULFILLED
FULFILLMENT_TRACKING_NUMBER_UPDATED
FULFILLMENT_APPROVED
]
syncEvents: []
)
"""
Cancels existing fulfillment and optionally restocks items.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderFulfillmentCancel(
"""
ID of a fulfillment to cancel.
"""
id: ID!
"""
Fields required to cancel a fulfillment.
"""
input: FulfillmentCancelInput
): FulfillmentCancel @doc(category: "Orders")
"""
Approve existing fulfillment.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_APPROVED (async): Fulfillment is approved.
"""
orderFulfillmentApprove(
"""
True if stock could be exceeded.
"""
allowStockToBeExceeded: Boolean = false
"""
ID of a fulfillment to approve.
"""
id: ID!
"""
True if confirmation email should be send.
"""
notifyCustomer: Boolean!
): FulfillmentApprove
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [FULFILLMENT_APPROVED], syncEvents: [])
"""
Updates a fulfillment for an order.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_TRACKING_NUMBER_UPDATED (async): Fulfillment tracking number is updated.
"""
orderFulfillmentUpdateTracking(
"""
ID of a fulfillment to update.
"""
id: ID!
"""
Fields required to update a fulfillment.
"""
input: FulfillmentUpdateTrackingInput!
): FulfillmentUpdateTracking
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [FULFILLMENT_TRACKING_NUMBER_UPDATED]
syncEvents: []
)
"""
Refund products.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderFulfillmentRefundProducts(
"""
Fields required to create an refund fulfillment.
"""
input: OrderRefundProductsInput!
"""
ID of the order to be refunded.
"""
order: ID!
): FulfillmentRefundProducts @doc(category: "Orders")
"""
Return products.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderFulfillmentReturnProducts(
"""
Fields required to return products.
"""
input: OrderReturnProductsInput!
"""
ID of the order to be returned.
"""
order: ID!
): FulfillmentReturnProducts @doc(category: "Orders")
"""
Adds granted refund to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderGrantRefundCreate(
"""
ID of the order.
"""
id: ID!
"""
Fields required to create a granted refund for the order.
"""
input: OrderGrantRefundCreateInput!
): OrderGrantRefundCreate @doc(category: "Orders")
"""
Updates granted refund.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderGrantRefundUpdate(
"""
ID of the granted refund.
"""
id: ID!
"""
Fields required to update a granted refund.
"""
input: OrderGrantRefundUpdateInput!
): OrderGrantRefundUpdate @doc(category: "Orders")
"""
Create order lines for an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderLinesCreate(
"""
ID of the order to add the lines to.
"""
id: ID!
"""
Fields required to add order lines.
"""
input: [OrderLineCreateInput!]!
): OrderLinesCreate @doc(category: "Orders")
"""
Deletes an order line from an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderLineDelete(
"""
ID of the order line to delete.
"""
id: ID!
): OrderLineDelete @doc(category: "Orders")
"""
Updates an order line of an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderLineUpdate(
"""
ID of the order line to update.
"""
id: ID!
"""
Fields required to update an order line.
"""
input: OrderLineInput!
): OrderLineUpdate @doc(category: "Orders")
"""
Adds discount to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderDiscountAdd(
"""
Fields required to create a discount for the order.
"""
input: OrderDiscountCommonInput!
"""
ID of an order to discount.
"""
orderId: ID!
): OrderDiscountAdd @doc(category: "Orders")
"""
Update discount for the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderDiscountUpdate(
"""
ID of a discount to update.
"""
discountId: ID!
"""
Fields required to update a discount for the order.
"""
input: OrderDiscountCommonInput!
): OrderDiscountUpdate @doc(category: "Orders")
"""
Remove discount from the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderDiscountDelete(
"""
ID of a discount to remove.
"""
discountId: ID!
): OrderDiscountDelete @doc(category: "Orders")
"""
Update discount for the order line.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderLineDiscountUpdate(
"""
Fields required to update price for the order line.
"""
input: OrderDiscountCommonInput!
"""
ID of a order line to update price
"""
orderLineId: ID!
): OrderLineDiscountUpdate @doc(category: "Orders")
"""
Remove discount applied to the order line.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderLineDiscountRemove(
"""
ID of a order line to remove its discount
"""
orderLineId: ID!
): OrderLineDiscountRemove @doc(category: "Orders")
"""
Adds note to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderNoteAdd(
"""
ID of the order to add a note for.
"""
order: ID!
"""
Fields required to create a note for the order.
"""
input: OrderNoteInput!
): OrderNoteAdd @doc(category: "Orders")
"""
Updates note of an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderNoteUpdate(
"""
ID of the note.
"""
note: ID!
"""
Fields required to create a note for the order.
"""
input: OrderNoteInput!
): OrderNoteUpdate @doc(category: "Orders")
"""
Mark order as manually paid.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderMarkAsPaid(
"""
ID of the order to mark paid.
"""
id: ID!
"""
The external transaction reference.
"""
transactionReference: String
): OrderMarkAsPaid @doc(category: "Orders")
"""
Refund an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderRefund(
"""
Amount of money to refund.
"""
amount: PositiveDecimal!
"""
ID of the order to refund.
"""
id: ID!
): OrderRefund @doc(category: "Orders")
"""
Updates an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderUpdate(
"""
External ID of an order to update.
"""
externalReference: String
"""
ID of an order to update.
"""
id: ID
"""
Fields required to update an order.
"""
input: OrderUpdateInput!
): OrderUpdate @doc(category: "Orders")
"""
Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderUpdateShipping(
"""
ID of the order to update a shipping method.
"""
order: ID!
"""
Fields required to change shipping method of the order.
"""
input: OrderUpdateShippingInput!
): OrderUpdateShipping @doc(category: "Orders")
"""
Void an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderVoid(
"""
ID of the order to void.
"""
id: ID!
): OrderVoid @doc(category: "Orders")
"""
Cancels orders.
Requires one of the following permissions: MANAGE_ORDERS.
"""
orderBulkCancel(
"""
List of orders IDs to cancel.
"""
ids: [ID!]!
): OrderBulkCancel @doc(category: "Orders")
"""
Creates multiple orders.
Requires one of the following permissions: MANAGE_ORDERS_IMPORT.
"""
orderBulkCreate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
Input list of orders to create. Orders limit: 50.
"""
orders: [OrderBulkCreateInput!]!
"""
Determine how stock should be updated, while processing the order. DEFAULT: UPDATE - Only do update, if there is enough stocks.
"""
stockUpdatePolicy: StockUpdatePolicyEnum
): OrderBulkCreate @doc(category: "Orders")
"""
Delete metadata of an object. To use it, you need to have access to the modified object.
"""
deleteMetadata(
"""
ID or token (for Order and Checkout) of an object to update.
"""
id: ID!
"""
Metadata keys to delete.
"""
keys: [String!]!
): DeleteMetadata
"""
Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object.
"""
deletePrivateMetadata(
"""
ID or token (for Order and Checkout) of an object to update.
"""
id: ID!
"""
Metadata keys to delete.
"""
keys: [String!]!
): DeletePrivateMetadata
"""
Updates metadata of an object.Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
updateMetadata(
"""
ID or token (for Order and Checkout) of an object to update.
"""
id: ID!
"""
Fields required to update the object's metadata.
"""
input: [MetadataInput!]!
): UpdateMetadata
"""
Updates private metadata of an object. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
updatePrivateMetadata(
"""
ID or token (for Order and Checkout) of an object to update.
"""
id: ID!
"""
Fields required to update the object's metadata.
"""
input: [MetadataInput!]!
): UpdatePrivateMetadata
"""
Assigns storefront's navigation menus.
Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS.
"""
assignNavigation(
"""
ID of the menu.
"""
menu: ID
"""
Type of the navigation bar to assign the menu to.
"""
navigationType: NavigationType!
): AssignNavigation @doc(category: "Menu")
"""
Creates a new Menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_CREATED (async): A menu was created.
"""
menuCreate(
"""
Fields required to create a menu.
"""
input: MenuCreateInput!
): MenuCreate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_CREATED], syncEvents: [])
"""
Deletes a menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_DELETED (async): A menu was deleted.
"""
menuDelete(
"""
ID of a menu to delete.
"""
id: ID!
): MenuDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_DELETED], syncEvents: [])
"""
Deletes menus.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_DELETED (async): A menu was deleted.
"""
menuBulkDelete(
"""
List of menu IDs to delete.
"""
ids: [ID!]!
): MenuBulkDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_DELETED], syncEvents: [])
"""
Updates a menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_UPDATED (async): A menu was updated.
"""
menuUpdate(
"""
ID of a menu to update.
"""
id: ID!
"""
Fields required to update a menu.
"""
input: MenuInput!
): MenuUpdate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_UPDATED], syncEvents: [])
"""
Creates a new menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_CREATED (async): A menu item was created.
"""
menuItemCreate(
"""
Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item.
"""
input: MenuItemCreateInput!
): MenuItemCreate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_CREATED], syncEvents: [])
"""
Deletes a menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_DELETED (async): A menu item was deleted.
"""
menuItemDelete(
"""
ID of a menu item to delete.
"""
id: ID!
): MenuItemDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_DELETED], syncEvents: [])
"""
Deletes menu items.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_DELETED (async): A menu item was deleted.
"""
menuItemBulkDelete(
"""
List of menu item IDs to delete.
"""
ids: [ID!]!
): MenuItemBulkDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_DELETED], syncEvents: [])
"""
Updates a menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_UPDATED (async): A menu item was updated.
"""
menuItemUpdate(
"""
ID of a menu item to update.
"""
id: ID!
"""
Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item.
"""
input: MenuItemInput!
): MenuItemUpdate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_UPDATED], syncEvents: [])
"""
Creates/updates translations for a menu item.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
menuItemTranslate(
"""
MenuItem ID or MenuItemTranslatableContent ID.
"""
id: ID!
"""
Fields required to update menu item translations.
"""
input: NameTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): MenuItemTranslate @doc(category: "Menu")
"""
Moves items of menus.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_UPDATED (async): Optionally triggered when sort order or parent changed for menu item.
"""
menuItemMove(
"""
ID of the menu.
"""
menu: ID!
"""
The menu position data.
"""
moves: [MenuItemMoveInput!]!
): MenuItemMove
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_UPDATED], syncEvents: [])
"""
Request an invoice for the order using plugin.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_REQUESTED (async): An invoice was requested.
"""
invoiceRequest(
"""
Invoice number, if not provided it will be generated.
"""
number: String
"""
ID of the order related to invoice.
"""
orderId: ID!
): InvoiceRequest
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_REQUESTED], syncEvents: [])
"""
Requests deletion of an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_DELETED (async): An invoice was requested to delete.
"""
invoiceRequestDelete(
"""
ID of an invoice to request the deletion.
"""
id: ID!
): InvoiceRequestDelete
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_DELETED], syncEvents: [])
"""
Creates a ready to send invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
invoiceCreate(
"""
Fields required when creating an invoice.
"""
input: InvoiceCreateInput!
"""
ID of the order related to invoice.
"""
orderId: ID!
): InvoiceCreate @doc(category: "Orders")
"""
Deletes an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
invoiceDelete(
"""
ID of an invoice to delete.
"""
id: ID!
): InvoiceDelete @doc(category: "Orders")
"""
Updates an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
invoiceUpdate(
"""
ID of an invoice to update.
"""
id: ID!
"""
Fields to use when updating an invoice.
"""
input: UpdateInvoiceInput!
): InvoiceUpdate @doc(category: "Orders")
"""
Send an invoice notification to the customer.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_SENT (async): A notification for invoice send
- NOTIFY_USER (async): A notification for invoice send
"""
invoiceSendNotification(
"""
ID of an invoice to be sent.
"""
id: ID!
): InvoiceSendNotification
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_SENT, NOTIFY_USER], syncEvents: [])
"""
Activate a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was activated.
"""
giftCardActivate(
"""
ID of a gift card to activate.
"""
id: ID!
): GiftCardActivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: [])
"""
Creates a new gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_CREATED (async): A gift card was created.
- NOTIFY_USER (async): A notification for created gift card.
"""
giftCardCreate(
"""
Fields required to create a gift card.
"""
input: GiftCardCreateInput!
): GiftCardCreate
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [GIFT_CARD_CREATED, NOTIFY_USER]
syncEvents: []
)
"""
Delete gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_DELETED (async): A gift card was deleted.
"""
giftCardDelete(
"""
ID of the gift card to delete.
"""
id: ID!
): GiftCardDelete
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_DELETED], syncEvents: [])
"""
Deactivate a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was deactivated.
"""
giftCardDeactivate(
"""
ID of a gift card to deactivate.
"""
id: ID!
): GiftCardDeactivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: [])
"""
Update a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_UPDATED (async): A gift card was updated.
"""
giftCardUpdate(
"""
ID of a gift card to update.
"""
id: ID!
"""
Fields required to update a gift card.
"""
input: GiftCardUpdateInput!
): GiftCardUpdate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_UPDATED], syncEvents: [])
"""
Resend a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for gift card resend.
"""
giftCardResend(
"""
Fields required to resend a gift card.
"""
input: GiftCardResendInput!
): GiftCardResend
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [NOTIFY_USER], syncEvents: [])
"""
Adds note to the gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_UPDATED (async): A gift card was updated.
"""
giftCardAddNote(
"""
ID of the gift card to add a note for.
"""
id: ID!
"""
Fields required to create a note for the gift card.
"""
input: GiftCardAddNoteInput!
): GiftCardAddNote
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_UPDATED], syncEvents: [])
"""
Create gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_CREATED (async): A gift card was created.
- NOTIFY_USER (async): A notification for created gift card.
"""
giftCardBulkCreate(
"""
Fields required to create gift cards.
"""
input: GiftCardBulkCreateInput!
): GiftCardBulkCreate
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [GIFT_CARD_CREATED, NOTIFY_USER]
syncEvents: []
)
"""
Delete gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_DELETED (async): A gift card was deleted.
"""
giftCardBulkDelete(
"""
List of gift card IDs to delete.
"""
ids: [ID!]!
): GiftCardBulkDelete
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_DELETED], syncEvents: [])
"""
Activate gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was activated.
"""
giftCardBulkActivate(
"""
List of gift card IDs to activate.
"""
ids: [ID!]!
): GiftCardBulkActivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: [])
"""
Deactivate gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was deactivated.
"""
giftCardBulkDeactivate(
"""
List of gift card IDs to deactivate.
"""
ids: [ID!]!
): GiftCardBulkDeactivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: [])
"""
Update plugin configuration.
Requires one of the following permissions: MANAGE_PLUGINS.
"""
pluginUpdate(
"""
ID of a channel for which the data should be modified.
"""
channelId: ID
"""
ID of plugin to update.
"""
id: ID!
"""
Fields required to update a plugin configuration.
"""
input: PluginUpdateInput!
): PluginUpdate
"""
Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload.
"""
externalNotificationTrigger(
"""
Channel slug. Saleor will send a notification within a provided channel. Please, make sure that necessary plugins are active.
"""
channel: String!
"""
Input for External Notification Trigger.
"""
input: ExternalNotificationTriggerInput!
"""
The ID of notification plugin.
"""
pluginId: String
): ExternalNotificationTrigger @deprecated
"""
Creates a new promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_CREATED (async): A promotion was created.
- PROMOTION_STARTED (async): Optionally called if promotion was started.
"""
promotionCreate(
"""
Fields requires to create a promotion.
"""
input: PromotionCreateInput!
): PromotionCreate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [PROMOTION_CREATED, PROMOTION_STARTED]
syncEvents: []
)
"""
Updates an existing promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_UPDATED (async): A promotion was updated.
- PROMOTION_STARTED (async): Optionally called if promotion was started.
- PROMOTION_ENDED (async): Optionally called if promotion was ended.
"""
promotionUpdate(
"""
ID of the promotion to update.
"""
id: ID!
"""
Fields required to update a promotion.
"""
input: PromotionUpdateInput!
): PromotionUpdate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [PROMOTION_UPDATED, PROMOTION_STARTED, PROMOTION_ENDED]
syncEvents: []
)
"""
Deletes a promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_DELETED (async): A promotion was deleted.
"""
promotionDelete(
"""
The ID of the promotion to remove.
"""
id: ID!
): PromotionDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_DELETED], syncEvents: [])
"""
Creates a new promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_CREATED (async): A promotion rule was created.
"""
promotionRuleCreate(
"""
Fields required to create a promotion rule.
"""
input: PromotionRuleCreateInput!
): PromotionRuleCreate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_CREATED], syncEvents: [])
"""
Updates an existing promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_UPDATED (async): A promotion rule was updated.
"""
promotionRuleUpdate(
"""
ID of the promotion rule to update.
"""
id: ID!
"""
Fields required to create a promotion rule.
"""
input: PromotionRuleUpdateInput!
): PromotionRuleUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_UPDATED], syncEvents: [])
"""
Deletes a promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_DELETED (async): A promotion rule was deleted.
"""
promotionRuleDelete(
"""
The ID of the promotion to remove.
"""
id: ID!
): PromotionRuleDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_DELETED], syncEvents: [])
"""
Creates/updates translations for a promotion.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
promotionTranslate(
"""
Promotion ID or PromotionTranslatableContent ID.
"""
id: ID!
"""
Fields required to update promotion translations.
"""
input: PromotionTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): PromotionTranslate @doc(category: "Discounts")
"""
Creates/updates translations for a promotion rule.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
promotionRuleTranslate(
"""
PromotionRule ID or PromotionRuleTranslatableContent ID.
"""
id: ID!
"""
Fields required to update promotion rule translations.
"""
input: PromotionRuleTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): PromotionRuleTranslate @doc(category: "Discounts")
"""
Deletes promotions.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_DELETED (async): A promotion was deleted.
"""
promotionBulkDelete(
"""
List of promotion IDs to delete.
"""
ids: [ID!]!
): PromotionBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_DELETED], syncEvents: [])
"""
Creates a new sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_CREATED (async): A sale was created.
"""
saleCreate(
"""
Fields required to create a sale.
"""
input: SaleInput!
): SaleCreate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_CREATED], syncEvents: [])
@deprecated(reason: "Use `promotionCreate` mutation instead.")
"""
Deletes a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_DELETED (async): A sale was deleted.
"""
saleDelete(
"""
ID of a sale to delete.
"""
id: ID!
): SaleDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_DELETED], syncEvents: [])
@deprecated(reason: "Use `promotionDelete` mutation instead.")
"""
Deletes sales.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_DELETED (async): A sale was deleted.
"""
saleBulkDelete(
"""
List of sale IDs to delete.
"""
ids: [ID!]!
): SaleBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_DELETED], syncEvents: [])
"""
Updates a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
- SALE_TOGGLE (async): Optionally triggered when a sale is started or stopped.
"""
saleUpdate(
"""
ID of a sale to update.
"""
id: ID!
"""
Fields required to update a sale.
"""
input: SaleInput!
): SaleUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED, SALE_TOGGLE], syncEvents: [])
@deprecated(reason: "Use `promotionUpdate` mutation instead.")
"""
Adds products, categories, collections to a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
"""
saleCataloguesAdd(
"""
ID of a sale.
"""
id: ID!
"""
Fields required to modify catalogue IDs of sale.
"""
input: CatalogueInput!
): SaleAddCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED], syncEvents: [])
@deprecated(
reason: "Use `promotionRuleCreate` and `promotionRuleUpdate` mutations instead."
)
"""
Removes products, categories, collections from a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
"""
saleCataloguesRemove(
"""
ID of a sale.
"""
id: ID!
"""
Fields required to modify catalogue IDs of sale.
"""
input: CatalogueInput!
): SaleRemoveCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED], syncEvents: [])
@deprecated(
reason: "Use `promotionRuleUpdate` and `promotionRuleDelete` mutations instead."
)
"""
Creates/updates translations for a sale.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
saleTranslate(
"""
Sale ID or SaleTranslatableContent ID.
"""
id: ID!
"""
Fields required to update sale translations.
"""
input: NameTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): SaleTranslate
@doc(category: "Discounts")
@deprecated(reason: "Use `promotionTranslate` mutation instead.")
"""
Manage sale's availability in channels.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
saleChannelListingUpdate(
"""
ID of a sale to update.
"""
id: ID!
"""
Fields required to update sale channel listings.
"""
input: SaleChannelListingInput!
): SaleChannelListingUpdate
@doc(category: "Discounts")
@deprecated(reason: "Use `promotionRuleUpdate` mutation instead.")
"""
Creates a new voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CREATED (async): A voucher was created.
- VOUCHER_CODES_CREATED (async): A voucher codes were created.
"""
voucherCreate(
"""
Fields required to create a voucher.
"""
input: VoucherInput!
): VoucherCreate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_CREATED, VOUCHER_CODES_CREATED]
syncEvents: []
)
"""
Deletes a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_DELETED (async): A voucher was deleted.
"""
voucherDelete(
"""
ID of a voucher to delete.
"""
id: ID!
): VoucherDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_DELETED], syncEvents: [])
"""
Deletes vouchers.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_DELETED (async): A voucher was deleted.
"""
voucherBulkDelete(
"""
List of voucher IDs to delete.
"""
ids: [ID!]!
): VoucherBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_DELETED], syncEvents: [])
"""
Updates a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
- VOUCHER_CODES_CREATED (async): A voucher code was created.
"""
voucherUpdate(
"""
ID of a voucher to update.
"""
id: ID!
"""
Fields required to update a voucher.
"""
input: VoucherInput!
): VoucherUpdate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_UPDATED, VOUCHER_CODES_CREATED]
syncEvents: []
)
"""
Adds products, categories, collections to a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
voucherCataloguesAdd(
"""
ID of a voucher.
"""
id: ID!
"""
Fields required to modify catalogue IDs of voucher.
"""
input: CatalogueInput!
): VoucherAddCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: [])
"""
Removes products, categories, collections from a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
voucherCataloguesRemove(
"""
ID of a voucher.
"""
id: ID!
"""
Fields required to modify catalogue IDs of voucher.
"""
input: CatalogueInput!
): VoucherRemoveCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: [])
"""
Creates/updates translations for a voucher.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
voucherTranslate(
"""
Voucher ID or VoucherTranslatableContent ID.
"""
id: ID!
"""
Fields required to update voucher translations.
"""
input: NameTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): VoucherTranslate @doc(category: "Discounts")
"""
Manage voucher's availability in channels.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
voucherChannelListingUpdate(
"""
ID of a voucher to update.
"""
id: ID!
"""
Fields required to update voucher channel listings.
"""
input: VoucherChannelListingInput!
): VoucherChannelListingUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: [])
"""
Deletes voucher codes.
Added in Saleor 3.18.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CODES_DELETED (async): A voucher codes were deleted.
"""
voucherCodeBulkDelete(
"""
List of voucher codes IDs to delete.
"""
ids: [ID!]!
): VoucherCodeBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_CODES_DELETED], syncEvents: [])
"""
Export products to csv file.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for the exported file.
- PRODUCT_EXPORT_COMPLETED (async): A notification for the exported file.
"""
exportProducts(
"""
Fields required to export product data.
"""
input: ExportProductsInput!
): ExportProducts
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, PRODUCT_EXPORT_COMPLETED]
syncEvents: []
)
"""
Export gift cards to csv file.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for the exported file.
- GIFT_CARD_EXPORT_COMPLETED (async): A notification for the exported file.
"""
exportGiftCards(
"""
Fields required to export gift cards data.
"""
input: ExportGiftCardsInput!
): ExportGiftCards
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, GIFT_CARD_EXPORT_COMPLETED]
syncEvents: []
)
"""
Export voucher codes to csv/xlsx file.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CODE_EXPORT_COMPLETED (async): A notification for the exported file.
"""
exportVoucherCodes(
"""
Fields required to export voucher codes.
"""
input: ExportVoucherCodesInput!
): ExportVoucherCodes
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_CODE_EXPORT_COMPLETED]
syncEvents: []
)
"""
Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
fileUpload(
"""
Represents a file in a multipart request.
"""
file: Upload!
): FileUpload
"""
Adds a gift card or a voucher to a checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutAddPromoCode(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Gift card code or voucher code.
"""
promoCode: String!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutAddPromoCode
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Update billing address in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutBillingAddressUpdate(
"""
The billing address of the checkout.
"""
billingAddress: AddressInput!
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Indicates whether the billing address should be saved to the user’s address book upon checkout completion. If not provided, the default behavior is to save the address.
Added in Saleor 3.21.
"""
saveAddress: Boolean = true
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
"""
The rules for changing validation for received billing address data.
"""
validationRules: CheckoutAddressValidationRules
): CheckoutBillingAddressUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Completes the checkout. As a result a new order is created. The mutation allows to create the unpaid order when setting `orderSettings.allowUnpaidOrders` for given `Channel` is set to `true`. When `orderSettings.allowUnpaidOrders` is set to `false`, checkout can be completed only when attached `Payment`/`TransactionItem`s fully cover the checkout's total. When processing the checkout with `Payment`, in case of required additional confirmation step like 3D secure, the `confirmationNeeded` flag will be set to True and no order will be created until payment is confirmed with second call of this mutation.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
- ORDER_CREATED (async): Triggered when order is created.
- NOTIFY_USER (async): A notification for order placement.
- NOTIFY_USER (async): A staff notification for order placement.
- ORDER_UPDATED (async): Triggered when order received the update after placement.
- ORDER_PAID (async): Triggered when newly created order is paid.
- ORDER_FULLY_PAID (async): Triggered when newly created order is fully paid.
- ORDER_CONFIRMED (async): Optionally triggered when newly created order are automatically marked as confirmed.
"""
checkoutComplete(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Fields required to update the checkout metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Client-side generated data required to finalize the payment.
"""
paymentData: JSONString
"""
URL of a view where users should be redirected to see the order details. URL in RFC 1808 format.
"""
redirectUrl: String
"""
Determines whether to store the payment source for future usage.
"""
storeSource: Boolean = false
@deprecated(reason: "Use checkoutPaymentCreate for this action.")
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutComplete
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [
ORDER_CREATED
NOTIFY_USER
NOTIFY_USER
ORDER_UPDATED
ORDER_PAID
ORDER_FULLY_PAID
ORDER_CONFIRMED
]
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
CHECKOUT_CALCULATE_TAXES
]
)
"""
Create a new checkout.
`skipValidation` field requires HANDLE_CHECKOUTS and AUTHENTICATED_APP permissions.
Triggers the following webhook events:
- CHECKOUT_CREATED (async): A checkout was created.
"""
checkoutCreate(
"""
Fields required to create checkout.
"""
input: CheckoutCreateInput!
): CheckoutCreate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_CREATED], syncEvents: [])
"""
Create new checkout from existing order.
"""
checkoutCreateFromOrder(
"""
ID of a order that will be used to create the checkout.
"""
id: ID!
): CheckoutCreateFromOrder @doc(category: "Checkout")
"""
Sets the customer as the owner of the checkout.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutCustomerAttach(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
ID of customer to attach to checkout. Requires IMPERSONATE_USER permission when customerId is different than the logged-in user.
"""
customerId: ID
"""
The checkout's ID.
"""
id: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutCustomerAttach
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Removes the user assigned as the owner of the checkout.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutCustomerDetach(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutCustomerDetach
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Updates customer note in the existing checkout object.
Added in Saleor 3.21.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutCustomerNoteUpdate(
"""
New customer note content.
"""
customerNote: String!
"""
The checkout's ID.
"""
id: ID!
): CheckoutCustomerNoteUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Updates email address in the existing checkout object.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutEmailUpdate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
email.
"""
email: String!
"""
The checkout's ID.
"""
id: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutEmailUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Deletes a CheckoutLine.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutLineDelete(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
ID of the checkout line to delete.
"""
lineId: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutLineDelete
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
@deprecated(reason: "Use `checkoutLinesDelete` instead.")
"""
Deletes checkout lines.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutLinesDelete(
"""
The checkout's ID.
"""
id: ID
"""
A list of checkout lines.
"""
linesIds: [ID!]!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutLinesDelete
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutLinesAdd(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
A list of checkout lines, each containing information about an item in the checkout.
"""
lines: [CheckoutLineInput!]!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutLinesAdd
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Updates checkout line in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutLinesUpdate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
A list of checkout lines, each containing information about an item in the checkout.
"""
lines: [CheckoutLineUpdateInput!]!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutLinesUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Remove a gift card or a voucher from a checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutRemovePromoCode(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Gift card code or voucher code.
"""
promoCode: String
"""
Gift card or voucher ID.
"""
promoCodeId: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutRemovePromoCode
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Create a new payment for given checkout.
"""
checkoutPaymentCreate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Data required to create a new payment.
"""
input: PaymentInput!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutPaymentCreate @doc(category: "Checkout")
"""
Update shipping address in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutShippingAddressUpdate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Indicates whether the shipping address should be saved to the user’s address book upon checkout completion. If not provided, the default behavior is to save the address.
Added in Saleor 3.21.
"""
saveAddress: Boolean = true
"""
The mailing address to where the checkout will be shipped.
"""
shippingAddress: AddressInput!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
"""
The rules for changing validation for received shipping address data.
"""
validationRules: CheckoutAddressValidationRules
): CheckoutShippingAddressUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Updates the shipping method of the checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Triggered when updating the checkout shipping method with the external one.
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutShippingMethodUpdate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
Shipping method.
"""
shippingMethodId: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutShippingMethodUpdate
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [CHECKOUT_UPDATED]
syncEvents: [SHIPPING_LIST_METHODS_FOR_CHECKOUT]
)
@deprecated(reason: "Use `checkoutDeliveryMethodUpdate` instead.")
"""
Updates the delivery method (shipping method or pick up point) of the checkout. Updates the checkout shipping_address for click and collect delivery for a warehouse address.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Triggered when updating the checkout delivery method with the external one.
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutDeliveryMethodUpdate(
"""
Delivery Method ID (`Warehouse` ID or `ShippingMethod` ID).
"""
deliveryMethodId: ID
"""
The checkout's ID.
"""
id: ID
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutDeliveryMethodUpdate
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [CHECKOUT_UPDATED]
syncEvents: [SHIPPING_LIST_METHODS_FOR_CHECKOUT]
)
"""
Update language code in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
checkoutLanguageCodeUpdate(
"""
The ID of the checkout.
"""
checkoutId: ID @deprecated(reason: "Use `id` instead.")
"""
The checkout's ID.
"""
id: ID
"""
New language code.
"""
languageCode: LanguageCodeEnum!
"""
Checkout token.
"""
token: UUID @deprecated(reason: "Use `id` instead.")
): CheckoutLanguageCodeUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: [])
"""
Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
- ORDER_CREATED (async): Triggered when order is created.
- NOTIFY_USER (async): A notification for order placement.
- NOTIFY_USER (async): A staff notification for order placement.
- ORDER_UPDATED (async): Triggered when order received the update after placement.
- ORDER_PAID (async): Triggered when newly created order is paid.
- ORDER_FULLY_PAID (async): Triggered when newly created order is fully paid.
- ORDER_CONFIRMED (async): Optionally triggered when newly created order are automatically marked as confirmed.
"""
orderCreateFromCheckout(
"""
ID of a checkout that will be converted to an order.
"""
id: ID!
"""
Fields required to update the checkout metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the checkout private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Determines if checkout should be removed after creating an order. Default true.
"""
removeCheckout: Boolean = true
): OrderCreateFromCheckout
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [
ORDER_CREATED
NOTIFY_USER
NOTIFY_USER
ORDER_UPDATED
ORDER_PAID
ORDER_FULLY_PAID
ORDER_CONFIRMED
]
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
CHECKOUT_CALCULATE_TAXES
]
)
"""
Creates new channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_CREATED (async): A channel was created.
"""
channelCreate(
"""
Fields required to create channel.
"""
input: ChannelCreateInput!
): ChannelCreate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_CREATED], syncEvents: [])
"""
Update a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Requires one of the following permissions when updating only `orderSettings` field: `MANAGE_CHANNELS`, `MANAGE_ORDERS`.
Requires one of the following permissions when updating only `checkoutSettings` field: `MANAGE_CHANNELS`, `MANAGE_CHECKOUTS`.
Requires one of the following permissions when updating only `paymentSettings` field: `MANAGE_CHANNELS`, `HANDLE_PAYMENTS`.
Triggers the following webhook events:
- CHANNEL_UPDATED (async): A channel was updated.
- CHANNEL_METADATA_UPDATED (async): Optionally triggered when public or private metadata is updated.
"""
channelUpdate(
"""
ID of a channel to update.
"""
id: ID!
"""
Fields required to update a channel.
"""
input: ChannelUpdateInput!
): ChannelUpdate
@doc(category: "Channels")
@webhookEventsInfo(
asyncEvents: [CHANNEL_UPDATED, CHANNEL_METADATA_UPDATED]
syncEvents: []
)
"""
Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_DELETED (async): A channel was deleted.
"""
channelDelete(
"""
ID of a channel to delete.
"""
id: ID!
"""
Fields required to delete a channel.
"""
input: ChannelDeleteInput
): ChannelDelete
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_DELETED], syncEvents: [])
"""
Activate a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_STATUS_CHANGED (async): A channel was activated.
"""
channelActivate(
"""
ID of the channel to activate.
"""
id: ID!
): ChannelActivate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_STATUS_CHANGED], syncEvents: [])
"""
Deactivate a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_STATUS_CHANGED (async): A channel was deactivated.
"""
channelDeactivate(
"""
ID of the channel to deactivate.
"""
id: ID!
): ChannelDeactivate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_STATUS_CHANGED], syncEvents: [])
"""
Reorder the warehouses of a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
"""
channelReorderWarehouses(
"""
ID of a channel.
"""
channelId: ID!
"""
The list of reordering operations for the given channel warehouses.
"""
moves: [ReorderInput!]!
): ChannelReorderWarehouses @doc(category: "Channels")
"""
Creates an attribute.
Triggers the following webhook events:
- ATTRIBUTE_CREATED (async): An attribute was created.
"""
attributeCreate(
"""
Fields required to create an attribute.
"""
input: AttributeCreateInput!
): AttributeCreate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_CREATED], syncEvents: [])
"""
Deletes an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_DELETED (async): An attribute was deleted.
"""
attributeDelete(
"""
External ID of an attribute to delete.
"""
externalReference: String
"""
ID of an attribute to delete.
"""
id: ID
): AttributeDelete
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_DELETED], syncEvents: [])
"""
Updates attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeUpdate(
"""
External ID of an attribute to update.
"""
externalReference: String
"""
ID of an attribute to update.
"""
id: ID
"""
Fields required to update an attribute.
"""
input: AttributeUpdateInput!
): AttributeUpdate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_UPDATED], syncEvents: [])
"""
Creates attributes.
Triggers the following webhook events:
- ATTRIBUTE_CREATED (async): An attribute was created.
"""
attributeBulkCreate(
"""
Input list of attributes to create.
"""
attributes: [AttributeCreateInput!]!
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
): AttributeBulkCreate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_CREATED], syncEvents: [])
"""
Updates attributes.
Triggers the following webhook events:
- ATTRIBUTE_UPDATED (async): An attribute was updated. Optionally called when new attribute value was created or deleted.
- ATTRIBUTE_VALUE_CREATED (async): Called optionally when an attribute value was created.
- ATTRIBUTE_VALUE_DELETED (async): Called optionally when an attribute value was deleted.
"""
attributeBulkUpdate(
"""
Input list of attributes to update.
"""
attributes: [AttributeBulkUpdateInput!]!
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
): AttributeBulkUpdate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [
ATTRIBUTE_UPDATED
ATTRIBUTE_VALUE_CREATED
ATTRIBUTE_VALUE_DELETED
]
syncEvents: []
)
"""
Creates/updates translations for an attribute.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
attributeTranslate(
"""
Attribute ID or AttributeTranslatableContent ID.
"""
id: ID!
"""
Fields required to update attribute translations.
"""
input: NameTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): AttributeTranslate @doc(category: "Attributes")
"""
Creates/updates translations for attributes.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
attributeBulkTranslate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
List of attributes translations.
"""
translations: [AttributeBulkTranslateInput!]!
): AttributeBulkTranslate @doc(category: "Attributes")
"""
Deletes attributes.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_DELETED (async): An attribute was deleted.
"""
attributeBulkDelete(
"""
List of attribute IDs to delete.
"""
ids: [ID!]!
): AttributeBulkDelete
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_DELETED], syncEvents: [])
"""
Deletes values of attributes.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_DELETED (async): An attribute value was deleted.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeValueBulkDelete(
"""
List of attribute value IDs to delete.
"""
ids: [ID!]!
): AttributeValueBulkDelete
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_DELETED, ATTRIBUTE_UPDATED]
syncEvents: []
)
"""
Creates a value for an attribute.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_CREATED (async): An attribute value was created.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeValueCreate(
"""
Attribute to which value will be assigned.
"""
attribute: ID!
"""
Fields required to create an AttributeValue.
"""
input: AttributeValueCreateInput!
): AttributeValueCreate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_CREATED, ATTRIBUTE_UPDATED]
syncEvents: []
)
"""
Deletes a value of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_DELETED (async): An attribute value was deleted.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeValueDelete(
"""
External ID of a value to delete.
"""
externalReference: String
"""
ID of a value to delete.
"""
id: ID
): AttributeValueDelete
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_DELETED, ATTRIBUTE_UPDATED]
syncEvents: []
)
"""
Updates value of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_UPDATED (async): An attribute value was updated.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeValueUpdate(
"""
External ID of an AttributeValue to update.
"""
externalReference: String
"""
ID of an AttributeValue to update.
"""
id: ID
"""
Fields required to update an AttributeValue.
"""
input: AttributeValueUpdateInput!
): AttributeValueUpdate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_UPDATED, ATTRIBUTE_UPDATED]
syncEvents: []
)
"""
Creates/updates translations for attributes values.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
attributeValueBulkTranslate(
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
"""
List of attribute values translations.
"""
translations: [AttributeValueBulkTranslateInput!]!
): AttributeValueBulkTranslate @doc(category: "Attributes")
"""
Creates/updates translations for an attribute value.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
attributeValueTranslate(
"""
AttributeValue ID or AttributeValueTranslatableContent ID.
"""
id: ID!
"""
Fields required to update attribute value translations.
"""
input: AttributeValueTranslationInput!
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
): AttributeValueTranslate @doc(category: "Attributes")
"""
Reorder the values of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_UPDATED (async): An attribute value was updated.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
attributeReorderValues(
"""
ID of an attribute.
"""
attributeId: ID!
"""
The list of reordering operations for given attribute values.
"""
moves: [ReorderInput!]!
): AttributeReorderValues
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_UPDATED, ATTRIBUTE_UPDATED]
syncEvents: []
)
"""
Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS.
Triggers the following webhook events:
- APP_INSTALLED (async): An app was installed.
"""
appCreate(
"""
Fields required to create a new app.
"""
input: AppInput!
): AppCreate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_INSTALLED], syncEvents: [])
"""
Updates an existing app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_UPDATED (async): An app was updated.
"""
appUpdate(
"""
ID of an app to update.
"""
id: ID!
"""
Fields required to update an existing app.
"""
input: AppInput!
): AppUpdate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_UPDATED], syncEvents: [])
"""
Deletes an app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_DELETED (async): An app was deleted.
"""
appDelete(
"""
ID of an app to delete.
"""
id: ID!
): AppDelete
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_DELETED], syncEvents: [])
"""
Creates a new token.
Requires one of the following permissions: MANAGE_APPS.
"""
appTokenCreate(
"""
Fields required to create a new auth token.
"""
input: AppTokenInput!
): AppTokenCreate @doc(category: "Apps")
"""
Deletes an authentication token assigned to app.
Requires one of the following permissions: MANAGE_APPS.
"""
appTokenDelete(
"""
ID of an auth token to delete.
"""
id: ID!
): AppTokenDelete @doc(category: "Apps")
"""
Verify provided app token.
"""
appTokenVerify(
"""
App token to verify.
"""
token: String!
): AppTokenVerify @doc(category: "Apps")
"""
Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS.
"""
appInstall(
"""
Fields required to install a new app.
"""
input: AppInstallInput!
): AppInstall @doc(category: "Apps")
"""
Retry failed installation of new app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_INSTALLED (async): An app was installed.
"""
appRetryInstall(
"""
Determine if app will be set active or not.
"""
activateAfterInstallation: Boolean = true
"""
ID of failed installation.
"""
id: ID!
): AppRetryInstall
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_INSTALLED], syncEvents: [])
"""
Delete failed installation.
Requires one of the following permissions: MANAGE_APPS.
"""
appDeleteFailedInstallation(
"""
ID of failed installation to delete.
"""
id: ID!
): AppDeleteFailedInstallation @doc(category: "Apps")
"""
Fetch and validate manifest.
Requires one of the following permissions: MANAGE_APPS.
"""
appFetchManifest(
"""
URL to app's manifest in JSON format.
"""
manifestUrl: String!
): AppFetchManifest @doc(category: "Apps")
"""
Activate the app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_STATUS_CHANGED (async): An app was activated.
"""
appActivate(
"""
ID of app to activate.
"""
id: ID!
): AppActivate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_STATUS_CHANGED], syncEvents: [])
"""
Deactivate the app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_STATUS_CHANGED (async): An app was deactivated.
"""
appDeactivate(
"""
ID of app to deactivate.
"""
id: ID!
): AppDeactivate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_STATUS_CHANGED], syncEvents: [])
"""
Re-enable sync webhooks for provided app. Can be used to manually re-enable sync webhooks for the app before the cooldown period ends.
Added in Saleor 3.21.
Requires one of the following permissions: MANAGE_APPS.
"""
appReenableSyncWebhooks(
"""
The app ID to re-enable sync webhooks for.
"""
appId: ID!
): AppReenableSyncWebhooks @doc(category: "Apps")
"""
Create JWT token.
"""
tokenCreate(
"""
The audience that will be included to JWT tokens with prefix `custom:`.
"""
audience: String
"""
Email of a user.
"""
email: String!
"""
Password of a user.
"""
password: String!
): CreateToken @doc(category: "Authentication")
"""
Refresh JWT token. Mutation tries to take refreshToken from the input. If it fails it will try to take `refreshToken` from the http-only cookie `refreshToken`. `csrfToken` is required when `refreshToken` is provided as a cookie.
"""
tokenRefresh(
"""
CSRF token required to refresh token. This argument is required when `refreshToken` is provided as a cookie.
"""
csrfToken: String
"""
Refresh token.
"""
refreshToken: String
): RefreshToken @doc(category: "Authentication")
"""
Verify JWT token.
"""
tokenVerify(
"""
JWT token to validate.
"""
token: String!
): VerifyToken @doc(category: "Authentication")
"""
Deactivate all JWT tokens of the currently authenticated user.
Requires one of the following permissions: AUTHENTICATED_USER.
"""
tokensDeactivateAll: DeactivateAllUserTokens @doc(category: "Authentication")
"""
Prepare external authentication URL for user by custom plugin.
"""
externalAuthenticationUrl(
"""
The data required by plugin to create external authentication url.
"""
input: JSONString!
"""
The ID of the authentication plugin.
"""
pluginId: String!
): ExternalAuthenticationUrl @doc(category: "Authentication")
"""
Obtain external access tokens for user by custom plugin.
"""
externalObtainAccessTokens(
"""
The data required by plugin to create authentication data.
"""
input: JSONString!
"""
The ID of the authentication plugin.
"""
pluginId: String!
): ExternalObtainAccessTokens @doc(category: "Authentication")
"""
Refresh user's access by custom plugin.
"""
externalRefresh(
"""
The data required by plugin to proceed the refresh process.
"""
input: JSONString!
"""
The ID of the authentication plugin.
"""
pluginId: String!
): ExternalRefresh @doc(category: "Authentication")
"""
Logout user by custom plugin.
"""
externalLogout(
"""
The data required by plugin to proceed the logout process.
"""
input: JSONString!
"""
The ID of the authentication plugin.
"""
pluginId: String!
): ExternalLogout @doc(category: "Authentication")
"""
Verify external authentication data by plugin.
"""
externalVerify(
"""
The data required by plugin to proceed the verification.
"""
input: JSONString!
"""
The ID of the authentication plugin.
"""
pluginId: String!
): ExternalVerify @doc(category: "Authentication")
"""
Sends an email with the account password modification link.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for password reset.
- ACCOUNT_SET_PASSWORD_REQUESTED (async): Setting a new password for the account is requested.
- STAFF_SET_PASSWORD_REQUESTED (async): Setting a new password for the staff account is requested.
"""
requestPasswordReset(
"""
Slug of a channel which will be used to notify the user. It is needed for customers, if not provided, the notification may not happen. Please note that mutation will not fail if the channel is not provided.
"""
channel: String
"""
Email of the user that will be used for password recovery.
"""
email: String!
"""
URL of a view where users should be redirected to reset the password. URL in RFC 1808 format.
"""
redirectUrl: String!
): RequestPasswordReset
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [
NOTIFY_USER
ACCOUNT_SET_PASSWORD_REQUESTED
STAFF_SET_PASSWORD_REQUESTED
]
syncEvents: []
)
"""
Sends a notification confirmation.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account confirmation.
- ACCOUNT_CONFIRMATION_REQUESTED (async): An account confirmation was requested. This event is always sent regardless of settings.
"""
sendConfirmationEmail(
"""
Slug of a channel which will be used for notify user.
"""
channel: String!
"""
Base of frontend URL that will be needed to create confirmation URL.
"""
redirectUrl: String!
): SendConfirmationEmail
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_CONFIRMATION_REQUESTED]
syncEvents: []
)
"""
Confirm user account with token sent by email during registration.
Triggers the following webhook events:
- ACCOUNT_CONFIRMED (async): Account was confirmed.
"""
confirmAccount(
"""
E-mail of the user performing account confirmation.
"""
email: String!
"""
A one-time token required to confirm the account.
"""
token: String!
): ConfirmAccount
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ACCOUNT_CONFIRMED], syncEvents: [])
"""
Sets the user's password from the token sent by email using the RequestPasswordReset mutation.
"""
setPassword(
"""
Email of a user.
"""
email: String!
"""
Password of a user.
"""
password: String!
"""
A one-time token required to set the password.
"""
token: String!
): SetPassword @doc(category: "Users")
"""
Change the password of the logged in user.
Requires one of the following permissions: AUTHENTICATED_USER.
"""
passwordChange(
"""
New user password.
"""
newPassword: String!
"""
Current user password.
"""
oldPassword: String
): PasswordChange @doc(category: "Users")
"""
Request email change of the logged in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account email change.
- ACCOUNT_CHANGE_EMAIL_REQUESTED (async): An account email change was requested.
"""
requestEmailChange(
"""
Slug of a channel which will be used to notify users. Optional when only one channel exists.
"""
channel: String
"""
New user email.
"""
newEmail: String!
"""
User password.
"""
password: String!
"""
URL of a view where users should be redirected to update the email address. URL in RFC 1808 format.
"""
redirectUrl: String!
): RequestEmailChange
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_CHANGE_EMAIL_REQUESTED]
syncEvents: []
)
"""
Confirm the email change of the logged-in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- NOTIFY_USER (async): A notification that account email change was confirmed.
- ACCOUNT_EMAIL_CHANGED (async): An account email was changed.
"""
confirmEmailChange(
"""
Slug of a channel which will be used to notify users. Optional when only one channel exists.
"""
channel: String
"""
A one-time token required to change the email.
"""
token: String!
): ConfirmEmailChange
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, NOTIFY_USER, ACCOUNT_EMAIL_CHANGED]
syncEvents: []
)
"""
Create a new address for the customer.
Requires one of following set of permissions: AUTHENTICATED_USER or AUTHENTICATED_APP + IMPERSONATE_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- ADDRESS_CREATED (async): An address was created.
"""
accountAddressCreate(
"""
ID of customer the application is impersonating. The field can be used and is required by apps only. Requires IMPERSONATE_USER and AUTHENTICATED_APP permission.
Added in Saleor 3.19.
"""
customerId: ID
"""
Fields required to create address.
"""
input: AddressInput!
"""
A type of address. If provided, the new address will be automatically assigned as the customer's default address of that type.
"""
type: AddressTypeEnum
): AccountAddressCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, ADDRESS_CREATED]
syncEvents: []
)
"""
Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER.
Triggers the following webhook events:
- ADDRESS_UPDATED (async): An address was updated.
"""
accountAddressUpdate(
"""
ID of the address to update.
"""
id: ID!
"""
Fields required to update the address.
"""
input: AddressInput!
): AccountAddressUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_UPDATED], syncEvents: [])
"""
Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER.
Triggers the following webhook events:
- ADDRESS_DELETED (async): An address was deleted.
"""
accountAddressDelete(
"""
ID of the address to delete.
"""
id: ID!
): AccountAddressDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_DELETED], syncEvents: [])
"""
Sets a default address for the authenticated user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer's address was updated.
"""
accountSetDefaultAddress(
"""
ID of the address to set as default.
"""
id: ID!
"""
The type of address.
"""
type: AddressTypeEnum!
): AccountSetDefaultAddress
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_UPDATED], syncEvents: [])
"""
Register a new user.
Triggers the following webhook events:
- CUSTOMER_CREATED (async): A new customer account was created.
- NOTIFY_USER (async): A notification for account confirmation.
- ACCOUNT_CONFIRMATION_REQUESTED (async): An user confirmation was requested. This event is always sent regardless of settings.
"""
accountRegister(
"""
Fields required to create a user.
"""
input: AccountRegisterInput!
): AccountRegister
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [
CUSTOMER_CREATED
NOTIFY_USER
ACCOUNT_CONFIRMATION_REQUESTED
]
syncEvents: []
)
"""
Updates the account of the logged-in user.
Requires one of following set of permissions: AUTHENTICATED_USER or AUTHENTICATED_APP + IMPERSONATE_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
accountUpdate(
"""
ID of customer the application is impersonating. The field can be used and is required by apps only. Requires IMPERSONATE_USER and AUTHENTICATED_APP permission.
Added in Saleor 3.19.
"""
customerId: ID
"""
Fields required to update the account of the logged-in user.
"""
input: AccountInput!
): AccountUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
)
"""
Sends an email with the account removal link for the logged-in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account delete request.
- ACCOUNT_DELETE_REQUESTED (async): An account delete requested.
"""
accountRequestDeletion(
"""
Slug of a channel which will be used to notify users. Optional when only one channel exists.
"""
channel: String
"""
URL of a view where users should be redirected to delete their account. URL in RFC 1808 format.
"""
redirectUrl: String!
): AccountRequestDeletion
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_DELETE_REQUESTED]
syncEvents: []
)
"""
Remove user account.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- ACCOUNT_DELETED (async): Account was deleted.
"""
accountDelete(
"""
A one-time token required to remove account. Sent by email using AccountRequestDeletion mutation.
"""
token: String!
): AccountDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ACCOUNT_DELETED], syncEvents: [])
"""
Creates user address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_CREATED (async): A new address was created.
"""
addressCreate(
"""
Fields required to create address.
"""
input: AddressInput!
"""
ID of a user to create address for.
"""
userId: ID!
): AddressCreate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_CREATED], syncEvents: [])
"""
Updates an address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_UPDATED (async): An address was updated.
"""
addressUpdate(
"""
ID of the address to update.
"""
id: ID!
"""
Fields required to update the address.
"""
input: AddressInput!
): AddressUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_UPDATED], syncEvents: [])
"""
Deletes an address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_DELETED (async): An address was deleted.
"""
addressDelete(
"""
ID of the address to delete.
"""
id: ID!
): AddressDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_DELETED], syncEvents: [])
"""
Sets a default address for the given user.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer was updated.
"""
addressSetDefault(
"""
ID of the address.
"""
addressId: ID!
"""
The type of address.
"""
type: AddressTypeEnum!
"""
ID of the user to change the address for.
"""
userId: ID!
): AddressSetDefault
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_UPDATED], syncEvents: [])
"""
Creates a new customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_CREATED (async): A new customer account was created.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
- NOTIFY_USER (async): A notification for setting the password.
- ACCOUNT_SET_PASSWORD_REQUESTED (async): Setting a new password for the account is requested.
"""
customerCreate(
"""
Fields required to create a customer.
"""
input: UserCreateInput!
): CustomerCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [
CUSTOMER_CREATED
CUSTOMER_METADATA_UPDATED
NOTIFY_USER
ACCOUNT_SET_PASSWORD_REQUESTED
]
syncEvents: []
)
"""
Updates an existing customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A new customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
customerUpdate(
"""
External ID of a customer to update.
"""
externalReference: String
"""
ID of a customer to update.
"""
id: ID
"""
Fields required to update a customer.
"""
input: CustomerInput!
): CustomerUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
)
"""
Deletes a customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_DELETED (async): A customer account was deleted.
"""
customerDelete(
"""
External ID of a customer to update.
"""
externalReference: String
"""
ID of a customer to delete.
"""
id: ID
): CustomerDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_DELETED], syncEvents: [])
"""
Deletes customers.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_DELETED (async): A customer account was deleted.
"""
customerBulkDelete(
"""
List of user IDs to delete.
"""
ids: [ID!]!
): CustomerBulkDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_DELETED], syncEvents: [])
"""
Updates customers.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
customerBulkUpdate(
"""
Input list of customers to update.
"""
customers: [CustomerBulkUpdateInput!]!
"""
Policies of error handling. DEFAULT: REJECT_EVERYTHING
"""
errorPolicy: ErrorPolicyEnum
): CustomerBulkUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
)
"""
Creates a new staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_CREATED (async): A new staff account was created.
- NOTIFY_USER (async): A notification for setting the password.
- STAFF_SET_PASSWORD_REQUESTED (async): Setting a new password for the staff account is requested.
"""
staffCreate(
"""
Fields required to create a staff user.
"""
input: StaffCreateInput!
): StaffCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [STAFF_CREATED, NOTIFY_USER, STAFF_SET_PASSWORD_REQUESTED]
syncEvents: []
)
"""
Updates an existing staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_UPDATED (async): A staff account was updated.
"""
staffUpdate(
"""
ID of a staff user to update.
"""
id: ID!
"""
Fields required to update a staff user.
"""
input: StaffUpdateInput!
): StaffUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_UPDATED], syncEvents: [])
"""
Deletes a staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_DELETED (async): A staff account was deleted.
"""
staffDelete(
"""
ID of a staff user to delete.
"""
id: ID!
): StaffDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_DELETED], syncEvents: [])
"""
Deletes staff users. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_DELETED (async): A staff account was deleted.
"""
staffBulkDelete(
"""
List of user IDs to delete.
"""
ids: [ID!]!
): StaffBulkDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_DELETED], syncEvents: [])
"""
Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
userAvatarUpdate(
"""
Represents an image file in a multipart request.
"""
image: Upload!
): UserAvatarUpdate @doc(category: "Users")
"""
Deletes a user avatar. Only for staff members.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
userAvatarDelete: UserAvatarDelete @doc(category: "Users")
"""
Activate or deactivate users.
Requires one of the following permissions: MANAGE_USERS.
"""
userBulkSetActive(
"""
List of user IDs to activate/deactivate.
"""
ids: [ID!]!
"""
Determine if users will be set active or not.
"""
isActive: Boolean!
): UserBulkSetActive @doc(category: "Users")
"""
Create new permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_CREATED (async)
"""
permissionGroupCreate(
"""
Input fields to create permission group.
"""
input: PermissionGroupCreateInput!
): PermissionGroupCreate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_CREATED], syncEvents: [])
"""
Update permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_UPDATED (async)
"""
permissionGroupUpdate(
"""
ID of the group to update.
"""
id: ID!
"""
Input fields to create permission group.
"""
input: PermissionGroupUpdateInput!
): PermissionGroupUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_UPDATED], syncEvents: [])
"""
Delete permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_DELETED (async)
"""
permissionGroupDelete(
"""
ID of the group to delete.
"""
id: ID!
): PermissionGroupDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_DELETED], syncEvents: [])
}
"""
Creates a new webhook subscription.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
type WebhookCreate @doc(category: "Webhooks") {
webhookErrors: [WebhookError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WebhookError!]!
webhook: Webhook
}
type WebhookError @doc(category: "Webhooks") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: WebhookErrorCode!
}
enum WebhookErrorCode @doc(category: "Webhooks") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
DELETE_FAILED
SYNTAX
MISSING_SUBSCRIPTION
UNABLE_TO_PARSE
MISSING_EVENT
INVALID_CUSTOM_HEADERS
INVALID_NOTIFY_WITH_SUBSCRIPTION
}
input WebhookCreateInput @doc(category: "Webhooks") {
"""
The name of the webhook.
"""
name: String
"""
The url to receive the payload.
"""
targetUrl: String
"""
The events that webhook wants to subscribe.
"""
events: [WebhookEventTypeEnum!]
@deprecated(reason: "Use `asyncEvents` or `syncEvents` instead.")
"""
The asynchronous events that webhook wants to subscribe.
"""
asyncEvents: [WebhookEventTypeAsyncEnum!]
"""
The synchronous events that webhook wants to subscribe.
"""
syncEvents: [WebhookEventTypeSyncEnum!]
"""
ID of the app to which webhook belongs.
"""
app: ID
"""
Determine if webhook will be set active or not.
"""
isActive: Boolean
"""
The secret key used to create a hash signature with each payload.
"""
secretKey: String
@deprecated(
reason: "As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS."
)
"""
Subscription query used to define a webhook payload.
"""
query: String
"""
Custom headers, which will be added to HTTP request. There is a limitation of 5 headers per webhook and 998 characters per header.Only `X-*`, `Authorization*`, and `BrokerProperties` keys are allowed.
"""
customHeaders: JSONString
}
"""
Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
type WebhookDelete @doc(category: "Webhooks") {
webhookErrors: [WebhookError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WebhookError!]!
webhook: Webhook
}
"""
Updates a webhook subscription.
Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP.
"""
type WebhookUpdate @doc(category: "Webhooks") {
webhookErrors: [WebhookError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WebhookError!]!
webhook: Webhook
}
input WebhookUpdateInput @doc(category: "Webhooks") {
"""
The new name of the webhook.
"""
name: String
"""
The url to receive the payload.
"""
targetUrl: String
"""
The events that webhook wants to subscribe.
"""
events: [WebhookEventTypeEnum!]
@deprecated(reason: "Use `asyncEvents` or `syncEvents` instead.")
"""
The asynchronous events that webhook wants to subscribe.
"""
asyncEvents: [WebhookEventTypeAsyncEnum!]
"""
The synchronous events that webhook wants to subscribe.
"""
syncEvents: [WebhookEventTypeSyncEnum!]
"""
ID of the app to which webhook belongs.
"""
app: ID
"""
Determine if webhook will be set active or not.
"""
isActive: Boolean
"""
Use to create a hash signature with each payload.
"""
secretKey: String
@deprecated(
reason: "As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS."
)
"""
Subscription query used to define a webhook payload.
"""
query: String
"""
Custom headers, which will be added to HTTP request. There is a limitation of 5 headers per webhook and 998 characters per header.Only `X-*`, `Authorization*`, and `BrokerProperties` keys are allowed.
"""
customHeaders: JSONString
}
"""
Retries event delivery.
Requires one of the following permissions: MANAGE_APPS.
"""
type EventDeliveryRetry @doc(category: "Webhooks") {
"""
Event delivery.
"""
delivery: EventDelivery
errors: [WebhookError!]!
}
"""
Performs a dry run of a webhook event. Supports a single event (the first, if multiple provided in the `query`). Requires permission relevant to processed event.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
type WebhookDryRun @doc(category: "Webhooks") {
"""
JSON payload, that would be sent out to webhook's target URL.
"""
payload: JSONString
errors: [WebhookDryRunError!]!
}
type WebhookDryRunError @doc(category: "Webhooks") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: WebhookDryRunErrorCode!
}
enum WebhookDryRunErrorCode @doc(category: "Webhooks") {
GRAPHQL_ERROR
NOT_FOUND
INVALID_ID
MISSING_PERMISSION
TYPE_NOT_SUPPORTED
SYNTAX
MISSING_SUBSCRIPTION
UNABLE_TO_PARSE
MISSING_EVENT
}
"""
Trigger a webhook event. Supports a single event (the first, if multiple provided in the `webhook.subscription_query`). Requires permission relevant to processed event. Successfully delivered webhook returns `delivery` with status='PENDING' and empty payload.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
type WebhookTrigger @doc(category: "Webhooks") {
delivery: EventDelivery
errors: [WebhookTriggerError!]!
}
type WebhookTriggerError @doc(category: "Webhooks") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: WebhookTriggerErrorCode!
}
enum WebhookTriggerErrorCode @doc(category: "Webhooks") {
GRAPHQL_ERROR
NOT_FOUND
INVALID_ID
MISSING_PERMISSION
TYPE_NOT_SUPPORTED
SYNTAX
MISSING_SUBSCRIPTION
UNABLE_TO_PARSE
MISSING_QUERY
MISSING_EVENT
}
"""
Creates new warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type WarehouseCreate @doc(category: "Products") {
warehouseErrors: [WarehouseError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WarehouseError!]!
warehouse: Warehouse
}
type WarehouseError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: WarehouseErrorCode!
"""
List of shipping zones IDs which causes the error.
"""
shippingZones: [ID!]
}
enum WarehouseErrorCode @doc(category: "Products") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
}
input WarehouseCreateInput @doc(category: "Products") {
"""
Warehouse slug.
"""
slug: String
"""
The email address of the warehouse.
"""
email: String
"""
External ID of the warehouse.
"""
externalReference: String
"""
Warehouse name.
"""
name: String!
"""
Address of the warehouse.
"""
address: AddressInput!
"""
Shipping zones supported by the warehouse.
"""
shippingZones: [ID!]
@deprecated(reason: "Providing the zone ids will raise a ValidationError.")
}
"""
Updates given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type WarehouseUpdate @doc(category: "Products") {
warehouseErrors: [WarehouseError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WarehouseError!]!
warehouse: Warehouse
}
input WarehouseUpdateInput @doc(category: "Products") {
"""
Warehouse slug.
"""
slug: String
"""
The email address of the warehouse.
"""
email: String
"""
External ID of the warehouse.
"""
externalReference: String
"""
Warehouse name.
"""
name: String
"""
Address of the warehouse.
"""
address: AddressInput
"""
Click and collect options: local, all or disabled.
"""
clickAndCollectOption: WarehouseClickAndCollectOptionEnum
"""
Visibility of warehouse stocks.
"""
isPrivate: Boolean
}
"""
Deletes selected warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type WarehouseDelete @doc(category: "Products") {
warehouseErrors: [WarehouseError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WarehouseError!]!
warehouse: Warehouse
}
"""
Add shipping zone to given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type WarehouseShippingZoneAssign @doc(category: "Products") {
warehouseErrors: [WarehouseError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WarehouseError!]!
warehouse: Warehouse
}
"""
Remove shipping zone from given warehouse.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type WarehouseShippingZoneUnassign @doc(category: "Products") {
warehouseErrors: [WarehouseError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [WarehouseError!]!
warehouse: Warehouse
}
"""
Create a tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxClassCreate @doc(category: "Taxes") {
errors: [TaxClassCreateError!]!
taxClass: TaxClass
}
type TaxClassCreateError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxClassCreateErrorCode!
"""
List of country codes for which the configuration is invalid.
"""
countryCodes: [String!]!
}
enum TaxClassCreateErrorCode @doc(category: "Taxes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
input TaxClassCreateInput @doc(category: "Taxes") {
"""
Name of the tax class.
"""
name: String!
"""
List of country-specific tax rates to create for this tax class.
"""
createCountryRates: [CountryRateInput!]
}
input CountryRateInput @doc(category: "Taxes") {
"""
Country in which this rate applies.
"""
countryCode: CountryCode!
"""
Tax rate value provided as percentage. Example: provide `23` to represent `23%` tax rate.
"""
rate: Float!
}
"""
Delete a tax class. After deleting the tax class any products, product types or shipping methods using it are updated to use the default tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxClassDelete @doc(category: "Taxes") {
errors: [TaxClassDeleteError!]!
taxClass: TaxClass
}
type TaxClassDeleteError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxClassDeleteErrorCode!
}
enum TaxClassDeleteErrorCode @doc(category: "Taxes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
"""
Update a tax class.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxClassUpdate @doc(category: "Taxes") {
errors: [TaxClassUpdateError!]!
taxClass: TaxClass
}
type TaxClassUpdateError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxClassUpdateErrorCode!
"""
List of country codes for which the configuration is invalid.
"""
countryCodes: [String!]!
}
enum TaxClassUpdateErrorCode @doc(category: "Taxes") {
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
input TaxClassUpdateInput @doc(category: "Taxes") {
"""
Name of the tax class.
"""
name: String
"""
List of country-specific tax rates to create or update for this tax class.
"""
updateCountryRates: [CountryRateUpdateInput!]
"""
List of country codes for which to remove the tax class rates. Note: It removes all rates for given country code.
"""
removeCountryRates: [CountryCode!]
}
input CountryRateUpdateInput @doc(category: "Taxes") {
"""
Country in which this rate applies.
"""
countryCode: CountryCode!
"""
Tax rate value provided as percentage. Example: provide `23` to represent `23%` tax rate. Provide `null` to remove the particular rate.
"""
rate: Float
}
"""
Update tax configuration for a channel.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxConfigurationUpdate @doc(category: "Taxes") {
errors: [TaxConfigurationUpdateError!]!
taxConfiguration: TaxConfiguration
}
type TaxConfigurationUpdateError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxConfigurationUpdateErrorCode!
"""
List of country codes for which the configuration is invalid.
"""
countryCodes: [String!]!
}
enum TaxConfigurationUpdateErrorCode @doc(category: "Taxes") {
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
input TaxConfigurationUpdateInput @doc(category: "Taxes") {
"""
Determines whether taxes are charged in the given channel.
"""
chargeTaxes: Boolean
"""
The default strategy to use for tax calculation in the given channel. Taxes can be calculated either using user-defined flat rates or with a tax app. Empty value means that no method is selected and taxes are not calculated.
"""
taxCalculationStrategy: TaxCalculationStrategy
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean
"""
Determines whether prices are entered with the tax included.
"""
pricesEnteredWithTax: Boolean
"""
List of tax country configurations to create or update (identified by a country code).
"""
updateCountriesConfiguration: [TaxConfigurationPerCountryInput!]
"""
List of country codes for which to remove the tax configuration.
"""
removeCountriesConfiguration: [CountryCode!]
"""
Determines whether to use weighted tax for shipping. When set to true, the tax rate for shipping will be calculated based on the weighted average of tax rates from the order or checkout lines. Default value is `False`.Can be used only with `taxCalculationStrategy` set to `FLAT_RATES`.
Added in Saleor 3.21.
"""
useWeightedTaxForShipping: Boolean
"""
The tax app `App.identifier` that will be used to calculate the taxes for the given channel. Empty value for `TAX_APP` set as `taxCalculationStrategy` means that Saleor will iterate over all installed tax apps. If multiple tax apps exist with provided tax app id use the `App` with newest `created` date. It's possible to set plugin by using prefix `plugin:` with `PLUGIN_ID` e.g. with Avalara `plugin:mirumee.taxes.avalara`.Will become mandatory in 4.0 for `TAX_APP` `taxCalculationStrategy`.
Added in Saleor 3.19.
"""
taxAppId: String
}
input TaxConfigurationPerCountryInput @doc(category: "Taxes") {
"""
Country in which this configuration applies.
"""
countryCode: CountryCode!
"""
Determines whether taxes are charged in this country.
"""
chargeTaxes: Boolean!
"""
A country-specific strategy to use for tax calculation. Taxes can be calculated either using user-defined flat rates or with a tax app. If not provided, use the value from the channel's tax configuration.
"""
taxCalculationStrategy: TaxCalculationStrategy
"""
Determines whether displayed prices should include taxes for this country.
"""
displayGrossPrices: Boolean!
"""
The tax app `App.identifier` that will be used to calculate the taxes for the given channel and country. If not provided, use the value from the channel's tax configuration.
Added in Saleor 3.19.
"""
taxAppId: String
"""
Determines whether to use weighted tax for shipping. When set to true, the tax rate for shipping will be calculated based on the weighted average of tax rates from the order or checkout lines. Default value is `False`.Can be used only with `taxCalculationStrategy` set to `FLAT_RATES`.
Added in Saleor 3.21.
"""
useWeightedTaxForShipping: Boolean
}
"""
Update tax class rates for a specific country.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxCountryConfigurationUpdate @doc(category: "Taxes") {
"""
Updated tax class rates grouped by a country.
"""
taxCountryConfiguration: TaxCountryConfiguration
errors: [TaxCountryConfigurationUpdateError!]!
}
type TaxCountryConfigurationUpdateError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxCountryConfigurationUpdateErrorCode!
"""
List of tax class IDs for which the update failed.
"""
taxClassIds: [String!]!
}
enum TaxCountryConfigurationUpdateErrorCode @doc(category: "Taxes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
ONLY_ONE_DEFAULT_COUNTRY_RATE_ALLOWED
CANNOT_CREATE_NEGATIVE_RATE
}
input TaxClassRateInput @doc(category: "Taxes") {
"""
ID of a tax class for which to update the tax rate
"""
taxClassId: ID
"""
Tax rate value.
"""
rate: Float
}
"""
Remove all tax class rates for a specific country.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxCountryConfigurationDelete @doc(category: "Taxes") {
"""
Updated tax class rates grouped by a country.
"""
taxCountryConfiguration: TaxCountryConfiguration
errors: [TaxCountryConfigurationDeleteError!]!
}
type TaxCountryConfigurationDeleteError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxCountryConfigurationDeleteErrorCode!
}
enum TaxCountryConfigurationDeleteErrorCode @doc(category: "Taxes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
"""
Exempt checkout or order from charging the taxes. When tax exemption is enabled, taxes won't be charged for the checkout or order. Taxes may still be calculated in cases when product prices are entered with the tax included and the net price needs to be known.
Requires one of the following permissions: MANAGE_TAXES.
"""
type TaxExemptionManage @doc(category: "Taxes") {
taxableObject: TaxSourceObject
errors: [TaxExemptionManageError!]!
}
union TaxSourceObject = Checkout | Order
type TaxExemptionManageError @doc(category: "Taxes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TaxExemptionManageErrorCode!
}
enum TaxExemptionManageErrorCode @doc(category: "Taxes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
NOT_EDITABLE_ORDER
}
"""
Updates stocks for a given variant and warehouse. Variant and warehouse selectors have to be the same for all stock inputs. Is not allowed to use 'variantId' in one input and 'variantExternalReference' in another.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- PRODUCT_VARIANT_STOCK_UPDATED (async): A product variant stock details were updated.
"""
type StockBulkUpdate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [PRODUCT_VARIANT_STOCK_UPDATED]
syncEvents: []
) {
"""
Returns how many objects were updated.
"""
count: Int!
"""
List of the updated stocks.
"""
results: [StockBulkResult!]!
errors: [StockBulkUpdateError!]!
}
type StockBulkResult @doc(category: "Products") {
"""
Stock data.
"""
stock: Stock
"""
List of errors occurred on create or update attempt.
"""
errors: [StockBulkUpdateError!]
}
type StockBulkUpdateError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: StockBulkUpdateErrorCode!
}
enum StockBulkUpdateErrorCode @doc(category: "Products") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
enum ErrorPolicyEnum {
"""
Save what is possible within a single row. If there are errors in an input data row, try to save it partially and skip the invalid part.
"""
IGNORE_FAILED
"""
Reject all rows if there is at least one error in any of them.
"""
REJECT_EVERYTHING
"""
Reject rows with errors.
"""
REJECT_FAILED_ROWS
}
input StockBulkUpdateInput @doc(category: "Products") {
"""
Variant ID.
"""
variantId: ID
"""
Variant external reference.
"""
variantExternalReference: String
"""
Warehouse ID.
"""
warehouseId: ID
"""
Warehouse external reference.
"""
warehouseExternalReference: String
"""
Quantity of items available for sell.
"""
quantity: Int!
}
"""
Creates a new staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type StaffNotificationRecipientCreate @doc(category: "Users") {
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
staffNotificationRecipient: StaffNotificationRecipient
}
type ShopError @doc(category: "Shop") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ShopErrorCode!
}
enum ShopErrorCode {
ALREADY_EXISTS
CANNOT_FETCH_TAX_RATES
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
}
input StaffNotificationRecipientInput {
"""
The ID of the user subscribed to email notifications..
"""
user: ID
"""
Email address of a user subscribed to email notifications.
"""
email: String
"""
Determines if a notification active.
"""
active: Boolean
}
"""
Updates a staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type StaffNotificationRecipientUpdate @doc(category: "Users") {
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
staffNotificationRecipient: StaffNotificationRecipient
}
"""
Delete staff notification recipient.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type StaffNotificationRecipientDelete @doc(category: "Users") {
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
staffNotificationRecipient: StaffNotificationRecipient
}
"""
Updates site domain of the shop.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type ShopDomainUpdate @doc(category: "Shop") {
"""
Updated shop.
"""
shop: Shop
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
}
input SiteDomainInput {
"""
Domain name for shop.
"""
domain: String
"""
Shop site name.
"""
name: String
}
"""
Updates shop settings.
Requires one of the following permissions: MANAGE_SETTINGS.
Triggers the following webhook events:
- SHOP_METADATA_UPDATED (async): Optionally triggered when public or private metadata is updated.
"""
type ShopSettingsUpdate
@doc(category: "Shop")
@webhookEventsInfo(asyncEvents: [SHOP_METADATA_UPDATED], syncEvents: []) {
"""
Updated shop.
"""
shop: Shop
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
}
input ShopSettingsInput {
"""
Header text.
"""
headerText: String
"""
SEO description.
"""
description: String
"""
This field is used as a default value for `ProductVariant.trackInventory`.
"""
trackInventoryByDefault: Boolean
"""
Default weight unit.
"""
defaultWeightUnit: WeightUnitsEnum
"""
Enable automatic fulfillment for all digital products.
"""
automaticFulfillmentDigitalProducts: Boolean
"""
Enable automatic approval of all new fulfillments.
"""
fulfillmentAutoApprove: Boolean
"""
Enable ability to approve fulfillments which are unpaid.
"""
fulfillmentAllowUnpaid: Boolean
"""
Default number of max downloads per digital content URL.
"""
defaultDigitalMaxDownloads: Int
"""
Default number of days which digital content URL will be valid.
"""
defaultDigitalUrlValidDays: Int
"""
Default email sender's name.
"""
defaultMailSenderName: String
"""
Default email sender's address.
"""
defaultMailSenderAddress: String
"""
URL of a view where customers can set their password.
"""
customerSetPasswordUrl: String
"""
Default number of minutes stock will be reserved for anonymous checkout. Enter 0 or null to disable.
"""
reserveStockDurationAnonymousUser: Int
"""
Default number of minutes stock will be reserved for authenticated checkout. Enter 0 or null to disable.
"""
reserveStockDurationAuthenticatedUser: Int
"""
Default number of maximum line quantity in single checkout. Minimum possible value is 1, default value is 50.
"""
limitQuantityPerCheckout: Int
"""
Enable automatic account confirmation by email.
"""
enableAccountConfirmationByEmail: Boolean
"""
Enable possibility to login without account confirmation.
"""
allowLoginWithoutConfirmation: Boolean
"""
Shop public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Shop private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Include taxes in prices.
"""
includeTaxesInPrices: Boolean
@deprecated(
reason: "Use `taxConfigurationUpdate` mutation to configure this setting per channel or country."
)
"""
Display prices with tax in store.
"""
displayGrossPrices: Boolean
@deprecated(
reason: "Use `taxConfigurationUpdate` mutation to configure this setting per channel or country."
)
"""
Charge taxes on shipping.
"""
chargeTaxesOnShipping: Boolean
@deprecated(
reason: "To enable taxes for a shipping method, assign a tax class to the shipping method with `shippingPriceCreate` or `shippingPriceUpdate` mutations."
)
}
"""
Fetch tax rates.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type ShopFetchTaxRates @doc(category: "Shop") {
"""
Updated shop.
"""
shop: Shop
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
}
"""
Creates/updates translations for shop settings.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type ShopSettingsTranslate @doc(category: "Shop") {
"""
Updated shop settings.
"""
shop: Shop
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
}
type TranslationError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TranslationErrorCode!
}
enum TranslationErrorCode {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
}
input ShopSettingsTranslationInput {
headerText: String
description: String
}
"""
Update the shop's address. If the `null` value is passed, the currently selected address will be deleted.
Requires one of the following permissions: MANAGE_SETTINGS.
"""
type ShopAddressUpdate @doc(category: "Shop") {
"""
Updated shop.
"""
shop: Shop
shopErrors: [ShopError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [ShopError!]!
}
"""
Update shop order settings across all channels. Returns `orderSettings` for the first `channel` in alphabetical order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderSettingsUpdate @doc(category: "Orders") {
"""
Order settings.
"""
orderSettings: OrderSettings
orderSettingsErrors: [OrderSettingsError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [OrderSettingsError!]!
}
type OrderSettingsError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderSettingsErrorCode!
}
enum OrderSettingsErrorCode @doc(category: "Orders") {
INVALID
}
input OrderSettingsUpdateInput @doc(category: "Orders") {
"""
When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately. By default set to True
"""
automaticallyConfirmAllNewOrders: Boolean
"""
When enabled, all non-shippable gift card orders will be fulfilled automatically. By default set to True.
"""
automaticallyFulfillNonShippableGiftCard: Boolean
}
"""
Update gift card settings.
Requires one of the following permissions: MANAGE_GIFT_CARD.
"""
type GiftCardSettingsUpdate @doc(category: "Gift cards") {
"""
Gift card settings.
"""
giftCardSettings: GiftCardSettings
errors: [GiftCardSettingsError!]!
}
type GiftCardSettingsError @doc(category: "Gift cards") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: GiftCardSettingsErrorCode!
}
enum GiftCardSettingsErrorCode @doc(category: "Gift cards") {
INVALID
REQUIRED
GRAPHQL_ERROR
}
input GiftCardSettingsUpdateInput @doc(category: "Gift cards") {
"""
Defines gift card default expiry settings.
"""
expiryType: GiftCardSettingsExpiryTypeEnum
"""
Defines gift card expiry period.
"""
expiryPeriod: TimePeriodInputType
}
input TimePeriodInputType {
"""
The length of the period.
"""
amount: Int!
"""
The type of the period.
"""
type: TimePeriodTypeEnum!
}
"""
Manage shipping method's availability in channels.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingMethodChannelListingUpdate @doc(category: "Shipping") {
"""
An updated shipping method instance.
"""
shippingMethod: ShippingMethodType
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
type ShippingError @doc(category: "Shipping") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ShippingErrorCode!
"""
List of warehouse IDs which causes the error.
"""
warehouses: [ID!]
"""
List of channels IDs which causes the error.
"""
channels: [ID!]
}
enum ShippingErrorCode @doc(category: "Shipping") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
MAX_LESS_THAN_MIN
NOT_FOUND
REQUIRED
UNIQUE
DUPLICATED_INPUT_ITEM
}
input ShippingMethodChannelListingInput @doc(category: "Shipping") {
"""
List of channels to which the shipping method should be assigned.
"""
addChannels: [ShippingMethodChannelListingAddInput!]
"""
List of channels from which the shipping method should be unassigned.
"""
removeChannels: [ID!]
}
input ShippingMethodChannelListingAddInput @doc(category: "Shipping") {
"""
ID of a channel.
"""
channelId: ID!
"""
Shipping price of the shipping method in this channel.
"""
price: PositiveDecimal
"""
Minimum order price to use this shipping method.
"""
minimumOrderPrice: PositiveDecimal
"""
Maximum order price to use this shipping method.
"""
maximumOrderPrice: PositiveDecimal
}
"""
Creates a new shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceCreate @doc(category: "Shipping") {
"""
A shipping zone to which the shipping method belongs.
"""
shippingZone: ShippingZone
shippingMethod: ShippingMethodType
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
input ShippingPriceInput @doc(category: "Shipping") {
"""
Name of the shipping method.
"""
name: String
"""
Shipping method description.
"""
description: JSONString
"""
Minimum order weight to use this shipping method.
"""
minimumOrderWeight: WeightScalar
"""
Maximum order weight to use this shipping method.
"""
maximumOrderWeight: WeightScalar
"""
Maximum number of days for delivery.
"""
maximumDeliveryDays: Int
"""
Minimal number of days for delivery.
"""
minimumDeliveryDays: Int
"""
Shipping type: price or weight based.
"""
type: ShippingMethodTypeEnum
"""
Shipping zone this method belongs to.
"""
shippingZone: ID
"""
Postal code rules to add.
"""
addPostalCodeRules: [ShippingPostalCodeRulesCreateInputRange!]
"""
Postal code rules to delete.
"""
deletePostalCodeRules: [ID!]
"""
Inclusion type for currently assigned postal code rules.
"""
inclusionType: PostalCodeRuleInclusionTypeEnum
"""
ID of a tax class to assign to this shipping method. If not provided, the default tax class will be used.
"""
taxClass: ID
}
scalar WeightScalar
input ShippingPostalCodeRulesCreateInputRange @doc(category: "Shipping") {
"""
Start range of the postal code.
"""
start: String!
"""
End range of the postal code.
"""
end: String
}
"""
Deletes a shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceDelete @doc(category: "Shipping") {
"""
A shipping method to delete.
"""
shippingMethod: ShippingMethodType
"""
A shipping zone to which the shipping method belongs.
"""
shippingZone: ShippingZone
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
"""
Deletes shipping prices.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceBulkDelete @doc(category: "Shipping") {
"""
Returns how many objects were affected.
"""
count: Int!
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
"""
Updates a new shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceUpdate @doc(category: "Shipping") {
"""
A shipping zone to which the shipping method belongs.
"""
shippingZone: ShippingZone
shippingMethod: ShippingMethodType
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
"""
Creates/updates translations for a shipping method.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type ShippingPriceTranslate @doc(category: "Shipping") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
shippingMethod: ShippingMethodType
}
input ShippingPriceTranslationInput {
name: String
"""
Translated shipping method description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
}
"""
Exclude products from shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceExcludeProducts @doc(category: "Shipping") {
"""
A shipping method with new list of excluded products.
"""
shippingMethod: ShippingMethodType
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
input ShippingPriceExcludeProductsInput @doc(category: "Shipping") {
"""
List of products which will be excluded.
"""
products: [ID!]!
}
"""
Remove product from excluded list for shipping price.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingPriceRemoveProductFromExclude @doc(category: "Shipping") {
"""
A shipping method with new list of excluded products.
"""
shippingMethod: ShippingMethodType
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
"""
Creates a new shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingZoneCreate @doc(category: "Shipping") {
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
shippingZone: ShippingZone
}
input ShippingZoneCreateInput @doc(category: "Shipping") {
"""
Shipping zone's name. Visible only to the staff.
"""
name: String
"""
Description of the shipping zone.
"""
description: String
"""
List of countries in this shipping zone.
"""
countries: [String!]
"""
Default shipping zone will be used for countries not covered by other zones.
"""
default: Boolean
"""
List of warehouses to assign to a shipping zone
"""
addWarehouses: [ID!]
"""
List of channels to assign to the shipping zone.
"""
addChannels: [ID!]
}
"""
Deletes a shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingZoneDelete @doc(category: "Shipping") {
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
shippingZone: ShippingZone
}
"""
Deletes shipping zones.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingZoneBulkDelete @doc(category: "Shipping") {
"""
Returns how many objects were affected.
"""
count: Int!
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
}
"""
Updates a new shipping zone.
Requires one of the following permissions: MANAGE_SHIPPING.
"""
type ShippingZoneUpdate @doc(category: "Shipping") {
shippingErrors: [ShippingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ShippingError!]!
shippingZone: ShippingZone
}
input ShippingZoneUpdateInput @doc(category: "Shipping") {
"""
Shipping zone's name. Visible only to the staff.
"""
name: String
"""
Description of the shipping zone.
"""
description: String
"""
List of countries in this shipping zone.
"""
countries: [String!]
"""
Default shipping zone will be used for countries not covered by other zones.
"""
default: Boolean
"""
List of warehouses to assign to a shipping zone
"""
addWarehouses: [ID!]
"""
List of channels to assign to the shipping zone.
"""
addChannels: [ID!]
"""
List of warehouses to unassign from a shipping zone
"""
removeWarehouses: [ID!]
"""
List of channels to unassign from the shipping zone.
"""
removeChannels: [ID!]
}
"""
Assign attributes to a given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductAttributeAssign @doc(category: "Products") {
"""
The updated product type.
"""
productType: ProductType
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
type ProductError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
}
enum ProductErrorCode @doc(category: "Products") {
ALREADY_EXISTS
ATTRIBUTE_ALREADY_ASSIGNED
ATTRIBUTE_CANNOT_BE_ASSIGNED
ATTRIBUTE_VARIANTS_DISABLED
MEDIA_ALREADY_ASSIGNED
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
INVALID_PRICE
PRODUCT_WITHOUT_CATEGORY
NOT_PRODUCTS_IMAGE
NOT_PRODUCTS_VARIANT
NOT_FOUND
REQUIRED
UNIQUE
VARIANT_NO_DIGITAL_CONTENT
CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT
PRODUCT_NOT_ASSIGNED_TO_CHANNEL
UNSUPPORTED_MEDIA_PROVIDER
PREORDER_VARIANT_CANNOT_BE_DEACTIVATED
}
input ProductAttributeAssignInput @doc(category: "Products") {
"""
The ID of the attribute to assign.
"""
id: ID!
"""
The attribute type to be assigned as.
"""
type: ProductAttributeType!
"""
Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric'].
"""
variantSelection: Boolean
}
enum ProductAttributeType @doc(category: "Products") {
PRODUCT
VARIANT
}
"""
Update attributes assigned to product variant for given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductAttributeAssignmentUpdate @doc(category: "Products") {
"""
The updated product type.
"""
productType: ProductType
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input ProductAttributeAssignmentUpdateInput @doc(category: "Products") {
"""
The ID of the attribute to assign.
"""
id: ID!
"""
Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric'].
"""
variantSelection: Boolean!
}
"""
Un-assign attributes from a given product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductAttributeUnassign @doc(category: "Products") {
"""
The updated product type.
"""
productType: ProductType
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Creates a new category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CategoryCreate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
category: Category
}
input CategoryInput @doc(category: "Products") {
"""
Category description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Category name.
"""
name: String
"""
Category slug.
"""
slug: String
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Background image file.
"""
backgroundImage: Upload
"""
Alt text for a product media.
"""
backgroundImageAlt: String
"""
Fields required to update the category metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the category private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
input SeoInput {
"""
SEO title.
"""
title: String
"""
SEO description.
"""
description: String
}
"""
Variables of this type must be set to null in mutations. They will be replaced with a filename from a following multipart part containing a binary file. See: https://github.com/jaydenseric/graphql-multipart-request-spec.
"""
scalar Upload
"""
Deletes a category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CategoryDelete @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
category: Category
}
"""
Deletes categories.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CategoryBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Updates a category.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CategoryUpdate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
category: Category
}
"""
Creates/updates translations for a category.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type CategoryTranslate @doc(category: "Products") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
category: Category
}
input TranslationInput {
slug: String
seoTitle: String
seoDescription: String
name: String
"""
Translated description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
}
"""
Adds products to a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionAddProducts @doc(category: "Products") {
"""
Collection to which products will be added.
"""
collection: Collection
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
}
type CollectionError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
List of products IDs which causes the error.
"""
products: [ID!]
"""
The error code.
"""
code: CollectionErrorCode!
}
enum CollectionErrorCode @doc(category: "Products") {
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT
}
"""
Creates a new collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionCreate @doc(category: "Products") {
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
collection: Collection
}
input CollectionCreateInput @doc(category: "Products") {
"""
Informs whether a collection is published.
"""
isPublished: Boolean
"""
Name of the collection.
"""
name: String
"""
Slug of the collection.
"""
slug: String
"""
Description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Background image file.
"""
backgroundImage: Upload
"""
Alt text for an image.
"""
backgroundImageAlt: String
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Publication date. ISO 8601 standard.
"""
publicationDate: Date @deprecated
"""
Fields required to update the collection metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the collection private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
List of products to be added to the collection.
"""
products: [ID!]
}
"""
Deletes a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionDelete @doc(category: "Products") {
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
collection: Collection
}
"""
Reorder the products of a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionReorderProducts @doc(category: "Products") {
"""
Collection from which products are reordered.
"""
collection: Collection
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
}
input MoveProductInput @doc(category: "Products") {
"""
The ID of the product to move.
"""
productId: ID!
"""
The relative sorting position of the product (from -inf to +inf) starting from the first given product's actual position.1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged.
"""
sortOrder: Int
}
"""
Deletes collections.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
}
"""
Remove products from a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionRemoveProducts @doc(category: "Products") {
"""
Collection from which products will be removed.
"""
collection: Collection
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
}
"""
Updates a collection.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionUpdate @doc(category: "Products") {
collectionErrors: [CollectionError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionError!]!
collection: Collection
}
input CollectionInput @doc(category: "Products") {
"""
Informs whether a collection is published.
"""
isPublished: Boolean
"""
Name of the collection.
"""
name: String
"""
Slug of the collection.
"""
slug: String
"""
Description of the collection.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Background image file.
"""
backgroundImage: Upload
"""
Alt text for an image.
"""
backgroundImageAlt: String
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Publication date. ISO 8601 standard.
"""
publicationDate: Date @deprecated
"""
Fields required to update the collection metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the collection private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
"""
Creates/updates translations for a collection.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type CollectionTranslate @doc(category: "Products") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
collection: Collection
}
"""
Manage collection's availability in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type CollectionChannelListingUpdate @doc(category: "Products") {
"""
An updated collection instance.
"""
collection: Collection
collectionChannelListingErrors: [CollectionChannelListingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CollectionChannelListingError!]!
}
type CollectionChannelListingError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
List of channels IDs which causes the error.
"""
channels: [ID!]
}
input CollectionChannelListingUpdateInput @doc(category: "Products") {
"""
List of channels to which the collection should be assigned.
"""
addChannels: [PublishableChannelListingInput!]
"""
List of channels from which the collection should be unassigned.
"""
removeChannels: [ID!]
}
input PublishableChannelListingInput @doc(category: "Products") {
"""
ID of a channel.
"""
channelId: ID!
"""
Determines if object is visible to customers.
"""
isPublished: Boolean
"""
Publication date. ISO 8601 standard.
"""
publicationDate: Date @deprecated(reason: "Use `publishedAt` field instead.")
"""
Publication date time. ISO 8601 standard.
"""
publishedAt: DateTime
}
"""
Creates a new product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductCreate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
product: Product
}
input ProductCreateInput @doc(category: "Products") {
"""
List of attributes.
"""
attributes: [AttributeValueInput!]
"""
ID of the product's category.
"""
category: ID
"""
Determine if taxes are being charged for the product.
"""
chargeTaxes: Boolean
@deprecated(
reason: "Use `Channel.taxConfiguration` to configure whether tax collection is enabled."
)
"""
List of IDs of collections that the product belongs to.
"""
collections: [ID!]
"""
Product description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Product name.
"""
name: String
"""
Product slug.
"""
slug: String
"""
ID of a tax class to assign to this product. If not provided, product will use the tax class which is assigned to the product type.
"""
taxClass: ID
"""
Tax rate for enabled tax gateway.
"""
taxCode: String
@deprecated(
reason: "Use tax classes to control the tax calculation for a product. If taxCode is provided, Saleor will try to find a tax class with given code (codes are stored in metadata) and assign it. If no tax class is found, it would be created and assigned."
)
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Weight of the Product.
"""
weight: WeightScalar
"""
Defines the product rating value.
"""
rating: Float
"""
Fields required to update the product metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product.
"""
externalReference: String
"""
ID of the type that product belongs to.
"""
productType: ID!
}
input AttributeValueInput @doc(category: "Attributes") {
"""
ID of the selected attribute.
"""
id: ID
"""
External ID of this attribute.
"""
externalReference: String
"""
The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created.
"""
values: [String!] @deprecated
"""
Attribute value ID or external reference.
"""
dropdown: AttributeValueSelectableTypeInput
"""
Attribute value ID or external reference.
"""
swatch: AttributeValueSelectableTypeInput
"""
List of attribute value IDs or external references.
"""
multiselect: [AttributeValueSelectableTypeInput!]
"""
Numeric value of an attribute.
"""
numeric: String
"""
URL of the file attribute. Every time, a new value is created.
"""
file: String
"""
File content type.
"""
contentType: String
"""
List of entity IDs that will be used as references.
"""
references: [ID!]
"""
Text content in JSON format.
"""
richText: JSONString
"""
Plain text content.
"""
plainText: String
"""
Represents the boolean value of the attribute value.
"""
boolean: Boolean
"""
Represents the date value of the attribute value.
"""
date: Date
"""
Represents the date/time value of the attribute value.
"""
dateTime: DateTime
}
"""
Represents attribute value.
1. If ID is provided, then attribute value will be resolved by ID.
2. If externalReference is provided, then attribute value will be resolved by external reference.
3. If value is provided, then attribute value will be resolved by value. If this attribute value doesn't exist, then it will be created.
4. If externalReference and value is provided then new attribute value will be created.
"""
input AttributeValueSelectableTypeInput @doc(category: "Attributes") {
"""
ID of an attribute value.
"""
id: ID
"""
External reference of an attribute value.
"""
externalReference: String
"""
The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created.
"""
value: String
}
"""
Deletes a product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductDelete @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
product: Product
}
"""
Creates products.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductBulkCreate @doc(category: "Products") {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of the created products.
"""
results: [ProductBulkResult!]!
errors: [ProductBulkCreateError!]!
}
type ProductBulkResult @doc(category: "Products") {
"""
Product data.
"""
product: Product
"""
List of errors occurred on create attempt.
"""
errors: [ProductBulkCreateError!]
}
type ProductBulkCreateError @doc(category: "Products") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductBulkCreateErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
List of warehouse IDs which causes the error.
"""
warehouses: [ID!]
"""
List of channel IDs which causes the error.
"""
channels: [ID!]
}
enum ProductBulkCreateErrorCode @doc(category: "Products") {
ATTRIBUTE_ALREADY_ASSIGNED
ATTRIBUTE_CANNOT_BE_ASSIGNED
ATTRIBUTE_VARIANTS_DISABLED
BLANK
MAX_LENGTH
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
INVALID_PRICE
PRODUCT_WITHOUT_CATEGORY
NOT_FOUND
REQUIRED
UNIQUE
PRODUCT_NOT_ASSIGNED_TO_CHANNEL
UNSUPPORTED_MEDIA_PROVIDER
}
input ProductBulkCreateInput @doc(category: "Products") {
"""
List of attributes.
"""
attributes: [AttributeValueInput!]
"""
ID of the product's category.
"""
category: ID
"""
Determine if taxes are being charged for the product.
"""
chargeTaxes: Boolean
@deprecated(
reason: "Use `Channel.taxConfiguration` to configure whether tax collection is enabled."
)
"""
List of IDs of collections that the product belongs to.
"""
collections: [ID!]
"""
Product description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Product name.
"""
name: String
"""
Product slug.
"""
slug: String
"""
ID of a tax class to assign to this product. If not provided, product will use the tax class which is assigned to the product type.
"""
taxClass: ID
"""
Tax rate for enabled tax gateway.
"""
taxCode: String
@deprecated(
reason: "Use tax classes to control the tax calculation for a product. If taxCode is provided, Saleor will try to find a tax class with given code (codes are stored in metadata) and assign it. If no tax class is found, it would be created and assigned."
)
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Weight of the Product.
"""
weight: WeightScalar
"""
Defines the product rating value.
"""
rating: Float
"""
Fields required to update the product metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product.
"""
externalReference: String
"""
ID of the type that product belongs to.
"""
productType: ID!
"""
List of media inputs associated with the product.
"""
media: [MediaInput!]
"""
List of channels in which the product is available.
"""
channelListings: [ProductChannelListingCreateInput!]
"""
Input list of product variants to create.
"""
variants: [ProductVariantBulkCreateInput!]
}
input MediaInput {
"""
Alt text for a product media.
"""
alt: String
"""
Represents an image file in a multipart request.
"""
image: Upload
"""
Represents an URL to an external media.
"""
mediaUrl: String
}
input ProductChannelListingCreateInput @doc(category: "Products") {
"""
ID of a channel.
"""
channelId: ID!
"""
Determines if object is visible to customers.
"""
isPublished: Boolean
"""
Publication date time. ISO 8601 standard.
"""
publishedAt: DateTime
"""
Determines if product is visible in product listings (doesn't apply to product collections).
"""
visibleInListings: Boolean
"""
Determines if product should be available for purchase in this channel. This does not guarantee the availability of stock. When set to `False`, this product is still visible to customers, but it cannot be purchased.
"""
isAvailableForPurchase: Boolean
"""
A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed.
"""
availableForPurchaseAt: DateTime
}
input ProductVariantBulkCreateInput @doc(category: "Products") {
"""
List of attributes specific to this variant.
"""
attributes: [BulkAttributeValueInput!]!
"""
Stock keeping unit.
"""
sku: String
"""
Variant name.
"""
name: String
"""
Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. If the field is not provided, `Shop.trackInventoryByDefault` will be used.
"""
trackInventory: Boolean
"""
Weight of the Product Variant.
"""
weight: WeightScalar
"""
Determines if variant is in preorder.
"""
preorder: PreorderSettingsInput
"""
Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout.
"""
quantityLimitPerCustomer: Int
"""
Fields required to update the product variant metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product variant private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product variant.
"""
externalReference: String
"""
Stocks of a product available for sale.
"""
stocks: [StockInput!]
"""
List of prices assigned to channels.
"""
channelListings: [ProductVariantChannelListingAddInput!]
}
input BulkAttributeValueInput @doc(category: "Products") {
"""
ID of the selected attribute.
"""
id: ID
"""
External ID of this attribute.
"""
externalReference: String
"""
The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created.
"""
values: [String!] @deprecated
"""
Attribute value ID.
"""
dropdown: AttributeValueSelectableTypeInput
"""
Attribute value ID.
"""
swatch: AttributeValueSelectableTypeInput
"""
List of attribute value IDs.
"""
multiselect: [AttributeValueSelectableTypeInput!]
"""
Numeric value of an attribute.
"""
numeric: String
"""
URL of the file attribute. Every time, a new value is created.
"""
file: String
"""
File content type.
"""
contentType: String
"""
List of entity IDs that will be used as references.
"""
references: [ID!]
"""
Text content in JSON format.
"""
richText: JSONString
"""
Plain text content.
"""
plainText: String
"""
The boolean value of an attribute to resolve. If the passed value is non-existent, it will be created.
"""
boolean: Boolean
"""
Represents the date value of the attribute value.
"""
date: Date
"""
Represents the date/time value of the attribute value.
"""
dateTime: DateTime
}
input PreorderSettingsInput @doc(category: "Products") {
"""
The global threshold for preorder variant.
"""
globalThreshold: Int
"""
The end date for preorder.
"""
endDate: DateTime
}
input StockInput @doc(category: "Products") {
"""
Warehouse in which stock is located.
"""
warehouse: ID!
"""
Quantity of items available for sell.
"""
quantity: Int!
}
input ProductVariantChannelListingAddInput @doc(category: "Products") {
"""
ID of a channel.
"""
channelId: ID!
"""
Price of the particular variant in channel.
"""
price: PositiveDecimal!
"""
Cost price of the variant in channel.
"""
costPrice: PositiveDecimal
"""
Previous price of the variant in channel. Useful for providing promotion information required by customer protection laws such as EU Omnibus directive.
Added in Saleor 3.21.
"""
priorPrice: PositiveDecimal
"""
The threshold for preorder variant in channel.
"""
preorderThreshold: Int
}
"""
Deletes products.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Updates an existing product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductUpdate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
product: Product
}
input ProductInput @doc(category: "Products") {
"""
List of attributes.
"""
attributes: [AttributeValueInput!]
"""
ID of the product's category.
"""
category: ID
"""
Determine if taxes are being charged for the product.
"""
chargeTaxes: Boolean
@deprecated(
reason: "Use `Channel.taxConfiguration` to configure whether tax collection is enabled."
)
"""
List of IDs of collections that the product belongs to.
"""
collections: [ID!]
"""
Product description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSONString
"""
Product name.
"""
name: String
"""
Product slug.
"""
slug: String
"""
ID of a tax class to assign to this product. If not provided, product will use the tax class which is assigned to the product type.
"""
taxClass: ID
"""
Tax rate for enabled tax gateway.
"""
taxCode: String
@deprecated(
reason: "Use tax classes to control the tax calculation for a product. If taxCode is provided, Saleor will try to find a tax class with given code (codes are stored in metadata) and assign it. If no tax class is found, it would be created and assigned."
)
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
Weight of the Product.
"""
weight: WeightScalar
"""
Defines the product rating value.
"""
rating: Float
"""
Fields required to update the product metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product.
"""
externalReference: String
}
"""
Creates/updates translations for products.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
Triggers the following webhook events:
- TRANSLATION_CREATED (async): Called when a translation was created.
- TRANSLATION_UPDATED (async): Called when a translation was updated.
"""
type ProductBulkTranslate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [TRANSLATION_CREATED, TRANSLATION_UPDATED]
syncEvents: []
) {
"""
Returns how many translations were created/updated.
"""
count: Int!
"""
List of the translations.
"""
results: [ProductBulkTranslateResult!]!
errors: [ProductBulkTranslateError!]!
}
type ProductBulkTranslateResult @doc(category: "Products") {
"""
Product translation data.
"""
translation: ProductTranslation
"""
List of errors occurred on translation attempt.
"""
errors: [ProductBulkTranslateError!]
}
type ProductBulkTranslateError {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductTranslateErrorCode!
}
enum ProductTranslateErrorCode @doc(category: "Products") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
input ProductBulkTranslateInput @doc(category: "Products") {
"""
Product ID.
"""
id: ID
"""
External reference of an product.
"""
externalReference: String
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
"""
Translation fields.
"""
translationFields: TranslationInput!
}
"""
Creates/updates translations for a product.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type ProductTranslate @doc(category: "Products") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
product: Product
}
"""
Manage product's availability in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductChannelListingUpdate @doc(category: "Products") {
"""
An updated product instance.
"""
product: Product
productChannelListingErrors: [ProductChannelListingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductChannelListingError!]!
}
type ProductChannelListingError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
List of channels IDs which causes the error.
"""
channels: [ID!]
"""
List of variants IDs which causes the error.
"""
variants: [ID!]
}
input ProductChannelListingUpdateInput @doc(category: "Products") {
"""
List of channels to which the product should be assigned or updated.
"""
updateChannels: [ProductChannelListingAddInput!]
"""
List of channels from which the product should be unassigned.
"""
removeChannels: [ID!]
}
input ProductChannelListingAddInput @doc(category: "Products") {
"""
ID of a channel.
"""
channelId: ID!
"""
Determines if object is visible to customers.
"""
isPublished: Boolean
"""
Publication date. ISO 8601 standard.
"""
publicationDate: Date @deprecated(reason: "Use `publishedAt` field instead.")
"""
Publication date time. ISO 8601 standard.
"""
publishedAt: DateTime
"""
Determines if product is visible in product listings (doesn't apply to product collections).
"""
visibleInListings: Boolean
"""
Determines if product should be available for purchase in this channel. This does not guarantee the availability of stock. When set to `False`, this product is still visible to customers, but it cannot be purchased.
"""
isAvailableForPurchase: Boolean
"""
A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed.
"""
availableForPurchaseDate: Date
@deprecated(reason: "Use `availableForPurchaseAt` field instead.")
"""
A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed.
"""
availableForPurchaseAt: DateTime
"""
List of variants to which the channel should be assigned.
"""
addVariants: [ID!]
"""
List of variants from which the channel should be unassigned.
"""
removeVariants: [ID!]
}
"""
Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductMediaCreate @doc(category: "Products") {
product: Product
media: ProductMedia
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input ProductMediaCreateInput @doc(category: "Products") {
"""
Alt text for a product media.
"""
alt: String
"""
Represents an image file in a multipart request.
"""
image: Upload
"""
ID of an product.
"""
product: ID!
"""
Represents an URL to an external media.
"""
mediaUrl: String
}
"""
Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantReorder @doc(category: "Products") {
product: Product
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input ReorderInput {
"""
The ID of the item to move.
"""
id: ID!
"""
The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged.
"""
sortOrder: Int
}
"""
Deletes a product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductMediaDelete @doc(category: "Products") {
product: Product
media: ProductMedia
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Deletes product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductMediaBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Changes ordering of the product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductMediaReorder @doc(category: "Products") {
product: Product
media: [ProductMedia!]
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Updates a product media.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductMediaUpdate @doc(category: "Products") {
product: Product
media: ProductMedia
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input ProductMediaUpdateInput @doc(category: "Products") {
"""
Alt text for a product media.
"""
alt: String
}
"""
Creates a new product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductTypeCreate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productType: ProductType
}
input ProductTypeInput @doc(category: "Products") {
"""
Name of the product type.
"""
name: String
"""
Product type slug.
"""
slug: String
"""
The product type kind.
"""
kind: ProductTypeKindEnum
"""
Determines if product of this type has multiple variants. This option mainly simplifies product management in the dashboard. There is always at least one variant created under the hood.
"""
hasVariants: Boolean
"""
List of attributes shared among all product variants.
"""
productAttributes: [ID!]
"""
List of attributes used to distinguish between different variants of a product.
"""
variantAttributes: [ID!]
"""
Determines if shipping is required for products of this variant.
"""
isShippingRequired: Boolean
"""
Determines if products are digital.
"""
isDigital: Boolean
"""
Weight of the ProductType items.
"""
weight: WeightScalar
"""
Tax rate for enabled tax gateway.
"""
taxCode: String
@deprecated(
reason: "Use tax classes to control the tax calculation for a product type. If taxCode is provided, Saleor will try to find a tax class with given code (codes are stored in metadata) and assign it. If no tax class is found, it would be created and assigned."
)
"""
ID of a tax class to assign to this product type. All products of this product type would use this tax class, unless it's overridden in the `Product` type.
"""
taxClass: ID
}
"""
Deletes a product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductTypeDelete @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productType: ProductType
}
"""
Deletes product types.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductTypeBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Updates an existing product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductTypeUpdate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productType: ProductType
}
"""
Reorder the attributes of a product type.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
"""
type ProductTypeReorderAttributes @doc(category: "Products") {
"""
Product type from which attributes are reordered.
"""
productType: ProductType
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Reorder product attribute values.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductReorderAttributeValues @doc(category: "Products") {
"""
Product from which attribute values are reordered.
"""
product: Product
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type DigitalContentCreate @doc(category: "Products") {
variant: ProductVariant
content: DigitalContent
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input DigitalContentUploadInput @doc(category: "Products") {
"""
Use default digital content settings for this product.
"""
useDefaultSettings: Boolean!
"""
Determines how many times a download link can be accessed by a customer.
"""
maxDownloads: Int
"""
Determines for how many days a download link is active since it was generated.
"""
urlValidDays: Int
"""
Overwrite default automatic_fulfillment setting for variant.
"""
automaticFulfillment: Boolean
"""
Fields required to update the digital content metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the digital content private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Represents an file in a multipart request.
"""
contentFile: Upload!
}
"""
Remove digital content assigned to given variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type DigitalContentDelete @doc(category: "Products") {
variant: ProductVariant
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Update digital content.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type DigitalContentUpdate @doc(category: "Products") {
variant: ProductVariant
content: DigitalContent
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
input DigitalContentInput @doc(category: "Products") {
"""
Use default digital content settings for this product.
"""
useDefaultSettings: Boolean!
"""
Determines how many times a download link can be accessed by a customer.
"""
maxDownloads: Int
"""
Determines for how many days a download link is active since it was generated.
"""
urlValidDays: Int
"""
Overwrite default automatic_fulfillment setting for variant.
"""
automaticFulfillment: Boolean
"""
Fields required to update the digital content metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the digital content private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
"""
Generate new URL to digital content.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type DigitalContentUrlCreate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
digitalContentUrl: DigitalContentUrl
}
input DigitalContentUrlCreateInput @doc(category: "Products") {
"""
Digital content ID which URL will belong to.
"""
content: ID!
}
"""
Creates a new variant for a product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantCreate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productVariant: ProductVariant
}
input ProductVariantCreateInput @doc(category: "Products") {
"""
List of attributes specific to this variant.
"""
attributes: [AttributeValueInput!]!
"""
Stock keeping unit.
"""
sku: String
"""
Variant name.
"""
name: String
"""
Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. If the field is not provided, `Shop.trackInventoryByDefault` will be used.
"""
trackInventory: Boolean
"""
Weight of the Product Variant.
"""
weight: WeightScalar
"""
Determines if variant is in preorder.
"""
preorder: PreorderSettingsInput
"""
Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout.
"""
quantityLimitPerCustomer: Int
"""
Fields required to update the product variant metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product variant private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product variant.
"""
externalReference: String
"""
Product ID of which type is the variant.
"""
product: ID!
"""
Stocks of a product available for sale.
"""
stocks: [StockInput!]
}
"""
Deletes a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantDelete @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productVariant: ProductVariant
}
"""
Creates product variants for a given product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantBulkCreate @doc(category: "Products") {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of the created variants.
"""
productVariants: [ProductVariant!]!
"""
List of the created variants.
"""
results: [ProductVariantBulkResult!]!
bulkProductErrors: [BulkProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [BulkProductError!]!
}
type ProductVariantBulkResult @doc(category: "Products") {
"""
Product variant data.
"""
productVariant: ProductVariant
"""
List of errors occurred on create attempt.
"""
errors: [ProductVariantBulkError!]
}
type ProductVariantBulkError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductVariantBulkErrorCode!
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
List of warehouse IDs which causes the error.
"""
warehouses: [ID!]
"""
List of stocks IDs which causes the error.
"""
stocks: [ID!]
"""
List of channel IDs which causes the error.
"""
channels: [ID!]
"""
List of channel listings IDs which causes the error.
"""
channelListings: [ID!]
}
enum ProductVariantBulkErrorCode @doc(category: "Products") {
ATTRIBUTE_ALREADY_ASSIGNED
ATTRIBUTE_CANNOT_BE_ASSIGNED
ATTRIBUTE_VARIANTS_DISABLED
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
INVALID_PRICE
NOT_PRODUCTS_VARIANT
NOT_FOUND
REQUIRED
UNIQUE
PRODUCT_NOT_ASSIGNED_TO_CHANNEL
STOCK_ALREADY_EXISTS
}
type BulkProductError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
Index of an input list item that caused the error.
"""
index: Int
"""
List of warehouse IDs which causes the error.
"""
warehouses: [ID!]
"""
List of channel IDs which causes the error.
"""
channels: [ID!]
}
"""
Update multiple product variants.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantBulkUpdate @doc(category: "Products") {
"""
Returns how many objects were updated.
"""
count: Int!
"""
List of the updated variants.
"""
results: [ProductVariantBulkResult!]!
errors: [ProductVariantBulkError!]!
}
"""
Input fields to update product variants.
"""
input ProductVariantBulkUpdateInput @doc(category: "Products") {
"""
List of attributes specific to this variant.
"""
attributes: [BulkAttributeValueInput!]
"""
Stock keeping unit.
"""
sku: String
"""
Variant name.
"""
name: String
"""
Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. If the field is not provided, `Shop.trackInventoryByDefault` will be used.
"""
trackInventory: Boolean
"""
Weight of the Product Variant.
"""
weight: WeightScalar
"""
Determines if variant is in preorder.
"""
preorder: PreorderSettingsInput
"""
Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout.
"""
quantityLimitPerCustomer: Int
"""
Fields required to update the product variant metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product variant private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product variant.
"""
externalReference: String
"""
Stocks input.
"""
stocks: ProductVariantStocksUpdateInput
"""
Channel listings input.
"""
channelListings: ProductVariantChannelListingUpdateInput
"""
ID of the product variant to update.
"""
id: ID!
}
input ProductVariantStocksUpdateInput @doc(category: "Products") {
"""
List of warehouses to create stocks.
"""
create: [StockInput!]
"""
List of stocks to update.
"""
update: [StockUpdateInput!]
"""
List of stocks to remove.
"""
remove: [ID!]
}
input StockUpdateInput @doc(category: "Products") {
"""
Stock.
"""
stock: ID!
"""
Quantity of items available for sell.
"""
quantity: Int!
}
input ProductVariantChannelListingUpdateInput @doc(category: "Products") {
"""
List of channels to create variant channel listings.
"""
create: [ProductVariantChannelListingAddInput!]
"""
List of channel listings to update.
"""
update: [ChannelListingUpdateInput!]
"""
List of channel listings to remove.
"""
remove: [ID!]
}
input ChannelListingUpdateInput @doc(category: "Products") {
"""
ID of a channel listing.
"""
channelListing: ID!
"""
Price of the particular variant in channel.
"""
price: PositiveDecimal
"""
Cost price of the variant in channel.
"""
costPrice: PositiveDecimal
"""
Price of the variant before discount.
"""
priorPrice: PositiveDecimal
"""
The threshold for preorder variant in channel.
"""
preorderThreshold: Int
}
"""
Deletes product variants.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantBulkDelete @doc(category: "Products") {
"""
Returns how many objects were affected.
"""
count: Int!
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Creates stocks for product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantStocksCreate @doc(category: "Products") {
"""
Updated product variant.
"""
productVariant: ProductVariant
bulkStockErrors: [BulkStockError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [BulkStockError!]!
}
type BulkStockError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
"""
Index of an input list item that caused the error.
"""
index: Int
}
"""
Delete stocks from product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantStocksDelete @doc(category: "Products") {
"""
Updated product variant.
"""
productVariant: ProductVariant
stockErrors: [StockError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [StockError!]!
}
type StockError @doc(category: "Products") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: StockErrorCode!
}
enum StockErrorCode @doc(category: "Products") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
}
"""
Update stocks for product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantStocksUpdate @doc(category: "Products") {
"""
Updated product variant.
"""
productVariant: ProductVariant
bulkStockErrors: [BulkStockError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [BulkStockError!]!
}
"""
Updates an existing variant for product.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantUpdate @doc(category: "Products") {
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
productVariant: ProductVariant
}
input ProductVariantInput @doc(category: "Products") {
"""
List of attributes specific to this variant.
"""
attributes: [AttributeValueInput!]
"""
Stock keeping unit.
"""
sku: String
"""
Variant name.
"""
name: String
"""
Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. If the field is not provided, `Shop.trackInventoryByDefault` will be used.
"""
trackInventory: Boolean
"""
Weight of the Product Variant.
"""
weight: WeightScalar
"""
Determines if variant is in preorder.
"""
preorder: PreorderSettingsInput
"""
Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout.
"""
quantityLimitPerCustomer: Int
"""
Fields required to update the product variant metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the product variant private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
External ID of this product variant.
"""
externalReference: String
}
"""
Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantSetDefault @doc(category: "Products") {
product: Product
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Creates/updates translations for a product variant.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type ProductVariantTranslate @doc(category: "Products") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
productVariant: ProductVariant
}
input NameTranslationInput {
name: String
}
"""
Creates/updates translations for products variants.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
Triggers the following webhook events:
- TRANSLATION_CREATED (async): A translation was created.
- TRANSLATION_UPDATED (async): A translation was updated.
"""
type ProductVariantBulkTranslate
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [TRANSLATION_CREATED, TRANSLATION_UPDATED]
syncEvents: []
) {
"""
Returns how many translations were created/updated.
"""
count: Int!
"""
List of the translations.
"""
results: [ProductVariantBulkTranslateResult!]!
errors: [ProductVariantBulkTranslateError!]!
}
type ProductVariantBulkTranslateResult @doc(category: "Products") {
"""
Product variant translation data.
"""
translation: ProductVariantTranslation
"""
List of errors occurred on translation attempt.
"""
errors: [ProductVariantBulkTranslateError!]
}
type ProductVariantBulkTranslateError {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ProductVariantTranslateErrorCode!
}
enum ProductVariantTranslateErrorCode @doc(category: "Products") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
input ProductVariantBulkTranslateInput @doc(category: "Products") {
"""
Product variant ID.
"""
id: ID
"""
External reference of a product variant.
"""
externalReference: String
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
"""
Translation fields.
"""
translationFields: NameTranslationInput!
}
"""
Manage product variant prices in channels.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantChannelListingUpdate @doc(category: "Products") {
"""
An updated product variant instance.
"""
variant: ProductVariant
productChannelListingErrors: [ProductChannelListingError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductChannelListingError!]!
}
"""
Reorder product variant attribute values.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantReorderAttributeValues @doc(category: "Products") {
"""
Product variant from which attribute values are reordered.
"""
productVariant: ProductVariant
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Deactivates product variant preorder. It changes all preorder allocation into regular allocation.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type ProductVariantPreorderDeactivate @doc(category: "Products") {
"""
Product variant with ended preorder.
"""
productVariant: ProductVariant
errors: [ProductError!]!
}
"""
Assign an media to a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type VariantMediaAssign @doc(category: "Products") {
productVariant: ProductVariant
media: ProductMedia
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Unassign an media from a product variant.
Requires one of the following permissions: MANAGE_PRODUCTS.
"""
type VariantMediaUnassign @doc(category: "Products") {
productVariant: ProductVariant
media: ProductMedia
productErrors: [ProductError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ProductError!]!
}
"""
Captures the authorized payment amount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type PaymentCapture @doc(category: "Payments") {
"""
Updated payment.
"""
payment: Payment
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
type PaymentError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentErrorCode!
"""
List of variant IDs which causes the error.
"""
variants: [ID!]
}
enum PaymentErrorCode @doc(category: "Payments") {
BILLING_ADDRESS_NOT_SET
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
PARTIAL_PAYMENT_NOT_ALLOWED
SHIPPING_ADDRESS_NOT_SET
INVALID_SHIPPING_METHOD
SHIPPING_METHOD_NOT_SET
PAYMENT_ERROR
NOT_SUPPORTED_GATEWAY
CHANNEL_INACTIVE
BALANCE_CHECK_ERROR
CHECKOUT_EMAIL_NOT_SET
UNAVAILABLE_VARIANT_IN_CHANNEL
NO_CHECKOUT_LINES
CHECKOUT_COMPLETION_IN_PROGRESS
}
"""
Refunds the captured payment amount.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type PaymentRefund @doc(category: "Payments") {
"""
Updated payment.
"""
payment: Payment
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
"""
Voids the authorized payment.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type PaymentVoid @doc(category: "Payments") {
"""
Updated payment.
"""
payment: Payment
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
"""
Initializes payment process when it is required by gateway.
"""
type PaymentInitialize @doc(category: "Payments") {
"""
Payment that was initialized.
"""
initializedPayment: PaymentInitialized
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
"""
Server-side data generated by a payment gateway. Optional step when the payment provider requires an additional action to initialize payment session.
"""
type PaymentInitialized @doc(category: "Payments") {
"""
ID of a payment gateway.
"""
gateway: String!
"""
Payment gateway name.
"""
name: String!
"""
Initialized data by gateway.
"""
data: JSONString
}
"""
Check payment balance.
"""
type PaymentCheckBalance @doc(category: "Payments") {
"""
Response from the gateway.
"""
data: JSONString
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
input PaymentCheckBalanceInput @doc(category: "Payments") {
"""
An ID of a payment gateway to check.
"""
gatewayId: String!
"""
Payment method name.
"""
method: String!
"""
Slug of a channel for which the data should be returned.
"""
channel: String!
"""
Information about card.
"""
card: CardInput!
}
input CardInput {
"""
Payment method nonce, a token returned by the appropriate provider's SDK.
"""
code: String!
"""
Card security code.
"""
cvc: String
"""
Information about currency and amount.
"""
money: MoneyInput!
}
input MoneyInput {
"""
Currency code.
"""
currency: String!
"""
Amount of money.
"""
amount: PositiveDecimal!
}
"""
Create transaction for checkout or order.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
type TransactionCreate @doc(category: "Payments") {
transaction: TransactionItem
errors: [TransactionCreateError!]!
}
type TransactionCreateError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionCreateErrorCode!
}
enum TransactionCreateErrorCode @doc(category: "Payments") {
INVALID
GRAPHQL_ERROR
NOT_FOUND
INCORRECT_CURRENCY
METADATA_KEY_REQUIRED
UNIQUE
}
input TransactionCreateInput @doc(category: "Payments") {
"""
Payment name of the transaction.
"""
name: String
"""
The message of the transaction.
"""
message: String
"""
PSP Reference of the transaction.
"""
pspReference: String
"""
List of all possible actions for the transaction
"""
availableActions: [TransactionActionEnum!]
"""
Amount authorized by this transaction.
"""
amountAuthorized: MoneyInput
"""
Amount charged by this transaction.
"""
amountCharged: MoneyInput
"""
Amount refunded by this transaction.
"""
amountRefunded: MoneyInput
"""
Amount canceled by this transaction.
"""
amountCanceled: MoneyInput
"""
Payment public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Payment private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
The url that will allow to redirect user to payment provider page with transaction event details.
"""
externalUrl: String
}
input TransactionEventInput @doc(category: "Payments") {
"""
PSP Reference related to this action.
"""
pspReference: String
"""
The message related to the event.
"""
message: String
}
"""
Update transaction.
Requires the following permissions: OWNER and HANDLE_PAYMENTS for apps, HANDLE_PAYMENTS for staff users. Staff user cannot update a transaction that is owned by the app.
"""
type TransactionUpdate @doc(category: "Payments") {
transaction: TransactionItem
errors: [TransactionUpdateError!]!
}
type TransactionUpdateError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionUpdateErrorCode!
}
enum TransactionUpdateErrorCode @doc(category: "Payments") {
INVALID
GRAPHQL_ERROR
NOT_FOUND
INCORRECT_CURRENCY
METADATA_KEY_REQUIRED
UNIQUE
}
input TransactionUpdateInput @doc(category: "Payments") {
"""
Payment name of the transaction.
"""
name: String
"""
The message of the transaction.
"""
message: String
"""
PSP Reference of the transaction.
"""
pspReference: String
"""
List of all possible actions for the transaction
"""
availableActions: [TransactionActionEnum!]
"""
Amount authorized by this transaction.
"""
amountAuthorized: MoneyInput
"""
Amount charged by this transaction.
"""
amountCharged: MoneyInput
"""
Amount refunded by this transaction.
"""
amountRefunded: MoneyInput
"""
Amount canceled by this transaction.
"""
amountCanceled: MoneyInput
"""
Payment public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Payment private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
The url that will allow to redirect user to payment provider page with transaction event details.
"""
externalUrl: String
}
"""
Request an action for payment transaction.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
type TransactionRequestAction @doc(category: "Payments") {
transaction: TransactionItem
errors: [TransactionRequestActionError!]!
}
type TransactionRequestActionError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionRequestActionErrorCode!
}
enum TransactionRequestActionErrorCode @doc(category: "Payments") {
INVALID
GRAPHQL_ERROR
NOT_FOUND
MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK
}
"""
Request a refund for payment transaction based on granted refund.
Requires one of the following permissions: HANDLE_PAYMENTS.
"""
type TransactionRequestRefundForGrantedRefund @doc(category: "Payments") {
transaction: TransactionItem
errors: [TransactionRequestRefundForGrantedRefundError!]!
}
type TransactionRequestRefundForGrantedRefundError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionRequestRefundForGrantedRefundErrorCode!
}
enum TransactionRequestRefundForGrantedRefundErrorCode
@doc(category: "Payments") {
INVALID
GRAPHQL_ERROR
NOT_FOUND
AMOUNT_GREATER_THAN_AVAILABLE
MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK
REFUND_ALREADY_PROCESSED
REFUND_IS_PENDING
}
"""
Report the event for the transaction.
Requires the following permissions: OWNER and HANDLE_PAYMENTS for apps, HANDLE_PAYMENTS for staff users. Staff user cannot update a transaction that is owned by the app.
Triggers the following webhook events:
- TRANSACTION_ITEM_METADATA_UPDATED (async): Optionally called when transaction's metadata was updated.
- CHECKOUT_FULLY_PAID (async): Optionally called when the checkout charge status changed to `FULL` or `OVERCHARGED`.
- ORDER_UPDATED (async): Optionally called when the transaction is related to the order and the order was updated.
"""
type TransactionEventReport
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: [
TRANSACTION_ITEM_METADATA_UPDATED
CHECKOUT_FULLY_PAID
ORDER_UPDATED
]
syncEvents: []
) {
"""
Defines if the reported event hasn't been processed earlier.
"""
alreadyProcessed: Boolean
"""
The transaction related to the reported event.
"""
transaction: TransactionItem
"""
The event assigned to this report. if `alreadyProcessed` is set to `true`, the previously processed event will be returned.
"""
transactionEvent: TransactionEvent
errors: [TransactionEventReportError!]!
}
type TransactionEventReportError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionEventReportErrorCode!
}
enum TransactionEventReportErrorCode @doc(category: "Payments") {
INVALID
GRAPHQL_ERROR
NOT_FOUND
INCORRECT_DETAILS
ALREADY_EXISTS
REQUIRED
}
"""
Initializes a payment gateway session. It triggers the webhook `PAYMENT_GATEWAY_INITIALIZE_SESSION`, to the requested `paymentGateways`. If `paymentGateways` is not provided, the webhook will be send to all subscribed payment gateways. There is a limit of 100 transaction items per checkout / order.
"""
type PaymentGatewayInitialize @doc(category: "Payments") {
"""
List of payment gateway configurations.
"""
gatewayConfigs: [PaymentGatewayConfig!]
errors: [PaymentGatewayInitializeError!]!
}
type PaymentGatewayConfig @doc(category: "Payments") {
"""
The app identifier.
"""
id: String!
"""
The JSON data required to initialize the payment gateway.
"""
data: JSON
errors: [PaymentGatewayConfigError!]
}
type PaymentGatewayConfigError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentGatewayConfigErrorCode!
}
enum PaymentGatewayConfigErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
type PaymentGatewayInitializeError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentGatewayInitializeErrorCode!
}
enum PaymentGatewayInitializeErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
}
input PaymentGatewayToInitialize @doc(category: "Payments") {
"""
The identifier of the payment gateway app to initialize.
"""
id: String!
"""
The data that will be passed to the payment gateway.
"""
data: JSON
}
"""
Initializes a transaction session. It triggers the webhook `TRANSACTION_INITIALIZE_SESSION`, to the requested `paymentGateways`. There is a limit of 100 transaction items per checkout / order.
"""
type TransactionInitialize @doc(category: "Payments") {
"""
The initialized transaction.
"""
transaction: TransactionItem
"""
The event created for the initialized transaction.
"""
transactionEvent: TransactionEvent
"""
The JSON data required to finalize the payment.
"""
data: JSON
errors: [TransactionInitializeError!]!
}
type TransactionInitializeError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionInitializeErrorCode!
}
enum TransactionInitializeErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
UNIQUE
CHECKOUT_COMPLETION_IN_PROGRESS
}
"""
Processes a transaction session. It triggers the webhook `TRANSACTION_PROCESS_SESSION`, to the assigned `paymentGateways`.
"""
type TransactionProcess @doc(category: "Payments") {
"""
The processed transaction.
"""
transaction: TransactionItem
"""
The event created for the processed transaction.
"""
transactionEvent: TransactionEvent
"""
The json data required to finalize the payment.
"""
data: JSON
errors: [TransactionProcessError!]!
}
type TransactionProcessError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: TransactionProcessErrorCode!
}
enum TransactionProcessErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
TRANSACTION_ALREADY_PROCESSED
MISSING_PAYMENT_APP_RELATION
MISSING_PAYMENT_APP
CHECKOUT_COMPLETION_IN_PROGRESS
}
"""
Request to delete a stored payment method on payment provider side.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- STORED_PAYMENT_METHOD_DELETE_REQUESTED (sync): The customer requested to delete a payment method.
"""
type StoredPaymentMethodRequestDelete
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [STORED_PAYMENT_METHOD_DELETE_REQUESTED]
) {
"""
The result of deleting a stored payment method.
"""
result: StoredPaymentMethodRequestDeleteResult!
errors: [PaymentMethodRequestDeleteError!]!
}
"""
Result of deleting a stored payment method.
This enum is used to determine the result of deleting a stored payment method.
SUCCESSFULLY_DELETED - The stored payment method was successfully deleted.
FAILED_TO_DELETE - The stored payment method was not deleted.
FAILED_TO_DELIVER - The request to delete the stored payment method was not
delivered.
"""
enum StoredPaymentMethodRequestDeleteResult @doc(category: "Payments") {
SUCCESSFULLY_DELETED
FAILED_TO_DELETE
FAILED_TO_DELIVER
}
type PaymentMethodRequestDeleteError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: StoredPaymentMethodRequestDeleteErrorCode!
}
enum StoredPaymentMethodRequestDeleteErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
CHANNEL_INACTIVE
GATEWAY_ERROR
}
"""
Initializes payment gateway for tokenizing payment method session.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION (sync): The customer requested to initialize payment gateway for tokenization.
"""
type PaymentGatewayInitializeTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_GATEWAY_INITIALIZE_TOKENIZATION_SESSION]
) {
"""
A status of the payment gateway initialization.
"""
result: PaymentGatewayInitializeTokenizationResult!
"""
A data returned by payment app.
"""
data: JSON
errors: [PaymentGatewayInitializeTokenizationError!]!
}
"""
Result of initialize payment gateway for tokenization of payment method.
The result of initialize payment gateway for tokenization of payment method.
SUCCESSFULLY_INITIALIZED - The payment gateway was successfully initialized.
FAILED_TO_INITIALIZE - The payment gateway was not initialized.
FAILED_TO_DELIVER - The request to initialize payment gateway was not delivered.
"""
enum PaymentGatewayInitializeTokenizationResult @doc(category: "Payments") {
SUCCESSFULLY_INITIALIZED
FAILED_TO_INITIALIZE
FAILED_TO_DELIVER
}
type PaymentGatewayInitializeTokenizationError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentGatewayInitializeTokenizationErrorCode!
}
enum PaymentGatewayInitializeTokenizationErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
CHANNEL_INACTIVE
GATEWAY_ERROR
}
"""
Tokenize payment method.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION (sync): The customer requested to tokenize payment method.
"""
type PaymentMethodInitializeTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION]
) {
"""
A status of the payment method tokenization.
"""
result: PaymentMethodTokenizationResult!
"""
The identifier of the payment method.
"""
id: String
"""
A data returned by the payment app.
"""
data: JSON
errors: [PaymentMethodInitializeTokenizationError!]!
}
"""
Result of tokenization of payment method.
SUCCESSFULLY_TOKENIZED - The payment method was successfully tokenized.
ADDITIONAL_ACTION_REQUIRED - The additional action is required to tokenize payment
method.
PENDING - The payment method is pending tokenization.
FAILED_TO_TOKENIZE - The payment method was not tokenized.
FAILED_TO_DELIVER - The request to tokenize payment method was not delivered.
"""
enum PaymentMethodTokenizationResult @doc(category: "Payments") {
SUCCESSFULLY_TOKENIZED
PENDING
ADDITIONAL_ACTION_REQUIRED
FAILED_TO_TOKENIZE
FAILED_TO_DELIVER
}
type PaymentMethodInitializeTokenizationError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentMethodInitializeTokenizationErrorCode!
}
enum PaymentMethodInitializeTokenizationErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
CHANNEL_INACTIVE
GATEWAY_ERROR
}
"""
Tokenize payment method.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION (sync): The customer continues payment method tokenization.
"""
type PaymentMethodProcessTokenization
@doc(category: "Payments")
@webhookEventsInfo(
asyncEvents: []
syncEvents: [PAYMENT_METHOD_PROCESS_TOKENIZATION_SESSION]
) {
"""
A status of the payment method tokenization.
"""
result: PaymentMethodTokenizationResult!
"""
The identifier of the payment method.
"""
id: String
"""
A data returned by the payment app.
"""
data: JSON
errors: [PaymentMethodProcessTokenizationError!]!
}
type PaymentMethodProcessTokenizationError @doc(category: "Payments") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PaymentMethodProcessTokenizationErrorCode!
}
enum PaymentMethodProcessTokenizationErrorCode @doc(category: "Payments") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
CHANNEL_INACTIVE
GATEWAY_ERROR
}
"""
Creates a new page.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageCreate @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
page: Page
}
type PageError @doc(category: "Pages") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PageErrorCode!
"""
List of attributes IDs which causes the error.
"""
attributes: [ID!]
"""
List of attribute values IDs which causes the error.
"""
values: [ID!]
}
enum PageErrorCode @doc(category: "Pages") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
DUPLICATED_INPUT_ITEM
ATTRIBUTE_ALREADY_ASSIGNED
}
input PageCreateInput @doc(category: "Pages") {
"""
Page internal name.
"""
slug: String
"""
Page title.
"""
title: String
"""
Page content.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
"""
List of attributes.
"""
attributes: [AttributeValueInput!]
"""
Determines if page is visible in the storefront.
"""
isPublished: Boolean
"""
Publication date. ISO 8601 standard.
"""
publicationDate: String
@deprecated(reason: "Use `publishedAt` field instead.")
"""
Publication date time. ISO 8601 standard.
"""
publishedAt: DateTime
"""
Search engine optimization fields.
"""
seo: SeoInput
"""
ID of the page type that page belongs to.
"""
pageType: ID!
}
"""
Deletes a page.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageDelete @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
page: Page
}
"""
Deletes pages.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageBulkDelete @doc(category: "Pages") {
"""
Returns how many objects were affected.
"""
count: Int!
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Publish pages.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageBulkPublish @doc(category: "Pages") {
"""
Returns how many objects were affected.
"""
count: Int!
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Updates an existing page.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageUpdate @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
page: Page
}
input PageInput @doc(category: "Pages") {
"""
Page internal name.
"""
slug: String
"""
Page title.
"""
title: String
"""
Page content.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
"""
List of attributes.
"""
attributes: [AttributeValueInput!]
"""
Determines if page is visible in the storefront.
"""
isPublished: Boolean
"""
Publication date. ISO 8601 standard.
"""
publicationDate: String
@deprecated(reason: "Use `publishedAt` field instead.")
"""
Publication date time. ISO 8601 standard.
"""
publishedAt: DateTime
"""
Search engine optimization fields.
"""
seo: SeoInput
}
"""
Creates/updates translations for a page.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type PageTranslate @doc(category: "Pages") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
page: PageTranslatableContent
}
input PageTranslationInput {
slug: String
seoTitle: String
seoDescription: String
title: String
"""
Translated page content.
Rich text format. For reference see https://editorjs.io/
"""
content: JSONString
}
"""
Create a new page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageTypeCreate @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
pageType: PageType
}
input PageTypeCreateInput @doc(category: "Pages") {
"""
Name of the page type.
"""
name: String
"""
Page type slug.
"""
slug: String
"""
List of attribute IDs to be assigned to the page type.
"""
addAttributes: [ID!]
}
"""
Update page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageTypeUpdate @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
pageType: PageType
}
input PageTypeUpdateInput @doc(category: "Pages") {
"""
Name of the page type.
"""
name: String
"""
Page type slug.
"""
slug: String
"""
List of attribute IDs to be assigned to the page type.
"""
addAttributes: [ID!]
"""
List of attribute IDs to be assigned to the page type.
"""
removeAttributes: [ID!]
}
"""
Delete a page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageTypeDelete @doc(category: "Pages") {
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
pageType: PageType
}
"""
Delete page types.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageTypeBulkDelete @doc(category: "Pages") {
"""
Returns how many objects were affected.
"""
count: Int!
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Assign attributes to a given page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageAttributeAssign @doc(category: "Pages") {
"""
The updated page type.
"""
pageType: PageType
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Unassign attributes from a given page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageAttributeUnassign @doc(category: "Pages") {
"""
The updated page type.
"""
pageType: PageType
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Reorder the attributes of a page type.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
"""
type PageTypeReorderAttributes @doc(category: "Pages") {
"""
Page type from which attributes are reordered.
"""
pageType: PageType
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Reorder page attribute values.
Requires one of the following permissions: MANAGE_PAGES.
"""
type PageReorderAttributeValues @doc(category: "Pages") {
"""
Page from which attribute values are reordered.
"""
page: Page
pageErrors: [PageError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [PageError!]!
}
"""
Completes creating an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderComplete @doc(category: "Orders") {
"""
Completed order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Creates a new draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderCreate @doc(category: "Orders") {
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
order: Order
}
input DraftOrderCreateInput @doc(category: "Orders") {
"""
Billing address of the customer.
"""
billingAddress: AddressInput
"""
Indicates whether the billing address should be saved to the user’s address book upon draft order completion. Can only be set when a billing address is provided. If not specified along with the address, the default behavior is to not save the address.
Added in Saleor 3.21.
"""
saveBillingAddress: Boolean
"""
Customer associated with the draft order.
"""
user: ID
"""
Email address of the customer.
"""
userEmail: String
"""
Discount amount for the order.
"""
discount: PositiveDecimal
@deprecated(
reason: "Providing a value for the field has no effect. Use `orderDiscountAdd` mutation instead."
)
"""
Shipping address of the customer.
"""
shippingAddress: AddressInput
"""
Indicates whether the shipping address should be saved to the user’s address book upon draft order completion.Can only be set when a shipping address is provided. If not specified along with the address, the default behavior is to not save the address.
Added in Saleor 3.21.
"""
saveShippingAddress: Boolean
"""
ID of a selected shipping method.
"""
shippingMethod: ID
"""
ID of the voucher associated with the order.
"""
voucher: ID
"""
A code of the voucher associated with the order.
Added in Saleor 3.18.
"""
voucherCode: String
"""
A note from a customer. Visible by customers in the order summary.
"""
customerNote: String
"""
ID of the channel associated with the order.
"""
channelId: ID
"""
URL of a view where users should be redirected to see the order details. URL in RFC 1808 format.
"""
redirectUrl: String
"""
External ID of this order.
"""
externalReference: String
"""
Order public metadata.
Added in Saleor 3.21. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Order private metadata.
Added in Saleor 3.21. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Order language code.
Added in Saleor 3.21.
"""
languageCode: LanguageCodeEnum
"""
Variant line input consisting of variant ID and quantity of products.
"""
lines: [OrderLineCreateInput!]
}
input OrderLineCreateInput @doc(category: "Orders") {
"""
Number of variant items ordered.
"""
quantity: Int!
"""
Product variant ID.
"""
variantId: ID!
"""
Flag that allow force splitting the same variant into multiple lines by skipping the matching logic.
"""
forceNewLine: Boolean = false
"""
Custom price of the item.When the line with the same variant will be provided multiple times, the last price will be used.
"""
price: PositiveDecimal
}
"""
Deletes a draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderDelete @doc(category: "Orders") {
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
order: Order
}
"""
Deletes draft orders.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderBulkDelete @doc(category: "Orders") {
"""
Returns how many objects were affected.
"""
count: Int!
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Deletes order lines.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderLinesBulkDelete @doc(category: "Orders") {
"""
Returns how many objects were affected.
"""
count: Int!
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Updates a draft order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type DraftOrderUpdate @doc(category: "Orders") {
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
order: Order
}
input DraftOrderInput @doc(category: "Orders") {
"""
Billing address of the customer.
"""
billingAddress: AddressInput
"""
Indicates whether the billing address should be saved to the user’s address book upon draft order completion. Can only be set when a billing address is provided. If not specified along with the address, the default behavior is to not save the address.
Added in Saleor 3.21.
"""
saveBillingAddress: Boolean
"""
Customer associated with the draft order.
"""
user: ID
"""
Email address of the customer.
"""
userEmail: String
"""
Discount amount for the order.
"""
discount: PositiveDecimal
@deprecated(
reason: "Providing a value for the field has no effect. Use `orderDiscountAdd` mutation instead."
)
"""
Shipping address of the customer.
"""
shippingAddress: AddressInput
"""
Indicates whether the shipping address should be saved to the user’s address book upon draft order completion.Can only be set when a shipping address is provided. If not specified along with the address, the default behavior is to not save the address.
Added in Saleor 3.21.
"""
saveShippingAddress: Boolean
"""
ID of a selected shipping method.
"""
shippingMethod: ID
"""
ID of the voucher associated with the order.
"""
voucher: ID
"""
A code of the voucher associated with the order.
Added in Saleor 3.18.
"""
voucherCode: String
"""
A note from a customer. Visible by customers in the order summary.
"""
customerNote: String
"""
ID of the channel associated with the order.
"""
channelId: ID
"""
URL of a view where users should be redirected to see the order details. URL in RFC 1808 format.
"""
redirectUrl: String
"""
External ID of this order.
"""
externalReference: String
"""
Order public metadata.
Added in Saleor 3.21. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Order private metadata.
Added in Saleor 3.21. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Order language code.
Added in Saleor 3.21.
"""
languageCode: LanguageCodeEnum
}
"""
Adds note to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderAddNote @doc(category: "Orders") {
"""
Order with the note added.
"""
order: Order
"""
Order note created.
"""
event: OrderEvent
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderAddNoteInput @doc(category: "Orders") {
"""
Note message.
"""
message: String!
}
"""
Cancel an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderCancel @doc(category: "Orders") {
"""
Canceled order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Capture an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderCapture @doc(category: "Orders") {
"""
Captured order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Confirms an unconfirmed order by changing status to unfulfilled.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderConfirm @doc(category: "Orders") {
"""
Order which has been confirmed.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Creates new fulfillments for an order.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_CREATED (async): A new fulfillment is created.
- ORDER_FULFILLED (async): Order is fulfilled.
- FULFILLMENT_TRACKING_NUMBER_UPDATED (async): Sent when fulfillment tracking number is updated.
- FULFILLMENT_APPROVED (async): A fulfillment is approved.
"""
type OrderFulfill
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [
FULFILLMENT_CREATED
ORDER_FULFILLED
FULFILLMENT_TRACKING_NUMBER_UPDATED
FULFILLMENT_APPROVED
]
syncEvents: []
) {
"""
List of created fulfillments.
"""
fulfillments: [Fulfillment!]
"""
Fulfilled order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderFulfillInput @doc(category: "Orders") {
"""
List of items informing how to fulfill the order.
"""
lines: [OrderFulfillLineInput!]!
"""
If true, send an email notification to the customer.
"""
notifyCustomer: Boolean
"""
If true, then allow proceed fulfillment when stock is exceeded.
"""
allowStockToBeExceeded: Boolean = false
"""
Fulfillment tracking number.
"""
trackingNumber: String
}
input OrderFulfillLineInput @doc(category: "Orders") {
"""
The ID of the order line.
"""
orderLineId: ID
"""
List of stock items to create.
"""
stocks: [OrderFulfillStockInput!]!
}
input OrderFulfillStockInput @doc(category: "Orders") {
"""
The number of line items to be fulfilled from given warehouse.
"""
quantity: Int!
"""
ID of the warehouse from which the item will be fulfilled.
"""
warehouse: ID!
}
"""
Cancels existing fulfillment and optionally restocks items.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type FulfillmentCancel @doc(category: "Orders") {
"""
A canceled fulfillment.
"""
fulfillment: Fulfillment
"""
Order which fulfillment was cancelled.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input FulfillmentCancelInput @doc(category: "Orders") {
"""
ID of a warehouse where items will be restocked. Optional when fulfillment is in WAITING_FOR_APPROVAL state.
"""
warehouseId: ID
}
"""
Approve existing fulfillment.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_APPROVED (async): Fulfillment is approved.
"""
type FulfillmentApprove
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [FULFILLMENT_APPROVED], syncEvents: []) {
"""
An approved fulfillment.
"""
fulfillment: Fulfillment
"""
Order which fulfillment was approved.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Updates a fulfillment for an order.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- FULFILLMENT_TRACKING_NUMBER_UPDATED (async): Fulfillment tracking number is updated.
"""
type FulfillmentUpdateTracking
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [FULFILLMENT_TRACKING_NUMBER_UPDATED]
syncEvents: []
) {
"""
A fulfillment with updated tracking.
"""
fulfillment: Fulfillment
"""
Order for which fulfillment was updated.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input FulfillmentUpdateTrackingInput @doc(category: "Orders") {
"""
Fulfillment tracking number.
"""
trackingNumber: String
"""
If true, send an email notification to the customer.
"""
notifyCustomer: Boolean = false
}
"""
Refund products.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type FulfillmentRefundProducts @doc(category: "Orders") {
"""
A refunded fulfillment.
"""
fulfillment: Fulfillment
"""
Order which fulfillment was refunded.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderRefundProductsInput @doc(category: "Orders") {
"""
List of unfulfilled lines to refund.
"""
orderLines: [OrderRefundLineInput!]
"""
List of fulfilled lines to refund.
"""
fulfillmentLines: [OrderRefundFulfillmentLineInput!]
"""
The total amount of refund when the value is provided manually.
"""
amountToRefund: PositiveDecimal
"""
If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored.
"""
includeShippingCosts: Boolean = false
}
input OrderRefundLineInput @doc(category: "Orders") {
"""
The ID of the order line to refund.
"""
orderLineId: ID!
"""
The number of items to be refunded.
"""
quantity: Int!
}
input OrderRefundFulfillmentLineInput @doc(category: "Orders") {
"""
The ID of the fulfillment line to refund.
"""
fulfillmentLineId: ID!
"""
The number of items to be refunded.
"""
quantity: Int!
}
"""
Return products.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type FulfillmentReturnProducts @doc(category: "Orders") {
"""
A return fulfillment.
"""
returnFulfillment: Fulfillment
"""
A replace fulfillment.
"""
replaceFulfillment: Fulfillment
"""
Order which fulfillment was returned.
"""
order: Order
"""
A draft order which was created for products with replace flag.
"""
replaceOrder: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderReturnProductsInput @doc(category: "Orders") {
"""
List of unfulfilled lines to return.
"""
orderLines: [OrderReturnLineInput!]
"""
List of fulfilled lines to return.
"""
fulfillmentLines: [OrderReturnFulfillmentLineInput!]
"""
The total amount of refund when the value is provided manually.
"""
amountToRefund: PositiveDecimal
"""
If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored.
"""
includeShippingCosts: Boolean = false
"""
If true, Saleor will call refund action for all lines.
"""
refund: Boolean = false
}
input OrderReturnLineInput @doc(category: "Orders") {
"""
The ID of the order line to return.
"""
orderLineId: ID!
"""
The number of items to be returned.
"""
quantity: Int!
"""
Determines, if the line should be added to replace order.
"""
replace: Boolean = false
}
input OrderReturnFulfillmentLineInput @doc(category: "Orders") {
"""
The ID of the fulfillment line to return.
"""
fulfillmentLineId: ID!
"""
The number of items to be returned.
"""
quantity: Int!
"""
Determines, if the line should be added to replace order.
"""
replace: Boolean = false
}
"""
Adds granted refund to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderGrantRefundCreate @doc(category: "Orders") {
"""
Order which has assigned new grant refund.
"""
order: Order
"""
Created granted refund.
"""
grantedRefund: OrderGrantedRefund
errors: [OrderGrantRefundCreateError!]!
}
type OrderGrantRefundCreateError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderGrantRefundCreateErrorCode!
"""
List of lines which cause the error.
"""
lines: [OrderGrantRefundCreateLineError!]
}
enum OrderGrantRefundCreateErrorCode @doc(category: "Orders") {
GRAPHQL_ERROR
NOT_FOUND
SHIPPING_COSTS_ALREADY_GRANTED
AMOUNT_GREATER_THAN_AVAILABLE
REQUIRED
INVALID
}
type OrderGrantRefundCreateLineError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderGrantRefundCreateLineErrorCode!
"""
The ID of the line related to the error.
"""
lineId: ID!
}
enum OrderGrantRefundCreateLineErrorCode {
GRAPHQL_ERROR
NOT_FOUND
QUANTITY_GREATER_THAN_AVAILABLE
}
input OrderGrantRefundCreateInput @doc(category: "Orders") {
"""
Amount of the granted refund. If not provided, the amount will be calculated automatically based on provided `lines` and `grantRefundForShipping`.
"""
amount: Decimal
"""
Reason of the granted refund.
"""
reason: String
"""
Lines to assign to granted refund.
"""
lines: [OrderGrantRefundCreateLineInput!]
"""
Determine if granted refund should include shipping costs.
"""
grantRefundForShipping: Boolean
"""
The ID of the transaction item related to the granted refund. If `amount` provided in the input, the transaction.chargedAmount needs to be equal or greater than provided `amount`.If `amount` is not provided in the input and calculated automatically by Saleor, the `min(calculatedAmount, transaction.chargedAmount)` will be used. Field required starting from Saleor 3.21.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
transactionId: ID!
}
input OrderGrantRefundCreateLineInput @doc(category: "Orders") {
"""
The ID of the order line.
"""
id: ID!
"""
The quantity of line items to be marked to refund.
"""
quantity: Int!
"""
Reason of the granted refund for the line.
"""
reason: String
}
"""
Updates granted refund.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderGrantRefundUpdate @doc(category: "Orders") {
"""
Order which has assigned updated grant refund.
"""
order: Order
"""
Created granted refund.
"""
grantedRefund: OrderGrantedRefund
errors: [OrderGrantRefundUpdateError!]!
}
type OrderGrantRefundUpdateError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderGrantRefundUpdateErrorCode!
"""
List of lines to add which cause the error.
"""
addLines: [OrderGrantRefundUpdateLineError!]
"""
List of lines to remove which cause the error.
"""
removeLines: [OrderGrantRefundUpdateLineError!]
}
enum OrderGrantRefundUpdateErrorCode @doc(category: "Orders") {
GRAPHQL_ERROR
NOT_FOUND
REQUIRED
INVALID
AMOUNT_GREATER_THAN_AVAILABLE
SHIPPING_COSTS_ALREADY_GRANTED
}
type OrderGrantRefundUpdateLineError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderGrantRefundUpdateLineErrorCode!
"""
The ID of the line related to the error.
"""
lineId: ID!
}
enum OrderGrantRefundUpdateLineErrorCode {
GRAPHQL_ERROR
NOT_FOUND
QUANTITY_GREATER_THAN_AVAILABLE
}
input OrderGrantRefundUpdateInput @doc(category: "Orders") {
"""
Amount of the granted refund. if not provided and `addLines` or `removeLines` or `grantRefundForShipping` is provided, amount will be calculated automatically.
"""
amount: Decimal
"""
Reason of the granted refund.
"""
reason: String
"""
Lines to assign to granted refund.
"""
addLines: [OrderGrantRefundUpdateLineAddInput!]
"""
Lines to remove from granted refund.
"""
removeLines: [ID!]
"""
Determine if granted refund should include shipping costs.
"""
grantRefundForShipping: Boolean
"""
The ID of the transaction item related to the granted refund. If `amount` provided in the input, the transaction.chargedAmount needs to be equal or greater than provided `amount`.If `amount` is not provided in the input and calculated automatically by Saleor, the `min(calculatedAmount, transaction.chargedAmount)` will be used.Field will be required starting from Saleor 3.21.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
transactionId: ID
}
input OrderGrantRefundUpdateLineAddInput @doc(category: "Orders") {
"""
The ID of the order line.
"""
id: ID!
"""
The quantity of line items to be marked to refund.
"""
quantity: Int!
"""
Reason of the granted refund for the line.
"""
reason: String
}
"""
Create order lines for an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderLinesCreate @doc(category: "Orders") {
"""
Related order.
"""
order: Order
"""
List of added order lines.
"""
orderLines: [OrderLine!]
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Deletes an order line from an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderLineDelete @doc(category: "Orders") {
"""
A related order.
"""
order: Order
"""
An order line that was deleted.
"""
orderLine: OrderLine
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Updates an order line of an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderLineUpdate @doc(category: "Orders") {
"""
Related order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
orderLine: OrderLine
}
input OrderLineInput @doc(category: "Orders") {
"""
Number of variant items ordered.
"""
quantity: Int!
}
"""
Adds discount to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderDiscountAdd @doc(category: "Orders") {
"""
Order which has been discounted.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderDiscountCommonInput @doc(category: "Orders") {
"""
Type of the discount: fixed or percent
"""
valueType: DiscountValueTypeEnum!
"""
Value of the discount. Can store fixed value or percent value
"""
value: PositiveDecimal!
"""
Explanation for the applied discount.
"""
reason: String
}
"""
Update discount for the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderDiscountUpdate @doc(category: "Orders") {
"""
Order which has been discounted.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Remove discount from the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderDiscountDelete @doc(category: "Orders") {
"""
Order which has removed discount.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Update discount for the order line.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderLineDiscountUpdate @doc(category: "Orders") {
"""
Order line which has been discounted.
"""
orderLine: OrderLine
"""
Order which is related to the discounted line.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Remove discount applied to the order line.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderLineDiscountRemove @doc(category: "Orders") {
"""
Order line which has removed discount.
"""
orderLine: OrderLine
"""
Order which is related to line which has removed discount.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Adds note to the order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderNoteAdd @doc(category: "Orders") {
"""
Order with the note added.
"""
order: Order
"""
Order note created.
"""
event: OrderEvent
errors: [OrderNoteAddError!]!
}
type OrderNoteAddError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderNoteAddErrorCode
}
enum OrderNoteAddErrorCode @doc(category: "Orders") {
GRAPHQL_ERROR
REQUIRED
}
input OrderNoteInput @doc(category: "Orders") {
"""
Note message.
"""
message: String!
}
"""
Updates note of an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderNoteUpdate @doc(category: "Orders") {
"""
Order with the note updated.
"""
order: Order
"""
Order note updated.
"""
event: OrderEvent
errors: [OrderNoteUpdateError!]!
}
type OrderNoteUpdateError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderNoteUpdateErrorCode
}
enum OrderNoteUpdateErrorCode @doc(category: "Orders") {
GRAPHQL_ERROR
NOT_FOUND
REQUIRED
}
"""
Mark order as manually paid.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderMarkAsPaid @doc(category: "Orders") {
"""
Order marked as paid.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Refund an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderRefund @doc(category: "Orders") {
"""
A refunded order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Updates an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderUpdate @doc(category: "Orders") {
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
order: Order
}
input OrderUpdateInput @doc(category: "Orders") {
"""
Billing address of the customer.
"""
billingAddress: AddressInput
"""
Email address of the customer.
"""
userEmail: String
"""
Shipping address of the customer.
"""
shippingAddress: AddressInput
"""
External ID of this order.
"""
externalReference: String
"""
Order public metadata.
Added in Saleor 3.21.Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Order private metadata.
Added in Saleor 3.21.Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Order language code.
Added in Saleor 3.21.
"""
languageCode: LanguageCodeEnum
}
"""
Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderUpdateShipping @doc(category: "Orders") {
"""
Order with updated shipping method.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
input OrderUpdateShippingInput @doc(category: "Orders") {
"""
ID of the selected shipping method, pass null to remove currently assigned shipping method.
"""
shippingMethod: ID
}
"""
Void an order.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderVoid @doc(category: "Orders") {
"""
A voided order.
"""
order: Order
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Cancels orders.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type OrderBulkCancel @doc(category: "Orders") {
"""
Returns how many objects were affected.
"""
count: Int!
orderErrors: [OrderError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [OrderError!]!
}
"""
Creates multiple orders.
Requires one of the following permissions: MANAGE_ORDERS_IMPORT.
"""
type OrderBulkCreate @doc(category: "Orders") {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of the created orders.
"""
results: [OrderBulkCreateResult!]!
errors: [OrderBulkCreateError!]!
}
type OrderBulkCreateResult @doc(category: "Orders") {
"""
Order data.
"""
order: Order
"""
List of errors occurred on create attempt.
"""
errors: [OrderBulkCreateError!]
}
type OrderBulkCreateError @doc(category: "Orders") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderBulkCreateErrorCode
}
enum OrderBulkCreateErrorCode {
GRAPHQL_ERROR
REQUIRED
INVALID
NOT_FOUND
UNIQUE
BULK_LIMIT
TOO_MANY_IDENTIFIERS
FUTURE_DATE
INVALID_QUANTITY
PRICE_ERROR
NOTE_LENGTH
INSUFFICIENT_STOCK
NON_EXISTING_STOCK
NO_RELATED_ORDER_LINE
NEGATIVE_INDEX
ORDER_LINE_FULFILLMENT_LINE_MISMATCH
METADATA_KEY_REQUIRED
INCORRECT_CURRENCY
}
input OrderBulkCreateInput @doc(category: "Orders") {
"""
External ID of the order.
"""
externalReference: String
"""
Slug of the channel associated with the order.
"""
channel: String!
"""
The date, when the order was inserted to Saleor database.
"""
createdAt: DateTime!
"""
Status of the order.
"""
status: OrderStatus
"""
Customer associated with the order.
"""
user: OrderBulkCreateUserInput!
"""
Billing address of the customer.
"""
billingAddress: AddressInput!
"""
Shipping address of the customer.
"""
shippingAddress: AddressInput
"""
Currency code.
"""
currency: String!
"""
Metadata of the order. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Private metadata of the order. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Note about customer.
"""
customerNote: String
"""
Notes related to the order.
"""
notes: [OrderBulkCreateNoteInput!]
"""
Order language code.
"""
languageCode: LanguageCodeEnum!
"""
Determines whether displayed prices should include taxes.
"""
displayGrossPrices: Boolean
"""
Weight of the order in kg.
"""
weight: WeightScalar
"""
URL of a view, where users should be redirected to see the order details.
"""
redirectUrl: String
"""
List of order lines.
"""
lines: [OrderBulkCreateOrderLineInput!]!
"""
The delivery method selected for this order.
"""
deliveryMethod: OrderBulkCreateDeliveryMethodInput
"""
List of gift card codes associated with the order.
"""
giftCards: [String!]
"""
Code of a voucher associated with the order.
Added in Saleor 3.18.
"""
voucherCode: String
"""
List of discounts.
"""
discounts: [OrderDiscountCommonInput!]
"""
Fulfillments of the order.
"""
fulfillments: [OrderBulkCreateFulfillmentInput!]
"""
Transactions related to the order.
"""
transactions: [TransactionCreateInput!]
"""
Invoices related to the order.
"""
invoices: [OrderBulkCreateInvoiceInput!]
}
input OrderBulkCreateUserInput @doc(category: "Orders") {
"""
Customer ID associated with the order.
"""
id: ID
"""
Customer email associated with the order.
"""
email: String
"""
Customer external ID associated with the order.
"""
externalReference: String
}
input OrderBulkCreateNoteInput @doc(category: "Orders") {
"""
Note message. Max characters: 255.
"""
message: String!
"""
The date associated with the message.
"""
date: DateTime
"""
The user ID associated with the message.
"""
userId: ID
"""
The user email associated with the message.
"""
userEmail: ID
"""
The user external ID associated with the message.
"""
userExternalReference: ID
"""
The app ID associated with the message.
"""
appId: ID
}
input OrderBulkCreateOrderLineInput @doc(category: "Orders") {
"""
The ID of the product variant.
"""
variantId: ID
"""
The SKU of the product variant.
"""
variantSku: String
"""
The external ID of the product variant.
"""
variantExternalReference: String
"""
The name of the product variant.
"""
variantName: String
"""
The name of the product.
"""
productName: String
"""
The SKU of the product.
Added in Saleor 3.18.
"""
productSku: String
"""
Translation of the product variant name.
"""
translatedVariantName: String
"""
Translation of the product name.
"""
translatedProductName: String
"""
The date, when the order line was created.
"""
createdAt: DateTime!
"""
Determines whether shipping of the order line items is required.
"""
isShippingRequired: Boolean!
"""
Gift card flag.
"""
isGiftCard: Boolean!
"""
Number of items in the order line
"""
quantity: Int!
"""
Price of the order line.
"""
totalPrice: TaxedMoneyInput!
"""
Price of the order line excluding applied discount.
"""
undiscountedTotalPrice: TaxedMoneyInput!
"""
Reason of the discount on order line.
Added in Saleor 3.19.
"""
unitDiscountReason: String
"""
Type of the discount: fixed or percent
Added in Saleor 3.19.
"""
unitDiscountType: DiscountValueTypeEnum
"""
Value of the discount. Can store fixed value or percent value
Added in Saleor 3.19.
"""
unitDiscountValue: PositiveDecimal
"""
The ID of the warehouse, where the line will be allocated.
"""
warehouse: ID!
"""
Metadata of the order line. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Private metadata of the order line. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Tax rate of the order line.
"""
taxRate: PositiveDecimal
"""
The ID of the tax class.
"""
taxClassId: ID
"""
The name of the tax class.
"""
taxClassName: String
"""
Metadata of the tax class. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
taxClassMetadata: [MetadataInput!]
"""
Private metadata of the tax class. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
taxClassPrivateMetadata: [MetadataInput!]
}
input TaxedMoneyInput @doc(category: "Orders") {
"""
Gross value of an item.
"""
gross: PositiveDecimal!
"""
Net value of an item.
"""
net: PositiveDecimal!
}
input OrderBulkCreateDeliveryMethodInput @doc(category: "Orders") {
"""
The ID of the warehouse.
"""
warehouseId: ID
"""
The name of the warehouse.
"""
warehouseName: String
"""
The ID of the shipping method.
"""
shippingMethodId: ID
"""
The name of the shipping method.
"""
shippingMethodName: String
"""
The price of the shipping.
"""
shippingPrice: TaxedMoneyInput
"""
Tax rate of the shipping.
"""
shippingTaxRate: PositiveDecimal
"""
The ID of the tax class.
"""
shippingTaxClassId: ID
"""
The name of the tax class.
"""
shippingTaxClassName: String
"""
Metadata of the tax class. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
shippingTaxClassMetadata: [MetadataInput!]
"""
Private metadata of the tax class. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
shippingTaxClassPrivateMetadata: [MetadataInput!]
}
input OrderBulkCreateFulfillmentInput @doc(category: "Orders") {
"""
Fulfillment's tracking code.
"""
trackingCode: String
"""
List of items informing how to fulfill the order.
"""
lines: [OrderBulkCreateFulfillmentLineInput!]
}
input OrderBulkCreateFulfillmentLineInput @doc(category: "Orders") {
"""
The ID of the product variant.
"""
variantId: ID
"""
The SKU of the product variant.
"""
variantSku: String
"""
The external ID of the product variant.
"""
variantExternalReference: String
"""
The number of line items to be fulfilled from given warehouse.
"""
quantity: Int!
"""
ID of the warehouse from which the item will be fulfilled.
"""
warehouse: ID!
"""
0-based index of order line, which the fulfillment line refers to.
"""
orderLineIndex: Int!
}
input OrderBulkCreateInvoiceInput @doc(category: "Orders") {
"""
The date, when the invoice was created.
"""
createdAt: DateTime!
"""
Invoice number.
"""
number: String
"""
URL of the invoice to download.
"""
url: String
"""
Metadata of the invoice. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Private metadata of the invoice. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
"""
Determine how stocks should be updated, while processing an order.
SKIP - stocks are not checked and not updated.
UPDATE - only do update, if there is enough stock.
FORCE - force update, if there is not enough stock.
"""
enum StockUpdatePolicyEnum {
SKIP
UPDATE
FORCE
}
"""
Delete metadata of an object. To use it, you need to have access to the modified object.
"""
type DeleteMetadata {
metadataErrors: [MetadataError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [MetadataError!]!
item: ObjectWithMetadata
}
type MetadataError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: MetadataErrorCode!
}
enum MetadataErrorCode {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
NOT_UPDATED
}
"""
Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object.
"""
type DeletePrivateMetadata {
metadataErrors: [MetadataError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [MetadataError!]!
item: ObjectWithMetadata
}
"""
Updates metadata of an object.Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
type UpdateMetadata {
metadataErrors: [MetadataError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [MetadataError!]!
item: ObjectWithMetadata
}
"""
Updates private metadata of an object. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
type UpdatePrivateMetadata {
metadataErrors: [MetadataError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [MetadataError!]!
item: ObjectWithMetadata
}
"""
Assigns storefront's navigation menus.
Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS.
"""
type AssignNavigation @doc(category: "Menu") {
"""
Assigned navigation menu.
"""
menu: Menu
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
}
type MenuError @doc(category: "Menu") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: MenuErrorCode!
}
enum MenuErrorCode {
CANNOT_ASSIGN_NODE
GRAPHQL_ERROR
INVALID
INVALID_MENU_ITEM
NO_MENU_ITEM_PROVIDED
NOT_FOUND
REQUIRED
TOO_MANY_MENU_ITEMS
UNIQUE
}
enum NavigationType {
"""
Main storefront navigation.
"""
MAIN
"""
Secondary storefront navigation.
"""
SECONDARY
}
"""
Creates a new Menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_CREATED (async): A menu was created.
"""
type MenuCreate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_CREATED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menu: Menu
}
input MenuCreateInput {
"""
Name of the menu.
"""
name: String!
"""
Slug of the menu. Will be generated if not provided.
"""
slug: String
"""
List of menu items.
"""
items: [MenuItemInput!]
}
input MenuItemInput {
"""
Name of the menu item.
"""
name: String
"""
URL of the pointed item.
"""
url: String
"""
Category to which item points.
"""
category: ID
"""
Collection to which item points.
"""
collection: ID
"""
Page to which item points.
"""
page: ID
}
"""
Deletes a menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_DELETED (async): A menu was deleted.
"""
type MenuDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_DELETED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menu: Menu
}
"""
Deletes menus.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_DELETED (async): A menu was deleted.
"""
type MenuBulkDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
}
"""
Updates a menu.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_UPDATED (async): A menu was updated.
"""
type MenuUpdate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_UPDATED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menu: Menu
}
input MenuInput {
"""
Name of the menu.
"""
name: String
"""
Slug of the menu.
"""
slug: String
}
"""
Creates a new menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_CREATED (async): A menu item was created.
"""
type MenuItemCreate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_CREATED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menuItem: MenuItem
}
input MenuItemCreateInput {
"""
Name of the menu item.
"""
name: String!
"""
URL of the pointed item.
"""
url: String
"""
Category to which item points.
"""
category: ID
"""
Collection to which item points.
"""
collection: ID
"""
Page to which item points.
"""
page: ID
"""
Menu to which item belongs.
"""
menu: ID!
"""
ID of the parent menu. If empty, menu will be top level menu.
"""
parent: ID
}
"""
Deletes a menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_DELETED (async): A menu item was deleted.
"""
type MenuItemDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_DELETED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menuItem: MenuItem
}
"""
Deletes menu items.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_DELETED (async): A menu item was deleted.
"""
type MenuItemBulkDelete
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
}
"""
Updates a menu item.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_UPDATED (async): A menu item was updated.
"""
type MenuItemUpdate
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_UPDATED], syncEvents: []) {
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
menuItem: MenuItem
}
"""
Creates/updates translations for a menu item.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type MenuItemTranslate @doc(category: "Menu") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
menuItem: MenuItem
}
"""
Moves items of menus.
Requires one of the following permissions: MANAGE_MENUS.
Triggers the following webhook events:
- MENU_ITEM_UPDATED (async): Optionally triggered when sort order or parent changed for menu item.
"""
type MenuItemMove
@doc(category: "Menu")
@webhookEventsInfo(asyncEvents: [MENU_ITEM_UPDATED], syncEvents: []) {
"""
Assigned menu to move within.
"""
menu: Menu
menuErrors: [MenuError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [MenuError!]!
}
input MenuItemMoveInput {
"""
The menu item ID to move.
"""
itemId: ID!
"""
ID of the parent menu. If empty, menu will be top level menu.
"""
parentId: ID
"""
The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged.
"""
sortOrder: Int
}
"""
Request an invoice for the order using plugin.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_REQUESTED (async): An invoice was requested.
"""
type InvoiceRequest
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_REQUESTED], syncEvents: []) {
"""
Order related to an invoice.
"""
order: Order
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
type InvoiceError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: InvoiceErrorCode!
}
enum InvoiceErrorCode @doc(category: "Orders") {
REQUIRED
NOT_READY
URL_NOT_SET
EMAIL_NOT_SET
NUMBER_NOT_SET
NOT_FOUND
INVALID_STATUS
NO_INVOICE_PLUGIN
}
"""
Requests deletion of an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_DELETED (async): An invoice was requested to delete.
"""
type InvoiceRequestDelete
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_DELETED], syncEvents: []) {
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
"""
Creates a ready to send invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type InvoiceCreate @doc(category: "Orders") {
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
input InvoiceCreateInput @doc(category: "Orders") {
"""
Invoice number.
"""
number: String!
"""
URL of an invoice to download.
"""
url: String!
"""
Fields required to update the invoice metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the invoice private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
"""
Deletes an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type InvoiceDelete @doc(category: "Orders") {
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
"""
Updates an invoice.
Requires one of the following permissions: MANAGE_ORDERS.
"""
type InvoiceUpdate @doc(category: "Orders") {
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
input UpdateInvoiceInput @doc(category: "Orders") {
"""
Invoice number
"""
number: String
"""
URL of an invoice to download.
"""
url: String
"""
Fields required to update the invoice metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the invoice private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
}
"""
Send an invoice notification to the customer.
Requires one of the following permissions: MANAGE_ORDERS.
Triggers the following webhook events:
- INVOICE_SENT (async): A notification for invoice send
- NOTIFY_USER (async): A notification for invoice send
"""
type InvoiceSendNotification
@doc(category: "Orders")
@webhookEventsInfo(asyncEvents: [INVOICE_SENT, NOTIFY_USER], syncEvents: []) {
invoiceErrors: [InvoiceError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [InvoiceError!]!
invoice: Invoice
}
"""
Activate a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was activated.
"""
type GiftCardActivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: []) {
"""
Activated gift card.
"""
giftCard: GiftCard
giftCardErrors: [GiftCardError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [GiftCardError!]!
}
type GiftCardError @doc(category: "Gift cards") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: GiftCardErrorCode!
"""
List of tag values that cause the error.
"""
tags: [String!]
}
enum GiftCardErrorCode @doc(category: "Gift cards") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
EXPIRED_GIFT_CARD
DUPLICATED_INPUT_ITEM
}
"""
Creates a new gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_CREATED (async): A gift card was created.
- NOTIFY_USER (async): A notification for created gift card.
"""
type GiftCardCreate
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [GIFT_CARD_CREATED, NOTIFY_USER]
syncEvents: []
) {
giftCardErrors: [GiftCardError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [GiftCardError!]!
giftCard: GiftCard
}
input GiftCardCreateInput @doc(category: "Gift cards") {
"""
The gift card tags to add.
"""
addTags: [String!]
"""
The gift card expiry date.
"""
expiryDate: Date
"""
Gift Card public metadata.
Added in Saleor 3.21. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Gift Card private metadata.
Added in Saleor 3.21. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Start date of the gift card in ISO 8601 format.
"""
startDate: Date @deprecated
"""
End date of the gift card in ISO 8601 format.
"""
endDate: Date
@deprecated(reason: "Use `expiryDate` from `expirySettings` instead.")
"""
Balance of the gift card.
"""
balance: PriceInput!
"""
Email of the customer to whom gift card will be sent.
"""
userEmail: String
"""
Slug of a channel from which the email should be sent.
"""
channel: String
"""
Determine if gift card is active.
"""
isActive: Boolean!
"""
Code to use the gift card.
"""
code: String @deprecated(reason: "The code is now auto generated.")
"""
The gift card note from the staff member.
"""
note: String
}
input PriceInput {
"""
Currency code.
"""
currency: String!
"""
Amount of money.
"""
amount: PositiveDecimal!
}
"""
Delete gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_DELETED (async): A gift card was deleted.
"""
type GiftCardDelete
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_DELETED], syncEvents: []) {
giftCardErrors: [GiftCardError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [GiftCardError!]!
giftCard: GiftCard
}
"""
Deactivate a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was deactivated.
"""
type GiftCardDeactivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: []) {
"""
Deactivated gift card.
"""
giftCard: GiftCard
giftCardErrors: [GiftCardError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [GiftCardError!]!
}
"""
Update a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_UPDATED (async): A gift card was updated.
"""
type GiftCardUpdate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_UPDATED], syncEvents: []) {
giftCardErrors: [GiftCardError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [GiftCardError!]!
giftCard: GiftCard
}
input GiftCardUpdateInput @doc(category: "Gift cards") {
"""
The gift card tags to add.
"""
addTags: [String!]
"""
The gift card expiry date.
"""
expiryDate: Date
"""
Gift Card public metadata.
Added in Saleor 3.21. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Gift Card private metadata.
Added in Saleor 3.21. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
Start date of the gift card in ISO 8601 format.
"""
startDate: Date @deprecated
"""
End date of the gift card in ISO 8601 format.
"""
endDate: Date
@deprecated(reason: "Use `expiryDate` from `expirySettings` instead.")
"""
The gift card tags to remove.
"""
removeTags: [String!]
"""
The gift card balance amount.
"""
balanceAmount: PositiveDecimal
}
"""
Resend a gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for gift card resend.
"""
type GiftCardResend
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [NOTIFY_USER], syncEvents: []) {
"""
Gift card which has been sent.
"""
giftCard: GiftCard
errors: [GiftCardError!]!
}
input GiftCardResendInput @doc(category: "Gift cards") {
"""
ID of a gift card to resend.
"""
id: ID!
"""
Email to which gift card should be send.
"""
email: String
"""
Slug of a channel from which the email should be sent.
"""
channel: String!
}
"""
Adds note to the gift card.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_UPDATED (async): A gift card was updated.
"""
type GiftCardAddNote
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_UPDATED], syncEvents: []) {
"""
Gift card with the note added.
"""
giftCard: GiftCard
"""
Gift card note created.
"""
event: GiftCardEvent
errors: [GiftCardError!]!
}
input GiftCardAddNoteInput @doc(category: "Gift cards") {
"""
Note message.
"""
message: String!
}
"""
Create gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_CREATED (async): A gift card was created.
- NOTIFY_USER (async): A notification for created gift card.
"""
type GiftCardBulkCreate
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [GIFT_CARD_CREATED, NOTIFY_USER]
syncEvents: []
) {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of created gift cards.
"""
giftCards: [GiftCard!]!
errors: [GiftCardError!]!
}
input GiftCardBulkCreateInput @doc(category: "Gift cards") {
"""
The number of cards to issue.
"""
count: Int!
"""
Balance of the gift card.
"""
balance: PriceInput!
"""
The gift card tags.
"""
tags: [String!]
"""
The gift card expiry date.
"""
expiryDate: Date
"""
Determine if gift card is active.
"""
isActive: Boolean!
}
"""
Delete gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_DELETED (async): A gift card was deleted.
"""
type GiftCardBulkDelete
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
errors: [GiftCardError!]!
}
"""
Activate gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was activated.
"""
type GiftCardBulkActivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
errors: [GiftCardError!]!
}
"""
Deactivate gift cards.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- GIFT_CARD_STATUS_CHANGED (async): A gift card was deactivated.
"""
type GiftCardBulkDeactivate
@doc(category: "Gift cards")
@webhookEventsInfo(asyncEvents: [GIFT_CARD_STATUS_CHANGED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
errors: [GiftCardError!]!
}
"""
Update plugin configuration.
Requires one of the following permissions: MANAGE_PLUGINS.
"""
type PluginUpdate {
plugin: Plugin
pluginsErrors: [PluginError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PluginError!]!
}
type PluginError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PluginErrorCode!
}
enum PluginErrorCode {
GRAPHQL_ERROR
INVALID
PLUGIN_MISCONFIGURED
NOT_FOUND
REQUIRED
UNIQUE
}
input PluginUpdateInput {
"""
Indicates whether the plugin should be enabled.
"""
active: Boolean
"""
Configuration of the plugin.
"""
configuration: [ConfigurationItemInput!]
}
input ConfigurationItemInput {
"""
Name of the field to update.
"""
name: String!
"""
Value of the given field to update.
"""
value: String
}
"""
Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload.
"""
type ExternalNotificationTrigger {
errors: [ExternalNotificationError!]!
}
type ExternalNotificationError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ExternalNotificationErrorCodes!
}
enum ExternalNotificationErrorCodes {
REQUIRED
INVALID_MODEL_TYPE
NOT_FOUND
CHANNEL_INACTIVE
}
input ExternalNotificationTriggerInput {
"""
The list of customers or orders node IDs that will be serialized and included in the notification payload.
"""
ids: [ID!]!
"""
Additional payload that will be merged with the one based on the business object ID.
"""
extraPayload: JSONString
"""
External event type. This field is passed to a plugin as an event type.
"""
externalEventType: String!
}
"""
Creates a new promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_CREATED (async): A promotion was created.
- PROMOTION_STARTED (async): Optionally called if promotion was started.
"""
type PromotionCreate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [PROMOTION_CREATED, PROMOTION_STARTED]
syncEvents: []
) {
errors: [PromotionCreateError!]!
promotion: Promotion
}
type PromotionCreateError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionCreateErrorCode!
"""
Index of an input list item that caused the error.
"""
index: Int
"""
Limit of rules with orderPredicate defined.
"""
rulesLimit: Int
"""
Number of rules with orderPredicate defined exceeding the limit.
"""
rulesLimitExceedBy: Int
"""
Limit of gifts assigned to promotion rule.
"""
giftsLimit: Int
"""
Number of gifts defined for this promotion rule exceeding the limit.
"""
giftsLimitExceedBy: Int
}
enum PromotionCreateErrorCode {
GRAPHQL_ERROR
NOT_FOUND
REQUIRED
INVALID
MULTIPLE_CURRENCIES_NOT_ALLOWED
INVALID_PRECISION
MISSING_CHANNELS
RULES_NUMBER_LIMIT
GIFTS_NUMBER_LIMIT
INVALID_GIFT_TYPE
}
input PromotionCreateInput @doc(category: "Discounts") {
"""
Promotion description.
"""
description: JSON
"""
The start date of the promotion in ISO 8601 format.
"""
startDate: DateTime
"""
The end date of the promotion in ISO 8601 format.
"""
endDate: DateTime
"""
Promotion name.
"""
name: String!
"""
Defines the promotion type. Implicate the required promotion rules predicate type and whether the promotion rules will give the catalogue or order discount.
Added in Saleor 3.19.
"""
type: PromotionTypeEnum!
"""
List of promotion rules.
"""
rules: [PromotionRuleInput!]
}
input PromotionRuleInput @doc(category: "Discounts") {
"""
Promotion rule name.
"""
name: String
"""
Promotion rule description.
"""
description: JSON
"""
Defines the conditions on the catalogue level that must be met for the reward to be applied.
"""
cataloguePredicate: CataloguePredicateInput
"""
Defines the conditions on the checkout/draft order level that must be met for the reward to be applied.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderPredicate: OrderPredicateInput
"""
Defines the promotion rule reward value type. Must be provided together with reward value.
"""
rewardValueType: RewardValueTypeEnum
"""
Defines the discount value. Required when catalogue predicate is provided.
"""
rewardValue: PositiveDecimal
"""
Defines the reward type of the promotion rule.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
rewardType: RewardTypeEnum
"""
List of channel ids to which the rule should apply to.
"""
channels: [ID!]
"""
Product variant IDs available as a gift to choose.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
gifts: [ID!]
}
input CataloguePredicateInput @doc(category: "Discounts") {
"""
Defines the product variant conditions to be met.
"""
variantPredicate: ProductVariantWhereInput
"""
Defines the product conditions to be met.
"""
productPredicate: ProductWhereInput
"""
Defines the category conditions to be met.
"""
categoryPredicate: CategoryWhereInput
"""
Defines the collection conditions to be met.
"""
collectionPredicate: CollectionWhereInput
"""
List of conditions that must be met.
"""
AND: [CataloguePredicateInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [CataloguePredicateInput!]
}
input OrderPredicateInput @doc(category: "Discounts") {
"""
Defines the conditions related to checkout and order objects.
"""
discountedObjectPredicate: DiscountedObjectWhereInput
"""
List of conditions that must be met.
"""
AND: [OrderPredicateInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [OrderPredicateInput!]
}
input DiscountedObjectWhereInput @doc(category: "Discounts") {
"""
Filter by the base subtotal price.
"""
baseSubtotalPrice: DecimalFilterInput
"""
Filter by the base total price.
"""
baseTotalPrice: DecimalFilterInput
"""
List of conditions that must be met.
"""
AND: [DiscountedObjectWhereInput!]
"""
A list of conditions of which at least one must be met.
"""
OR: [DiscountedObjectWhereInput!]
}
"""
Updates an existing promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_UPDATED (async): A promotion was updated.
- PROMOTION_STARTED (async): Optionally called if promotion was started.
- PROMOTION_ENDED (async): Optionally called if promotion was ended.
"""
type PromotionUpdate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [PROMOTION_UPDATED, PROMOTION_STARTED, PROMOTION_ENDED]
syncEvents: []
) {
errors: [PromotionUpdateError!]!
promotion: Promotion
}
type PromotionUpdateError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionUpdateErrorCode!
}
enum PromotionUpdateErrorCode {
GRAPHQL_ERROR
NOT_FOUND
REQUIRED
INVALID
}
input PromotionUpdateInput {
"""
Promotion description.
"""
description: JSON
"""
The start date of the promotion in ISO 8601 format.
"""
startDate: DateTime
"""
The end date of the promotion in ISO 8601 format.
"""
endDate: DateTime
"""
Promotion name.
"""
name: String
}
"""
Deletes a promotion.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_DELETED (async): A promotion was deleted.
"""
type PromotionDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_DELETED], syncEvents: []) {
errors: [PromotionDeleteError!]!
promotion: Promotion
}
type PromotionDeleteError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionDeleteErrorCode!
}
enum PromotionDeleteErrorCode {
GRAPHQL_ERROR
NOT_FOUND
}
"""
Creates a new promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_CREATED (async): A promotion rule was created.
"""
type PromotionRuleCreate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_CREATED], syncEvents: []) {
errors: [PromotionRuleCreateError!]!
promotionRule: PromotionRule
}
type PromotionRuleCreateError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionRuleCreateErrorCode!
"""
Limit of rules with orderPredicate defined.
"""
rulesLimit: Int
"""
Number of rules with orderPredicate defined exceeding the limit.
"""
rulesLimitExceedBy: Int
"""
Limit of gifts assigned to promotion rule.
"""
giftsLimit: Int
"""
Number of gifts defined for this promotion rule exceeding the limit.
"""
giftsLimitExceedBy: Int
}
enum PromotionRuleCreateErrorCode {
GRAPHQL_ERROR
NOT_FOUND
REQUIRED
INVALID
MULTIPLE_CURRENCIES_NOT_ALLOWED
INVALID_PRECISION
MISSING_CHANNELS
RULES_NUMBER_LIMIT
GIFTS_NUMBER_LIMIT
INVALID_GIFT_TYPE
}
input PromotionRuleCreateInput {
"""
Promotion rule name.
"""
name: String
"""
Promotion rule description.
"""
description: JSON
"""
Defines the conditions on the catalogue level that must be met for the reward to be applied.
"""
cataloguePredicate: CataloguePredicateInput
"""
Defines the conditions on the checkout/draft order level that must be met for the reward to be applied.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderPredicate: OrderPredicateInput
"""
Defines the promotion rule reward value type. Must be provided together with reward value.
"""
rewardValueType: RewardValueTypeEnum
"""
Defines the discount value. Required when catalogue predicate is provided.
"""
rewardValue: PositiveDecimal
"""
Defines the reward type of the promotion rule.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
rewardType: RewardTypeEnum
"""
List of channel ids to which the rule should apply to.
"""
channels: [ID!]
"""
Product variant IDs available as a gift to choose.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
gifts: [ID!]
"""
The ID of the promotion that rule belongs to.
"""
promotion: ID!
}
"""
Updates an existing promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_UPDATED (async): A promotion rule was updated.
"""
type PromotionRuleUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_UPDATED], syncEvents: []) {
errors: [PromotionRuleUpdateError!]!
promotionRule: PromotionRule
}
type PromotionRuleUpdateError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionRuleUpdateErrorCode!
"""
List of channel IDs which causes the error.
"""
channels: [ID!]
"""
Limit of gifts assigned to promotion rule.
"""
giftsLimit: Int
"""
Number of gifts defined for this promotion rule exceeding the limit.
"""
giftsLimitExceedBy: Int
}
enum PromotionRuleUpdateErrorCode {
GRAPHQL_ERROR
NOT_FOUND
INVALID
REQUIRED
DUPLICATED_INPUT_ITEM
MISSING_CHANNELS
MULTIPLE_CURRENCIES_NOT_ALLOWED
INVALID_PRECISION
INVALID_GIFT_TYPE
GIFTS_NUMBER_LIMIT
}
input PromotionRuleUpdateInput {
"""
Promotion rule name.
"""
name: String
"""
Promotion rule description.
"""
description: JSON
"""
Defines the conditions on the catalogue level that must be met for the reward to be applied.
"""
cataloguePredicate: CataloguePredicateInput
"""
Defines the conditions on the checkout/draft order level that must be met for the reward to be applied.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderPredicate: OrderPredicateInput
"""
Defines the promotion rule reward value type. Must be provided together with reward value.
"""
rewardValueType: RewardValueTypeEnum
"""
Defines the discount value. Required when catalogue predicate is provided.
"""
rewardValue: PositiveDecimal
"""
Defines the reward type of the promotion rule.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
rewardType: RewardTypeEnum
"""
List of channel ids to add.
"""
addChannels: [ID!]
"""
List of channel ids to remove.
"""
removeChannels: [ID!]
"""
List of variant IDs available as a gift to add.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
addGifts: [ID!]
"""
List of variant IDs available as a gift to remove.
Added in Saleor 3.19.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
removeGifts: [ID!]
}
"""
Deletes a promotion rule.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_RULE_DELETED (async): A promotion rule was deleted.
"""
type PromotionRuleDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_RULE_DELETED], syncEvents: []) {
errors: [PromotionRuleDeleteError!]!
promotionRule: PromotionRule
}
type PromotionRuleDeleteError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PromotionRuleDeleteErrorCode!
}
enum PromotionRuleDeleteErrorCode {
GRAPHQL_ERROR
NOT_FOUND
}
"""
Creates/updates translations for a promotion.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type PromotionTranslate @doc(category: "Discounts") {
errors: [TranslationError!]!
promotion: Promotion
}
input PromotionTranslationInput {
name: String
"""
Translated promotion description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSON
}
"""
Creates/updates translations for a promotion rule.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type PromotionRuleTranslate @doc(category: "Discounts") {
errors: [TranslationError!]!
promotionRule: PromotionRule
}
input PromotionRuleTranslationInput {
name: String
"""
Translated promotion description.
Rich text format. For reference see https://editorjs.io/
"""
description: JSON
}
"""
Deletes promotions.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- PROMOTION_DELETED (async): A promotion was deleted.
"""
type PromotionBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [PROMOTION_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
errors: [DiscountError!]!
}
type DiscountError @doc(category: "Discounts") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
List of products IDs which causes the error.
"""
products: [ID!]
"""
The error code.
"""
code: DiscountErrorCode!
"""
List of channels IDs which causes the error.
"""
channels: [ID!]
"""
List of voucher codes which causes the error.
Added in Saleor 3.18.
"""
voucherCodes: [String!]
}
enum DiscountErrorCode @doc(category: "Discounts") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT
DUPLICATED_INPUT_ITEM
VOUCHER_ALREADY_USED
}
"""
Creates a new sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_CREATED (async): A sale was created.
"""
type SaleCreate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_CREATED], syncEvents: []) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
sale: Sale
}
input SaleInput @doc(category: "Discounts") {
"""
Voucher name.
"""
name: String
"""
Fixed or percentage.
"""
type: DiscountValueTypeEnum
"""
Value of the voucher.
"""
value: PositiveDecimal
"""
Products related to the discount.
"""
products: [ID!]
variants: [ID!]
"""
Categories related to the discount.
"""
categories: [ID!]
"""
Collections related to the discount.
"""
collections: [ID!]
"""
Start date of the voucher in ISO 8601 format.
"""
startDate: DateTime
"""
End date of the voucher in ISO 8601 format.
"""
endDate: DateTime
}
"""
Deletes a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_DELETED (async): A sale was deleted.
"""
type SaleDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_DELETED], syncEvents: []) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
sale: Sale
}
"""
Deletes sales.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_DELETED (async): A sale was deleted.
"""
type SaleBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
"""
Updates a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
- SALE_TOGGLE (async): Optionally triggered when a sale is started or stopped.
"""
type SaleUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED, SALE_TOGGLE], syncEvents: []) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
sale: Sale
}
"""
Adds products, categories, collections to a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
"""
type SaleAddCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED], syncEvents: []) {
"""
Sale of which catalogue IDs will be modified.
"""
sale: Sale
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
input CatalogueInput @doc(category: "Discounts") {
"""
Products related to the discount.
"""
products: [ID!]
"""
Categories related to the discount.
"""
categories: [ID!]
"""
Collections related to the discount.
"""
collections: [ID!]
"""
Product variant related to the discount.
"""
variants: [ID!]
}
"""
Removes products, categories, collections from a sale.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- SALE_UPDATED (async): A sale was updated.
"""
type SaleRemoveCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [SALE_UPDATED], syncEvents: []) {
"""
Sale of which catalogue IDs will be modified.
"""
sale: Sale
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
"""
Creates/updates translations for a sale.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type SaleTranslate @doc(category: "Discounts") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
sale: Sale
}
"""
Manage sale's availability in channels.
Requires one of the following permissions: MANAGE_DISCOUNTS.
"""
type SaleChannelListingUpdate @doc(category: "Discounts") {
"""
An updated sale instance.
"""
sale: Sale
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
input SaleChannelListingInput @doc(category: "Discounts") {
"""
List of channels to which the sale should be assigned.
"""
addChannels: [SaleChannelListingAddInput!]
"""
List of channels from which the sale should be unassigned.
"""
removeChannels: [ID!]
}
input SaleChannelListingAddInput @doc(category: "Discounts") {
"""
ID of a channel.
"""
channelId: ID!
"""
The value of the discount.
"""
discountValue: PositiveDecimal!
}
"""
Creates a new voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CREATED (async): A voucher was created.
- VOUCHER_CODES_CREATED (async): A voucher codes were created.
"""
type VoucherCreate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_CREATED, VOUCHER_CODES_CREATED]
syncEvents: []
) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
voucher: Voucher
}
input VoucherInput @doc(category: "Discounts") {
"""
Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER.
"""
type: VoucherTypeEnum
"""
Voucher name.
"""
name: String
"""
Code to use the voucher.
"""
code: String @deprecated(reason: "Use `addCodes` instead.")
"""
List of codes to add.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
addCodes: [String!]
"""
Start date of the voucher in ISO 8601 format.
"""
startDate: DateTime
"""
End date of the voucher in ISO 8601 format.
"""
endDate: DateTime
"""
Choices: fixed or percentage.
"""
discountValueType: DiscountValueTypeEnum
"""
Products discounted by the voucher.
"""
products: [ID!]
"""
Variants discounted by the voucher.
"""
variants: [ID!]
"""
Collections discounted by the voucher.
"""
collections: [ID!]
"""
Categories discounted by the voucher.
"""
categories: [ID!]
"""
Minimal quantity of checkout items required to apply the voucher.
"""
minCheckoutItemsQuantity: Int
"""
Country codes that can be used with the shipping voucher.
"""
countries: [String!]
"""
Voucher should be applied to the cheapest item or entire order.
"""
applyOncePerOrder: Boolean
"""
Voucher should be applied once per customer.
"""
applyOncePerCustomer: Boolean
"""
Voucher can be used only by staff user.
"""
onlyForStaff: Boolean
"""
When set to 'True', each voucher code can be used only once; otherwise, codes can be used multiple times depending on `usageLimit`.
The option can only be changed if none of the voucher codes have been used.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
singleUse: Boolean
"""
Limit number of times this voucher can be used in total.
"""
usageLimit: Int
}
"""
Deletes a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_DELETED (async): A voucher was deleted.
"""
type VoucherDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_DELETED], syncEvents: []) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
voucher: Voucher
}
"""
Deletes vouchers.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_DELETED (async): A voucher was deleted.
"""
type VoucherBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
"""
Updates a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
- VOUCHER_CODES_CREATED (async): A voucher code was created.
"""
type VoucherUpdate
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_UPDATED, VOUCHER_CODES_CREATED]
syncEvents: []
) {
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
voucher: Voucher
}
"""
Adds products, categories, collections to a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
type VoucherAddCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: []) {
"""
Voucher of which catalogue IDs will be modified.
"""
voucher: Voucher
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
"""
Removes products, categories, collections from a voucher.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
type VoucherRemoveCatalogues
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: []) {
"""
Voucher of which catalogue IDs will be modified.
"""
voucher: Voucher
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
"""
Creates/updates translations for a voucher.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type VoucherTranslate @doc(category: "Discounts") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
voucher: Voucher
}
"""
Manage voucher's availability in channels.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_UPDATED (async): A voucher was updated.
"""
type VoucherChannelListingUpdate
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_UPDATED], syncEvents: []) {
"""
An updated voucher instance.
"""
voucher: Voucher
discountErrors: [DiscountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [DiscountError!]!
}
input VoucherChannelListingInput @doc(category: "Discounts") {
"""
List of channels to which the voucher should be assigned.
"""
addChannels: [VoucherChannelListingAddInput!]
"""
List of channels from which the voucher should be unassigned.
"""
removeChannels: [ID!]
}
input VoucherChannelListingAddInput @doc(category: "Discounts") {
"""
ID of a channel.
"""
channelId: ID!
"""
Value of the voucher.
"""
discountValue: PositiveDecimal
"""
Min purchase amount required to apply the voucher.
"""
minAmountSpent: PositiveDecimal
}
"""
Deletes voucher codes.
Added in Saleor 3.18.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CODES_DELETED (async): A voucher codes were deleted.
"""
type VoucherCodeBulkDelete
@doc(category: "Discounts")
@webhookEventsInfo(asyncEvents: [VOUCHER_CODES_DELETED], syncEvents: []) {
"""
Returns how many codes were deleted.
"""
count: Int!
errors: [VoucherCodeBulkDeleteError!]!
}
type VoucherCodeBulkDeleteError @doc(category: "Discounts") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: VoucherCodeBulkDeleteErrorCode!
"""
List of voucher codes which causes the error.
"""
voucherCodes: [ID!]
}
enum VoucherCodeBulkDeleteErrorCode @doc(category: "Discounts") {
GRAPHQL_ERROR
NOT_FOUND
INVALID
}
"""
Export products to csv file.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for the exported file.
- PRODUCT_EXPORT_COMPLETED (async): A notification for the exported file.
"""
type ExportProducts
@doc(category: "Products")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, PRODUCT_EXPORT_COMPLETED]
syncEvents: []
) {
"""
The newly created export file job which is responsible for export data.
"""
exportFile: ExportFile
exportErrors: [ExportError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ExportError!]!
}
type ExportError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ExportErrorCode!
}
enum ExportErrorCode {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
input ExportProductsInput @doc(category: "Products") {
"""
Determine which products should be exported.
"""
scope: ExportScope!
"""
Filtering options for products.
"""
filter: ProductFilterInput
"""
List of products IDs to export.
"""
ids: [ID!]
"""
Input with info about fields which should be exported.
"""
exportInfo: ExportInfoInput
"""
Type of exported file.
"""
fileType: FileTypesEnum!
}
enum ExportScope @doc(category: "Products") {
"""
Export all products.
"""
ALL
"""
Export products with given ids.
"""
IDS
"""
Export the filtered products.
"""
FILTER
}
input ExportInfoInput @doc(category: "Products") {
"""
List of attribute ids witch should be exported.
"""
attributes: [ID!]
"""
List of warehouse ids witch should be exported.
"""
warehouses: [ID!]
"""
List of channels ids which should be exported.
"""
channels: [ID!]
"""
List of product fields witch should be exported.
"""
fields: [ProductFieldEnum!]
}
enum ProductFieldEnum @doc(category: "Products") {
NAME
DESCRIPTION
PRODUCT_TYPE
CATEGORY
PRODUCT_WEIGHT
COLLECTIONS
CHARGE_TAXES
PRODUCT_MEDIA
VARIANT_ID
VARIANT_SKU
VARIANT_WEIGHT
VARIANT_MEDIA
}
enum FileTypesEnum {
CSV
XLSX
}
"""
Export gift cards to csv file.
Requires one of the following permissions: MANAGE_GIFT_CARD.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for the exported file.
- GIFT_CARD_EXPORT_COMPLETED (async): A notification for the exported file.
"""
type ExportGiftCards
@doc(category: "Gift cards")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, GIFT_CARD_EXPORT_COMPLETED]
syncEvents: []
) {
"""
The newly created export file job which is responsible for export data.
"""
exportFile: ExportFile
errors: [ExportError!]!
}
input ExportGiftCardsInput @doc(category: "Gift cards") {
"""
Determine which gift cards should be exported.
"""
scope: ExportScope!
"""
Filtering options for gift cards.
"""
filter: GiftCardFilterInput
"""
List of gift cards IDs to export.
"""
ids: [ID!]
"""
Type of exported file.
"""
fileType: FileTypesEnum!
}
"""
Export voucher codes to csv/xlsx file.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
Requires one of the following permissions: MANAGE_DISCOUNTS.
Triggers the following webhook events:
- VOUCHER_CODE_EXPORT_COMPLETED (async): A notification for the exported file.
"""
type ExportVoucherCodes
@doc(category: "Discounts")
@webhookEventsInfo(
asyncEvents: [VOUCHER_CODE_EXPORT_COMPLETED]
syncEvents: []
) {
"""
The newly created export file job which is responsible for export data.
"""
exportFile: ExportFile
errors: [ExportError!]!
}
input ExportVoucherCodesInput @doc(category: "Discounts") {
"""
The ID of the voucher. If provided, exports all codes belonging to the voucher.
"""
voucherId: ID
"""
List of voucher code IDs to export.
"""
ids: [ID!]
"""
Type of exported file.
"""
fileType: FileTypesEnum!
}
"""
Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER.
"""
type FileUpload {
uploadedFile: File
uploadErrors: [UploadError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [UploadError!]!
}
type UploadError {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: UploadErrorCode!
}
enum UploadErrorCode {
GRAPHQL_ERROR
}
"""
Adds a gift card or a voucher to a checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutAddPromoCode
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
The checkout with the added gift card or voucher.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
type CheckoutError @doc(category: "Checkout") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: CheckoutErrorCode!
"""
List of variant IDs which causes the error.
"""
variants: [ID!]
"""
List of line Ids which cause the error.
"""
lines: [ID!]
"""
A type of address that causes the error.
"""
addressType: AddressTypeEnum
}
enum CheckoutErrorCode @doc(category: "Checkout") {
BILLING_ADDRESS_NOT_SET
CHECKOUT_NOT_FULLY_PAID
GRAPHQL_ERROR
PRODUCT_NOT_PUBLISHED
PRODUCT_UNAVAILABLE_FOR_PURCHASE
INSUFFICIENT_STOCK
INVALID
INVALID_SHIPPING_METHOD
NOT_FOUND
PAYMENT_ERROR
QUANTITY_GREATER_THAN_LIMIT
REQUIRED
SHIPPING_ADDRESS_NOT_SET
SHIPPING_METHOD_NOT_APPLICABLE
DELIVERY_METHOD_NOT_APPLICABLE
SHIPPING_METHOD_NOT_SET
SHIPPING_NOT_REQUIRED
TAX_ERROR
UNIQUE
VOUCHER_NOT_APPLICABLE
GIFT_CARD_NOT_APPLICABLE
ZERO_QUANTITY
MISSING_CHANNEL_SLUG
CHANNEL_INACTIVE
UNAVAILABLE_VARIANT_IN_CHANNEL
EMAIL_NOT_SET
NO_LINES
INACTIVE_PAYMENT
NON_EDITABLE_GIFT_LINE
NON_REMOVABLE_GIFT_LINE
SHIPPING_CHANGE_FORBIDDEN
MISSING_ADDRESS_DATA
}
"""
Update billing address in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutBillingAddressUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
input CheckoutAddressValidationRules @doc(category: "Checkout") {
"""
Determines if an error should be raised when the provided address doesn't have all the required fields. The list of required fields is dynamic and depends on the country code (use the `addressValidationRules` query to fetch them). Note: country code is mandatory for all addresses regardless of the rules provided in this input.
"""
checkRequiredFields: Boolean = true
"""
Determines if an error should be raised when the provided address doesn't match the expected format. Example: using letters for postal code when the numbers are expected.
"""
checkFieldsFormat: Boolean = true
"""
Determines if Saleor should apply normalization on address fields. Example: converting city field to uppercase letters.
"""
enableFieldsNormalization: Boolean = true
}
"""
Completes the checkout. As a result a new order is created. The mutation allows to create the unpaid order when setting `orderSettings.allowUnpaidOrders` for given `Channel` is set to `true`. When `orderSettings.allowUnpaidOrders` is set to `false`, checkout can be completed only when attached `Payment`/`TransactionItem`s fully cover the checkout's total. When processing the checkout with `Payment`, in case of required additional confirmation step like 3D secure, the `confirmationNeeded` flag will be set to True and no order will be created until payment is confirmed with second call of this mutation.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
- ORDER_CREATED (async): Triggered when order is created.
- NOTIFY_USER (async): A notification for order placement.
- NOTIFY_USER (async): A staff notification for order placement.
- ORDER_UPDATED (async): Triggered when order received the update after placement.
- ORDER_PAID (async): Triggered when newly created order is paid.
- ORDER_FULLY_PAID (async): Triggered when newly created order is fully paid.
- ORDER_CONFIRMED (async): Optionally triggered when newly created order are automatically marked as confirmed.
"""
type CheckoutComplete
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [
ORDER_CREATED
NOTIFY_USER
NOTIFY_USER
ORDER_UPDATED
ORDER_PAID
ORDER_FULLY_PAID
ORDER_CONFIRMED
]
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
CHECKOUT_CALCULATE_TAXES
]
) {
"""
Placed order.
"""
order: Order
"""
Set to true if payment needs to be confirmed before checkout is complete.
"""
confirmationNeeded: Boolean!
"""
Confirmation data used to process additional authorization steps.
"""
confirmationData: JSONString
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Create a new checkout.
`skipValidation` field requires HANDLE_CHECKOUTS and AUTHENTICATED_APP permissions.
Triggers the following webhook events:
- CHECKOUT_CREATED (async): A checkout was created.
"""
type CheckoutCreate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_CREATED], syncEvents: []) {
"""
Whether the checkout was created or the current active one was returned. Refer to checkoutLinesAdd and checkoutLinesUpdate to merge a cart with an active checkout.
"""
created: Boolean @deprecated(reason: "Always returns `true`.")
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
checkout: Checkout
}
input CheckoutCreateInput @doc(category: "Checkout") {
"""
Slug of a channel in which to create a checkout.
"""
channel: String
"""
A list of checkout lines, each containing information about an item in the checkout.
"""
lines: [CheckoutLineInput!]!
"""
The customer's email address.
"""
email: String
"""
Indicates whether the shipping address should be saved to the user’s address book upon checkout completion.Can only be set when a shipping address is provided. If not specified along with the address, the default behavior is to save the address.
Added in Saleor 3.21.
"""
saveShippingAddress: Boolean
"""
The mailing address to where the checkout will be shipped. Note: the address will be ignored if the checkout doesn't contain shippable items. `skipValidation` requires HANDLE_CHECKOUTS and AUTHENTICATED_APP permissions.
"""
shippingAddress: AddressInput
"""
Indicates whether the billing address should be saved to the user’s address book upon checkout completion. Can only be set when a billing address is provided. If not specified along with the address, the default behavior is to save the address.
Added in Saleor 3.21.
"""
saveBillingAddress: Boolean
"""
Billing address of the customer. `skipValidation` requires HANDLE_CHECKOUTS and AUTHENTICATED_APP permissions.
"""
billingAddress: AddressInput
"""
Checkout language code.
"""
languageCode: LanguageCodeEnum
"""
The checkout validation rules that can be changed.
"""
validationRules: CheckoutValidationRules
"""
Checkout public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
Added in Saleor 3.21.
"""
metadata: [MetadataInput!]
"""
Checkout private metadata. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_CHECKOUTS
Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
Added in Saleor 3.21.
"""
privateMetadata: [MetadataInput!]
}
input CheckoutLineInput @doc(category: "Checkout") {
"""
The number of items purchased.
"""
quantity: Int!
"""
ID of the product variant.
"""
variantId: ID!
"""
Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used.
"""
price: PositiveDecimal
"""
Flag that allow force splitting the same variant into multiple lines by skipping the matching logic.
"""
forceNewLine: Boolean = false
"""
Fields required to update the object's metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
}
input CheckoutValidationRules @doc(category: "Checkout") {
"""
The validation rules that can be applied to provided shipping address data.
"""
shippingAddress: CheckoutAddressValidationRules
"""
The validation rules that can be applied to provided billing address data.
"""
billingAddress: CheckoutAddressValidationRules
}
"""
Create new checkout from existing order.
"""
type CheckoutCreateFromOrder @doc(category: "Checkout") {
"""
Variants that were not attached to the checkout.
"""
unavailableVariants: [CheckoutCreateFromOrderUnavailableVariant!]
"""
Created checkout.
"""
checkout: Checkout
errors: [CheckoutCreateFromOrderError!]!
}
type CheckoutCreateFromOrderUnavailableVariant @doc(category: "Checkout") {
"""
The error message.
"""
message: String!
"""
The error code.
"""
code: CheckoutCreateFromOrderUnavailableVariantErrorCode!
"""
Variant ID that is unavailable.
"""
variantId: ID!
"""
Order line ID that is unavailable.
"""
lineId: ID!
}
enum CheckoutCreateFromOrderUnavailableVariantErrorCode
@doc(category: "Checkout") {
NOT_FOUND
PRODUCT_UNAVAILABLE_FOR_PURCHASE
UNAVAILABLE_VARIANT_IN_CHANNEL
PRODUCT_NOT_PUBLISHED
QUANTITY_GREATER_THAN_LIMIT
INSUFFICIENT_STOCK
}
type CheckoutCreateFromOrderError @doc(category: "Checkout") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: CheckoutCreateFromOrderErrorCode!
}
enum CheckoutCreateFromOrderErrorCode @doc(category: "Checkout") {
GRAPHQL_ERROR
INVALID
ORDER_NOT_FOUND
CHANNEL_INACTIVE
TAX_ERROR
}
"""
Sets the customer as the owner of the checkout.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutCustomerAttach
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Removes the user assigned as the owner of the checkout.
Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutCustomerDetach
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Updates customer note in the existing checkout object.
Added in Saleor 3.21.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutCustomerNoteUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Updates email address in the existing checkout object.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutEmailUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Deletes a CheckoutLine.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutLineDelete
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Deletes checkout lines.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutLinesDelete
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
errors: [CheckoutError!]!
}
"""
Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutLinesAdd
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Updates checkout line in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutLinesUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
input CheckoutLineUpdateInput @doc(category: "Checkout") {
"""
ID of the product variant.
"""
variantId: ID @deprecated(reason: "Use `lineId` instead.")
"""
The number of items purchased. Optional for apps, required for any other users.
"""
quantity: Int
"""
Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used.
"""
price: PositiveDecimal
"""
ID of the line.
"""
lineId: ID
"""
Checkout line public metadata. Will add and update keys. To delete keys use deleteMetadata mutation.
Added in Saleor 3.21. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
}
"""
Remove a gift card or a voucher from a checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutRemovePromoCode
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
The checkout with the removed gift card or voucher.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Create a new payment for given checkout.
"""
type CheckoutPaymentCreate @doc(category: "Checkout") {
"""
Related checkout object.
"""
checkout: Checkout
"""
A newly created payment.
"""
payment: Payment
paymentErrors: [PaymentError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PaymentError!]!
}
input PaymentInput @doc(category: "Payments") {
"""
A gateway to use with that payment.
"""
gateway: String!
"""
Client-side generated payment token, representing customer's billing data in a secure manner.
"""
token: String
"""
Total amount of the transaction, including all taxes and discounts. If no amount is provided, the checkout total will be used.
"""
amount: PositiveDecimal
"""
URL of a storefront view where user should be redirected after requiring additional actions. Payment with additional actions will not be finished if this field is not provided.
"""
returnUrl: String
"""
Payment store type.
"""
storePaymentMethod: StorePaymentMethodEnum = NONE
"""
User public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
}
"""
Enum representing the type of a payment storage in a gateway.
"""
enum StorePaymentMethodEnum @doc(category: "Payments") {
"""
On session storage type. The payment is stored only to be reused when the customer is present in the checkout flow.
"""
ON_SESSION
"""
Off session storage type. The payment is stored to be reused even if the customer is absent.
"""
OFF_SESSION
"""
Storage is disabled. The payment is not stored.
"""
NONE
}
"""
Update shipping address in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutShippingAddressUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Updates the shipping method of the checkout.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Triggered when updating the checkout shipping method with the external one.
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutShippingMethodUpdate
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [CHECKOUT_UPDATED]
syncEvents: [SHIPPING_LIST_METHODS_FOR_CHECKOUT]
) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Updates the delivery method (shipping method or pick up point) of the checkout. Updates the checkout shipping_address for click and collect delivery for a warehouse address.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Triggered when updating the checkout delivery method with the external one.
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutDeliveryMethodUpdate
@doc(category: "Checkout")
@webhookEventsInfo(
asyncEvents: [CHECKOUT_UPDATED]
syncEvents: [SHIPPING_LIST_METHODS_FOR_CHECKOUT]
) {
"""
An updated checkout.
"""
checkout: Checkout
errors: [CheckoutError!]!
}
"""
Update language code in the existing checkout.
Triggers the following webhook events:
- CHECKOUT_UPDATED (async): A checkout was updated.
"""
type CheckoutLanguageCodeUpdate
@doc(category: "Checkout")
@webhookEventsInfo(asyncEvents: [CHECKOUT_UPDATED], syncEvents: []) {
"""
An updated checkout.
"""
checkout: Checkout
checkoutErrors: [CheckoutError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [CheckoutError!]!
}
"""
Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS.
Triggers the following webhook events:
- SHIPPING_LIST_METHODS_FOR_CHECKOUT (sync): Optionally triggered when cached external shipping methods are invalid.
- CHECKOUT_FILTER_SHIPPING_METHODS (sync): Optionally triggered when cached filtered shipping methods are invalid.
- CHECKOUT_CALCULATE_TAXES (sync): Optionally triggered when checkout prices are expired.
- ORDER_CREATED (async): Triggered when order is created.
- NOTIFY_USER (async): A notification for order placement.
- NOTIFY_USER (async): A staff notification for order placement.
- ORDER_UPDATED (async): Triggered when order received the update after placement.
- ORDER_PAID (async): Triggered when newly created order is paid.
- ORDER_FULLY_PAID (async): Triggered when newly created order is fully paid.
- ORDER_CONFIRMED (async): Optionally triggered when newly created order are automatically marked as confirmed.
"""
type OrderCreateFromCheckout
@doc(category: "Orders")
@webhookEventsInfo(
asyncEvents: [
ORDER_CREATED
NOTIFY_USER
NOTIFY_USER
ORDER_UPDATED
ORDER_PAID
ORDER_FULLY_PAID
ORDER_CONFIRMED
]
syncEvents: [
SHIPPING_LIST_METHODS_FOR_CHECKOUT
CHECKOUT_FILTER_SHIPPING_METHODS
CHECKOUT_CALCULATE_TAXES
]
) {
"""
Placed order.
"""
order: Order
errors: [OrderCreateFromCheckoutError!]!
}
type OrderCreateFromCheckoutError @doc(category: "Orders") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: OrderCreateFromCheckoutErrorCode!
"""
List of variant IDs which causes the error.
"""
variants: [ID!]
"""
List of line Ids which cause the error.
"""
lines: [ID!]
}
enum OrderCreateFromCheckoutErrorCode @doc(category: "Orders") {
GRAPHQL_ERROR
CHECKOUT_NOT_FOUND
CHANNEL_INACTIVE
INSUFFICIENT_STOCK
VOUCHER_NOT_APPLICABLE
GIFT_CARD_NOT_APPLICABLE
TAX_ERROR
SHIPPING_METHOD_NOT_SET
BILLING_ADDRESS_NOT_SET
SHIPPING_ADDRESS_NOT_SET
INVALID_SHIPPING_METHOD
NO_LINES
EMAIL_NOT_SET
UNAVAILABLE_VARIANT_IN_CHANNEL
}
"""
Creates new channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_CREATED (async): A channel was created.
"""
type ChannelCreate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_CREATED], syncEvents: []) {
channelErrors: [ChannelError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ChannelError!]!
channel: Channel
}
type ChannelError @doc(category: "Channels") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: ChannelErrorCode!
"""
List of shipping zone IDs which causes the error.
"""
shippingZones: [ID!]
"""
List of warehouses IDs which causes the error.
"""
warehouses: [ID!]
}
enum ChannelErrorCode @doc(category: "Channels") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
CHANNELS_CURRENCY_MUST_BE_THE_SAME
CHANNEL_WITH_ORDERS
DUPLICATED_INPUT_ITEM
}
input ChannelCreateInput @doc(category: "Channels") {
"""
Determine if channel will be set active or not.
"""
isActive: Boolean
"""
The channel stock settings.
"""
stockSettings: StockSettingsInput
"""
List of shipping zones to assign to the channel.
"""
addShippingZones: [ID!]
"""
List of warehouses to assign to the channel.
"""
addWarehouses: [ID!]
"""
The channel order settings
"""
orderSettings: OrderSettingsInput
"""
Channel public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Channel private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
The channel checkout settings
"""
checkoutSettings: CheckoutSettingsInput
"""
The channel payment settings
"""
paymentSettings: PaymentSettingsInput
"""
Name of the channel.
"""
name: String!
"""
Slug of the channel.
"""
slug: String!
"""
Currency of the channel.
"""
currencyCode: String!
"""
Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided.
"""
defaultCountry: CountryCode!
}
input StockSettingsInput @doc(category: "Products") {
"""
Allocation strategy options. Strategy defines the preference of warehouses for allocations and reservations.
"""
allocationStrategy: AllocationStrategyEnum!
}
input OrderSettingsInput @doc(category: "Orders") {
"""
When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately. By default set to True
"""
automaticallyConfirmAllNewOrders: Boolean
"""
When enabled, all non-shippable gift card orders will be fulfilled automatically. By default set to True.
"""
automaticallyFulfillNonShippableGiftCard: Boolean
"""
Expiration time in minutes. Default null - means do not expire any orders. Enter 0 or null to disable.
"""
expireOrdersAfter: Minute
"""
The time in days after expired orders will be deleted.Allowed range is from 1 to 120.
"""
deleteExpiredOrdersAfter: Day
"""
Determine what strategy will be used to mark the order as paid. Based on the chosen option, the proper object will be created and attached to the order when it's manually marked as paid.
`PAYMENT_FLOW` - [default option] creates the `Payment` object.
`TRANSACTION_FLOW` - creates the `TransactionItem` object.
"""
markAsPaidStrategy: MarkAsPaidStrategyEnum
"""
Determine if it is possible to place unpaid order by calling `checkoutComplete` mutation.
"""
allowUnpaidOrders: Boolean
"""
Specify whether a coupon applied to draft orders will count toward voucher usage.
Warning: when switching this setting from `false` to `true`, the vouchers will be disconnected from all draft orders.
Added in Saleor 3.18.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
includeDraftOrderInVoucherUsage: Boolean
"""
Time in hours after which the draft order line price will be refreshed. Default value is 24 hours. Enter 0 or null to disable.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
draftOrderLinePriceFreezePeriod: Hour
"""
This flag only affects orders created from checkout and applies specifically to vouchers of the types: `SPECIFIC_PRODUCT` and `ENTIRE_ORDER` with `applyOncePerOrder` enabled.
- When legacy propagation is enabled, discounts from these vouchers are represented as `OrderDiscount` objects, attached to the order and returned in the `Order.discounts` field. Additionally, percentage-based vouchers are converted to fixed-value discounts.
- When legacy propagation is disabled, discounts are represented as `OrderLineDiscount` objects, attached to individual lines and returned in the `OrderLine.discounts` field. In this case, percentage-based vouchers retain their original type.
In future releases, `OrderLineDiscount` will become the default behavior, and this flag will be deprecated and removed.
Added in Saleor 3.21.
"""
useLegacyLineDiscountPropagation: Boolean
}
input CheckoutSettingsInput @doc(category: "Checkout") {
"""
Default `true`. Determines if the checkout mutations should use legacy error flow. In legacy flow, all mutations can raise an exception unrelated to the requested action - (e.g. out-of-stock exception when updating checkoutShippingAddress.) If `false`, the errors will be aggregated in `checkout.problems` field. Some of the `problems` can block the finalizing checkout process. The legacy flow will be removed in Saleor 4.0. The flow with `checkout.problems` will be the default one.
"""
useLegacyErrorFlow: Boolean @deprecated
"""
Default `false`. Determines if the paid checkouts should be automatically completed. This setting applies only to checkouts where payment was processed through transactions.When enabled, the checkout will be automatically completed once the checkout `charge_status` reaches `FULL`. This occurs when the total sum of charged and authorized transaction amounts equals or exceeds the checkout's total amount.
Added in Saleor 3.20.
"""
automaticallyCompleteFullyPaidCheckouts: Boolean
}
input PaymentSettingsInput @doc(category: "Payments") {
"""
Determine the transaction flow strategy to be used. Include the selected option in the payload sent to the payment app, as a requested action for the transaction.
"""
defaultTransactionFlowStrategy: TransactionFlowStrategyEnum
"""
Determine if the funds for expired checkouts should be released automatically.
Added in Saleor 3.20.
"""
releaseFundsForExpiredCheckouts: Boolean
"""
The time in hours after which funds for expired checkouts will be released.
Added in Saleor 3.20.
"""
checkoutTtlBeforeReleasingFunds: Hour
"""
Specifies the earliest date on which funds for expired checkouts can begin to be released. Expired checkouts dated before this cut-off will not have their funds released. Additionally, no funds will be released for checkouts that are more than one year old, regardless of the cut-off date.
Added in Saleor 3.20.
"""
checkoutReleaseFundsCutOffDate: DateTime
}
"""
Update a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Requires one of the following permissions when updating only `orderSettings` field: `MANAGE_CHANNELS`, `MANAGE_ORDERS`.
Requires one of the following permissions when updating only `checkoutSettings` field: `MANAGE_CHANNELS`, `MANAGE_CHECKOUTS`.
Requires one of the following permissions when updating only `paymentSettings` field: `MANAGE_CHANNELS`, `HANDLE_PAYMENTS`.
Triggers the following webhook events:
- CHANNEL_UPDATED (async): A channel was updated.
- CHANNEL_METADATA_UPDATED (async): Optionally triggered when public or private metadata is updated.
"""
type ChannelUpdate
@doc(category: "Channels")
@webhookEventsInfo(
asyncEvents: [CHANNEL_UPDATED, CHANNEL_METADATA_UPDATED]
syncEvents: []
) {
channelErrors: [ChannelError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ChannelError!]!
channel: Channel
}
input ChannelUpdateInput @doc(category: "Channels") {
"""
Determine if channel will be set active or not.
"""
isActive: Boolean
"""
The channel stock settings.
"""
stockSettings: StockSettingsInput
"""
List of shipping zones to assign to the channel.
"""
addShippingZones: [ID!]
"""
List of warehouses to assign to the channel.
"""
addWarehouses: [ID!]
"""
The channel order settings
"""
orderSettings: OrderSettingsInput
"""
Channel public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Channel private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
The channel checkout settings
"""
checkoutSettings: CheckoutSettingsInput
"""
The channel payment settings
"""
paymentSettings: PaymentSettingsInput
"""
Name of the channel.
"""
name: String
"""
Slug of the channel.
"""
slug: String
"""
Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided.
"""
defaultCountry: CountryCode
"""
List of shipping zones to unassign from the channel.
"""
removeShippingZones: [ID!]
"""
List of warehouses to unassign from the channel.
"""
removeWarehouses: [ID!]
}
"""
Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_DELETED (async): A channel was deleted.
"""
type ChannelDelete
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_DELETED], syncEvents: []) {
channelErrors: [ChannelError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ChannelError!]!
channel: Channel
}
input ChannelDeleteInput @doc(category: "Channels") {
"""
ID of a channel to migrate orders from the origin channel. Target channel has to have the same currency as the origin.
"""
channelId: ID!
}
"""
Activate a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_STATUS_CHANGED (async): A channel was activated.
"""
type ChannelActivate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_STATUS_CHANGED], syncEvents: []) {
"""
Activated channel.
"""
channel: Channel
channelErrors: [ChannelError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ChannelError!]!
}
"""
Deactivate a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
Triggers the following webhook events:
- CHANNEL_STATUS_CHANGED (async): A channel was deactivated.
"""
type ChannelDeactivate
@doc(category: "Channels")
@webhookEventsInfo(asyncEvents: [CHANNEL_STATUS_CHANGED], syncEvents: []) {
"""
Deactivated channel.
"""
channel: Channel
channelErrors: [ChannelError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [ChannelError!]!
}
"""
Reorder the warehouses of a channel.
Requires one of the following permissions: MANAGE_CHANNELS.
"""
type ChannelReorderWarehouses @doc(category: "Channels") {
"""
Channel within the warehouses are reordered.
"""
channel: Channel
errors: [ChannelError!]!
}
"""
Creates an attribute.
Triggers the following webhook events:
- ATTRIBUTE_CREATED (async): An attribute was created.
"""
type AttributeCreate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_CREATED], syncEvents: []) {
"""
The created attribute.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
}
type AttributeError @doc(category: "Attributes") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AttributeErrorCode!
}
enum AttributeErrorCode @doc(category: "Attributes") {
ALREADY_EXISTS
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
}
"""
Represents an input for create of attribute.
NOTE: Deprecated fields `filterableInStorefront`, `storefrontSearchPosition` and `availableInGrid` are not supported in bulk mutations: `attributeBulkCreate`, `attributeBulkUpdate`.
"""
input AttributeCreateInput @doc(category: "Attributes") {
"""
The input type to use for entering attribute values in the dashboard.
"""
inputType: AttributeInputTypeEnum
"""
The entity type which can be used as a reference.
"""
entityType: AttributeEntityTypeEnum
"""
Name of an attribute displayed in the interface.
"""
name: String!
"""
Internal representation of an attribute name.
"""
slug: String
"""
The attribute type.
"""
type: AttributeTypeEnum!
"""
The unit of attribute values.
"""
unit: MeasurementUnitsEnum
"""
List of attribute's values.
"""
values: [AttributeValueCreateInput!]
"""
Whether the attribute requires values to be passed or not.
"""
valueRequired: Boolean
"""
Whether the attribute is for variants only.
"""
isVariantOnly: Boolean
"""
Whether the attribute should be visible or not in storefront.
"""
visibleInStorefront: Boolean
"""
Whether the attribute can be filtered in storefront.
"""
filterableInStorefront: Boolean @deprecated
"""
Whether the attribute can be filtered in dashboard.
"""
filterableInDashboard: Boolean
"""
The position of the attribute in the storefront navigation (0 by default).
"""
storefrontSearchPosition: Int @deprecated
"""
Whether the attribute can be displayed in the admin product list.
"""
availableInGrid: Boolean @deprecated
"""
External ID of this attribute.
"""
externalReference: String
}
input AttributeValueCreateInput @doc(category: "Attributes") {
"""
Represent value of the attribute value (e.g. color values for swatch attributes).
"""
value: String
"""
Represents the text of the attribute value, includes formatting.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
@deprecated(
reason: "The rich text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute."
)
"""
Represents the text of the attribute value, plain text without formatting.
"""
plainText: String
@deprecated(
reason: "The plain text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute."
)
"""
URL of the file attribute. Every time, a new value is created.
"""
fileUrl: String
"""
File content type.
"""
contentType: String
"""
External ID of this attribute value.
"""
externalReference: String
"""
Name of a value displayed in the interface.
"""
name: String!
}
"""
Deletes an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_DELETED (async): An attribute was deleted.
"""
type AttributeDelete
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_DELETED], syncEvents: []) {
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
attribute: Attribute
}
"""
Updates attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeUpdate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_UPDATED], syncEvents: []) {
"""
The updated attribute.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
}
"""
Represents an input for update of attribute.
NOTE: Deprecated fields `filterableInStorefront`, `storefrontSearchPosition` and `availableInGrid` are not supported in bulk mutations: `attributeBulkCreate`, `attributeBulkUpdate`.
"""
input AttributeUpdateInput @doc(category: "Attributes") {
"""
Name of an attribute displayed in the interface.
"""
name: String
"""
Internal representation of an attribute name.
"""
slug: String
"""
The unit of attribute values.
"""
unit: MeasurementUnitsEnum
"""
IDs of values to be removed from this attribute.
"""
removeValues: [ID!]
"""
New values to be created for this attribute.
"""
addValues: [AttributeValueUpdateInput!]
"""
Whether the attribute requires values to be passed or not.
"""
valueRequired: Boolean
"""
Whether the attribute is for variants only.
"""
isVariantOnly: Boolean
"""
Whether the attribute should be visible or not in storefront.
"""
visibleInStorefront: Boolean
"""
Whether the attribute can be filtered in storefront.
"""
filterableInStorefront: Boolean @deprecated
"""
Whether the attribute can be filtered in dashboard.
"""
filterableInDashboard: Boolean
"""
The position of the attribute in the storefront navigation (0 by default).
"""
storefrontSearchPosition: Int @deprecated
"""
Whether the attribute can be displayed in the admin product list.
"""
availableInGrid: Boolean @deprecated
"""
External ID of this product.
"""
externalReference: String
}
input AttributeValueUpdateInput @doc(category: "Attributes") {
"""
Represent value of the attribute value (e.g. color values for swatch attributes).
"""
value: String
"""
Represents the text of the attribute value, includes formatting.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
@deprecated(
reason: "The rich text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute."
)
"""
Represents the text of the attribute value, plain text without formatting.
"""
plainText: String
@deprecated(
reason: "The plain text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute."
)
"""
URL of the file attribute. Every time, a new value is created.
"""
fileUrl: String
"""
File content type.
"""
contentType: String
"""
External ID of this attribute value.
"""
externalReference: String
"""
Name of a value displayed in the interface.
"""
name: String
}
"""
Creates attributes.
Triggers the following webhook events:
- ATTRIBUTE_CREATED (async): An attribute was created.
"""
type AttributeBulkCreate
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_CREATED], syncEvents: []) {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of the created attributes.
"""
results: [AttributeBulkCreateResult!]!
errors: [AttributeBulkCreateError!]!
}
type AttributeBulkCreateResult @doc(category: "Attributes") {
"""
Attribute data.
"""
attribute: Attribute
"""
List of errors occurred on create attempt.
"""
errors: [AttributeBulkCreateError!]
}
type AttributeBulkCreateError @doc(category: "Attributes") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AttributeBulkCreateErrorCode!
}
enum AttributeBulkCreateErrorCode @doc(category: "Attributes") {
ALREADY_EXISTS
BLANK
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
DUPLICATED_INPUT_ITEM
MAX_LENGTH
}
"""
Updates attributes.
Triggers the following webhook events:
- ATTRIBUTE_UPDATED (async): An attribute was updated. Optionally called when new attribute value was created or deleted.
- ATTRIBUTE_VALUE_CREATED (async): Called optionally when an attribute value was created.
- ATTRIBUTE_VALUE_DELETED (async): Called optionally when an attribute value was deleted.
"""
type AttributeBulkUpdate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [
ATTRIBUTE_UPDATED
ATTRIBUTE_VALUE_CREATED
ATTRIBUTE_VALUE_DELETED
]
syncEvents: []
) {
"""
Returns how many objects were updated.
"""
count: Int!
"""
List of the updated attributes.
"""
results: [AttributeBulkUpdateResult!]!
errors: [AttributeBulkUpdateError!]!
}
type AttributeBulkUpdateResult @doc(category: "Attributes") {
"""
Attribute data.
"""
attribute: Attribute
"""
List of errors occurred on update attempt.
"""
errors: [AttributeBulkUpdateError!]
}
type AttributeBulkUpdateError @doc(category: "Attributes") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AttributeBulkUpdateErrorCode!
}
enum AttributeBulkUpdateErrorCode {
ALREADY_EXISTS
BLANK
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
UNIQUE
DUPLICATED_INPUT_ITEM
MAX_LENGTH
}
input AttributeBulkUpdateInput @doc(category: "Attributes") {
"""
ID of an attribute to update.
"""
id: ID
"""
External ID of this attribute.
"""
externalReference: String
"""
Fields to update.
"""
fields: AttributeUpdateInput!
}
"""
Creates/updates translations for an attribute.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type AttributeTranslate @doc(category: "Attributes") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
attribute: Attribute
}
"""
Creates/updates translations for attributes.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type AttributeBulkTranslate @doc(category: "Attributes") {
"""
Returns how many translations were created/updated.
"""
count: Int!
"""
List of the translations.
"""
results: [AttributeBulkTranslateResult!]!
errors: [AttributeBulkTranslateError!]!
}
type AttributeBulkTranslateResult @doc(category: "Attributes") {
"""
Attribute translation data.
"""
translation: AttributeTranslation
"""
List of errors occurred on translation attempt.
"""
errors: [AttributeBulkTranslateError!]
}
type AttributeBulkTranslateError {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AttributeTranslateErrorCode!
}
enum AttributeTranslateErrorCode @doc(category: "Attributes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
input AttributeBulkTranslateInput @doc(category: "Attributes") {
"""
Attribute ID.
"""
id: ID
"""
External reference of an attribute.
"""
externalReference: String
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
"""
Translation fields.
"""
translationFields: NameTranslationInput!
}
"""
Deletes attributes.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_DELETED (async): An attribute was deleted.
"""
type AttributeBulkDelete
@doc(category: "Attributes")
@webhookEventsInfo(asyncEvents: [ATTRIBUTE_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
}
"""
Deletes values of attributes.
Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_DELETED (async): An attribute value was deleted.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeValueBulkDelete
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_DELETED, ATTRIBUTE_UPDATED]
syncEvents: []
) {
"""
Returns how many objects were affected.
"""
count: Int!
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
}
"""
Creates a value for an attribute.
Requires one of the following permissions: MANAGE_PRODUCTS.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_CREATED (async): An attribute value was created.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeValueCreate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_CREATED, ATTRIBUTE_UPDATED]
syncEvents: []
) {
"""
The updated attribute.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
attributeValue: AttributeValue
}
"""
Deletes a value of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_DELETED (async): An attribute value was deleted.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeValueDelete
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_DELETED, ATTRIBUTE_UPDATED]
syncEvents: []
) {
"""
The updated attribute.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
attributeValue: AttributeValue
}
"""
Updates value of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_UPDATED (async): An attribute value was updated.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeValueUpdate
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_UPDATED, ATTRIBUTE_UPDATED]
syncEvents: []
) {
"""
The updated attribute.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
attributeValue: AttributeValue
}
"""
Creates/updates translations for attributes values.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type AttributeValueBulkTranslate @doc(category: "Attributes") {
"""
Returns how many translations were created/updated.
"""
count: Int!
"""
List of the translations.
"""
results: [AttributeValueBulkTranslateResult!]!
errors: [AttributeValueBulkTranslateError!]!
}
type AttributeValueBulkTranslateResult @doc(category: "Attributes") {
"""
Attribute value translation data.
"""
translation: AttributeValueTranslation
"""
List of errors occurred on translation attempt.
"""
errors: [AttributeValueBulkTranslateError!]
}
type AttributeValueBulkTranslateError {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AttributeValueTranslateErrorCode!
}
enum AttributeValueTranslateErrorCode @doc(category: "Attributes") {
GRAPHQL_ERROR
INVALID
NOT_FOUND
REQUIRED
}
input AttributeValueBulkTranslateInput @doc(category: "Attributes") {
"""
Attribute value ID.
"""
id: ID
"""
External reference of an attribute value.
"""
externalReference: String
"""
Translation language code.
"""
languageCode: LanguageCodeEnum!
"""
Translation fields.
"""
translationFields: AttributeValueTranslationInput!
}
input AttributeValueTranslationInput {
name: String
"""
Translated text.
Rich text format. For reference see https://editorjs.io/
"""
richText: JSONString
"""
Translated text.
"""
plainText: String
}
"""
Creates/updates translations for an attribute value.
Requires one of the following permissions: MANAGE_TRANSLATIONS.
"""
type AttributeValueTranslate @doc(category: "Attributes") {
translationErrors: [TranslationError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [TranslationError!]!
attributeValue: AttributeValue
}
"""
Reorder the values of an attribute.
Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES.
Triggers the following webhook events:
- ATTRIBUTE_VALUE_UPDATED (async): An attribute value was updated.
- ATTRIBUTE_UPDATED (async): An attribute was updated.
"""
type AttributeReorderValues
@doc(category: "Attributes")
@webhookEventsInfo(
asyncEvents: [ATTRIBUTE_VALUE_UPDATED, ATTRIBUTE_UPDATED]
syncEvents: []
) {
"""
Attribute from which values are reordered.
"""
attribute: Attribute
attributeErrors: [AttributeError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AttributeError!]!
}
"""
Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS.
Triggers the following webhook events:
- APP_INSTALLED (async): An app was installed.
"""
type AppCreate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_INSTALLED], syncEvents: []) {
"""
The newly created authentication token.
"""
authToken: String
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
app: App
}
type AppError @doc(category: "Apps") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AppErrorCode!
"""
List of permissions which causes the error.
"""
permissions: [PermissionEnum!]
}
enum AppErrorCode @doc(category: "Apps") {
FORBIDDEN
GRAPHQL_ERROR
INVALID
INVALID_STATUS
INVALID_PERMISSION
INVALID_URL_FORMAT
INVALID_MANIFEST_FORMAT
INVALID_CUSTOM_HEADERS
MANIFEST_URL_CANT_CONNECT
NOT_FOUND
REQUIRED
UNIQUE
OUT_OF_SCOPE_APP
OUT_OF_SCOPE_PERMISSION
UNSUPPORTED_SALEOR_VERSION
}
input AppInput @doc(category: "Apps") {
"""
Name of the app.
"""
name: String
"""
Canonical app ID. If not provided, the identifier will be generated based on app.id.
Added in Saleor 3.19.
"""
identifier: String
"""
List of permission code names to assign to this app.
"""
permissions: [PermissionEnum!]
}
"""
Updates an existing app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_UPDATED (async): An app was updated.
"""
type AppUpdate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_UPDATED], syncEvents: []) {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
app: App
}
"""
Deletes an app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_DELETED (async): An app was deleted.
"""
type AppDelete
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_DELETED], syncEvents: []) {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
app: App
}
"""
Creates a new token.
Requires one of the following permissions: MANAGE_APPS.
"""
type AppTokenCreate @doc(category: "Apps") {
"""
The newly created authentication token.
"""
authToken: String
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
appToken: AppToken
}
input AppTokenInput @doc(category: "Apps") {
"""
Name of the token.
"""
name: String
"""
ID of app.
"""
app: ID!
}
"""
Deletes an authentication token assigned to app.
Requires one of the following permissions: MANAGE_APPS.
"""
type AppTokenDelete @doc(category: "Apps") {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
appToken: AppToken
}
"""
Verify provided app token.
"""
type AppTokenVerify @doc(category: "Apps") {
"""
Determine if token is valid or not.
"""
valid: Boolean!
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
}
"""
Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS.
"""
type AppInstall @doc(category: "Apps") {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
appInstallation: AppInstallation
}
input AppInstallInput @doc(category: "Apps") {
"""
Name of the app to install.
"""
appName: String
"""
URL to app's manifest in JSON format.
"""
manifestUrl: String
"""
Determine if app will be set active or not.
"""
activateAfterInstallation: Boolean = true
"""
List of permission code names to assign to this app.
"""
permissions: [PermissionEnum!]
}
"""
Retry failed installation of new app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_INSTALLED (async): An app was installed.
"""
type AppRetryInstall
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_INSTALLED], syncEvents: []) {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
appInstallation: AppInstallation
}
"""
Delete failed installation.
Requires one of the following permissions: MANAGE_APPS.
"""
type AppDeleteFailedInstallation @doc(category: "Apps") {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
appInstallation: AppInstallation
}
"""
Fetch and validate manifest.
Requires one of the following permissions: MANAGE_APPS.
"""
type AppFetchManifest @doc(category: "Apps") {
"""
The validated manifest.
"""
manifest: Manifest
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
}
"""
The manifest definition.
"""
type Manifest @doc(category: "Apps") {
"""
The identifier of the manifest for the app.
"""
identifier: String!
"""
The version of the manifest for the app.
"""
version: String!
"""
The name of the manifest for the app .
"""
name: String!
"""
Description of the app displayed in the dashboard.
"""
about: String
"""
The array permissions required for the app.
"""
permissions: [Permission!]
"""
App website rendered in the dashboard.
"""
appUrl: String
"""
URL to iframe with the configuration for the app.
"""
configurationUrl: String @deprecated(reason: "Use `appUrl` instead.")
"""
Endpoint used during process of app installation, [see installing an app.](https://docs.saleor.io/developer/extending/apps/installing-apps#installing-an-app)
"""
tokenTargetUrl: String
"""
Description of the data privacy defined for this app.
"""
dataPrivacy: String @deprecated(reason: "Use `dataPrivacyUrl` instead.")
"""
URL to the full privacy policy.
"""
dataPrivacyUrl: String
"""
External URL to the app homepage.
"""
homepageUrl: String
"""
External URL to the page where app users can find support.
"""
supportUrl: String
"""
List of extensions that will be mounted in Saleor's dashboard. For details, please [see the extension section.](https://docs.saleor.io/developer/extending/apps/extending-dashboard-with-apps#key-concepts)
"""
extensions: [AppManifestExtension!]!
"""
List of the app's webhooks.
"""
webhooks: [AppManifestWebhook!]!
"""
The audience that will be included in all JWT tokens for the app.
"""
audience: String
"""
Determines the app's required Saleor version as semver range.
"""
requiredSaleorVersion: AppManifestRequiredSaleorVersion
"""
The App's author name.
"""
author: String
"""
App's brand data.
"""
brand: AppManifestBrand
}
type AppManifestExtension @doc(category: "Apps") {
"""
List of the app extension's permissions.
"""
permissions: [Permission!]!
"""
Label of the extension to show in the dashboard.
"""
label: String!
"""
URL of a view where extension's iframe is placed.
"""
url: String!
"""
Place where given extension will be mounted.
"""
mount: AppExtensionMountEnum!
"""
Type of way how app extension will be opened.
"""
target: AppExtensionTargetEnum!
}
type AppManifestWebhook @doc(category: "Apps") {
"""
The name of the webhook.
"""
name: String!
"""
The asynchronous events that webhook wants to subscribe.
"""
asyncEvents: [WebhookEventTypeAsyncEnum!]
"""
The synchronous events that webhook wants to subscribe.
"""
syncEvents: [WebhookEventTypeSyncEnum!]
"""
Subscription query of a webhook
"""
query: String!
"""
The url to receive the payload.
"""
targetUrl: String!
}
type AppManifestRequiredSaleorVersion @doc(category: "Apps") {
"""
Required Saleor version as semver range.
"""
constraint: String!
"""
Informs if the Saleor version matches the required one.
"""
satisfied: Boolean!
}
"""
Represents the app's manifest brand data.
"""
type AppManifestBrand @doc(category: "Apps") {
"""
App's logos details.
"""
logo: AppManifestBrandLogo!
}
"""
Represents the app's manifest brand data.
"""
type AppManifestBrandLogo @doc(category: "Apps") {
"""
Data URL with a base64 encoded logo image.
"""
default(
"""
Desired longest side the image in pixels. Defaults to 4096. Images are never cropped. Pass 0 to retrieve the original size (not recommended).
"""
size: Int
"""
The format of the image. When not provided, format of the original image will be used.
"""
format: IconThumbnailFormatEnum = ORIGINAL
): String!
}
"""
Activate the app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_STATUS_CHANGED (async): An app was activated.
"""
type AppActivate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_STATUS_CHANGED], syncEvents: []) {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
app: App
}
"""
Deactivate the app.
Requires one of the following permissions: MANAGE_APPS.
Triggers the following webhook events:
- APP_STATUS_CHANGED (async): An app was deactivated.
"""
type AppDeactivate
@doc(category: "Apps")
@webhookEventsInfo(asyncEvents: [APP_STATUS_CHANGED], syncEvents: []) {
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
app: App
}
"""
Re-enable sync webhooks for provided app. Can be used to manually re-enable sync webhooks for the app before the cooldown period ends.
Added in Saleor 3.21.
Requires one of the following permissions: MANAGE_APPS.
"""
type AppReenableSyncWebhooks @doc(category: "Apps") {
"""
App for which sync webhooks were re-enabled.
"""
app: App
appErrors: [AppError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [AppError!]!
}
"""
Create JWT token.
"""
type CreateToken @doc(category: "Authentication") {
"""
JWT token, required to authenticate.
"""
token: String
"""
JWT refresh token, required to re-generate access token.
"""
refreshToken: String
"""
CSRF token required to re-generate access token.
"""
csrfToken: String
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Represents errors in account mutations.
"""
type AccountError @doc(category: "Users") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AccountErrorCode!
"""
A type of address that causes the error.
"""
addressType: AddressTypeEnum
}
enum AccountErrorCode @doc(category: "Users") {
ACTIVATE_OWN_ACCOUNT
ACTIVATE_SUPERUSER_ACCOUNT
DUPLICATED_INPUT_ITEM
DEACTIVATE_OWN_ACCOUNT
DEACTIVATE_SUPERUSER_ACCOUNT
DELETE_NON_STAFF_USER
DELETE_OWN_ACCOUNT
DELETE_STAFF_ACCOUNT
DELETE_SUPERUSER_ACCOUNT
GRAPHQL_ERROR
INACTIVE
INVALID
INVALID_PASSWORD
LEFT_NOT_MANAGEABLE_PERMISSION
INVALID_CREDENTIALS
NOT_FOUND
OUT_OF_SCOPE_USER
OUT_OF_SCOPE_GROUP
OUT_OF_SCOPE_PERMISSION
PASSWORD_ENTIRELY_NUMERIC
PASSWORD_TOO_COMMON
PASSWORD_TOO_SHORT
PASSWORD_TOO_SIMILAR
PASSWORD_RESET_ALREADY_REQUESTED
REQUIRED
UNIQUE
JWT_SIGNATURE_EXPIRED
JWT_INVALID_TOKEN
JWT_DECODE_ERROR
JWT_MISSING_TOKEN
JWT_INVALID_CSRF_TOKEN
CHANNEL_INACTIVE
MISSING_CHANNEL_SLUG
ACCOUNT_NOT_CONFIRMED
LOGIN_ATTEMPT_DELAYED
UNKNOWN_IP_ADDRESS
}
"""
Refresh JWT token. Mutation tries to take refreshToken from the input. If it fails it will try to take `refreshToken` from the http-only cookie `refreshToken`. `csrfToken` is required when `refreshToken` is provided as a cookie.
"""
type RefreshToken @doc(category: "Authentication") {
"""
JWT token, required to authenticate.
"""
token: String
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Verify JWT token.
"""
type VerifyToken @doc(category: "Authentication") {
"""
User assigned to token.
"""
user: User
"""
Determine if token is valid or not.
"""
isValid: Boolean!
"""
JWT payload.
"""
payload: GenericScalar
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
The `GenericScalar` scalar type represents a generic
GraphQL scalar value that could be:
String, Boolean, Int, Float, List or Object.
"""
scalar GenericScalar
"""
Deactivate all JWT tokens of the currently authenticated user.
Requires one of the following permissions: AUTHENTICATED_USER.
"""
type DeactivateAllUserTokens @doc(category: "Authentication") {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Prepare external authentication URL for user by custom plugin.
"""
type ExternalAuthenticationUrl @doc(category: "Authentication") {
"""
The data returned by authentication plugin.
"""
authenticationData: JSONString
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Obtain external access tokens for user by custom plugin.
"""
type ExternalObtainAccessTokens @doc(category: "Authentication") {
"""
The token, required to authenticate.
"""
token: String
"""
The refresh token, required to re-generate external access token.
"""
refreshToken: String
"""
CSRF token required to re-generate external access token.
"""
csrfToken: String
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Refresh user's access by custom plugin.
"""
type ExternalRefresh @doc(category: "Authentication") {
"""
The token, required to authenticate.
"""
token: String
"""
The refresh token, required to re-generate external access token.
"""
refreshToken: String
"""
CSRF token required to re-generate external access token.
"""
csrfToken: String
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Logout user by custom plugin.
"""
type ExternalLogout @doc(category: "Authentication") {
"""
The data returned by authentication plugin.
"""
logoutData: JSONString
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Verify external authentication data by plugin.
"""
type ExternalVerify @doc(category: "Authentication") {
"""
User assigned to data.
"""
user: User
"""
Determine if authentication data is valid or not.
"""
isValid: Boolean!
"""
External data.
"""
verifyData: JSONString
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Sends an email with the account password modification link.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for password reset.
- ACCOUNT_SET_PASSWORD_REQUESTED (async): Setting a new password for the account is requested.
- STAFF_SET_PASSWORD_REQUESTED (async): Setting a new password for the staff account is requested.
"""
type RequestPasswordReset
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [
NOTIFY_USER
ACCOUNT_SET_PASSWORD_REQUESTED
STAFF_SET_PASSWORD_REQUESTED
]
syncEvents: []
) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Sends a notification confirmation.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account confirmation.
- ACCOUNT_CONFIRMATION_REQUESTED (async): An account confirmation was requested. This event is always sent regardless of settings.
"""
type SendConfirmationEmail
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_CONFIRMATION_REQUESTED]
syncEvents: []
) {
errors: [SendConfirmationEmailError!]!
}
type SendConfirmationEmailError @doc(category: "Users") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: SendConfirmationEmailErrorCode!
}
enum SendConfirmationEmailErrorCode @doc(category: "Users") {
INVALID
ACCOUNT_CONFIRMED
CONFIRMATION_ALREADY_REQUESTED
MISSING_CHANNEL_SLUG
}
"""
Confirm user account with token sent by email during registration.
Triggers the following webhook events:
- ACCOUNT_CONFIRMED (async): Account was confirmed.
"""
type ConfirmAccount
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ACCOUNT_CONFIRMED], syncEvents: []) {
"""
An activated user account.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Sets the user's password from the token sent by email using the RequestPasswordReset mutation.
"""
type SetPassword @doc(category: "Users") {
"""
JWT token, required to authenticate.
"""
token: String
"""
JWT refresh token, required to re-generate access token.
"""
refreshToken: String
"""
CSRF token required to re-generate access token.
"""
csrfToken: String
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Change the password of the logged in user.
Requires one of the following permissions: AUTHENTICATED_USER.
"""
type PasswordChange @doc(category: "Users") {
"""
A user instance with a new password.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Request email change of the logged in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account email change.
- ACCOUNT_CHANGE_EMAIL_REQUESTED (async): An account email change was requested.
"""
type RequestEmailChange
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_CHANGE_EMAIL_REQUESTED]
syncEvents: []
) {
"""
A user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Confirm the email change of the logged-in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- NOTIFY_USER (async): A notification that account email change was confirmed.
- ACCOUNT_EMAIL_CHANGED (async): An account email was changed.
"""
type ConfirmEmailChange
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, NOTIFY_USER, ACCOUNT_EMAIL_CHANGED]
syncEvents: []
) {
"""
A user instance with a new email.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Create a new address for the customer.
Requires one of following set of permissions: AUTHENTICATED_USER or AUTHENTICATED_APP + IMPERSONATE_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- ADDRESS_CREATED (async): An address was created.
"""
type AccountAddressCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, ADDRESS_CREATED]
syncEvents: []
) {
"""
A user instance for which the address was created.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER.
Triggers the following webhook events:
- ADDRESS_UPDATED (async): An address was updated.
"""
type AccountAddressUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_UPDATED], syncEvents: []) {
"""
A user object for which the address was edited.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER.
Triggers the following webhook events:
- ADDRESS_DELETED (async): An address was deleted.
"""
type AccountAddressDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_DELETED], syncEvents: []) {
"""
A user instance for which the address was deleted.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Sets a default address for the authenticated user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer's address was updated.
"""
type AccountSetDefaultAddress
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_UPDATED], syncEvents: []) {
"""
An updated user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Register a new user.
Triggers the following webhook events:
- CUSTOMER_CREATED (async): A new customer account was created.
- NOTIFY_USER (async): A notification for account confirmation.
- ACCOUNT_CONFIRMATION_REQUESTED (async): An user confirmation was requested. This event is always sent regardless of settings.
"""
type AccountRegister
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_CREATED, NOTIFY_USER, ACCOUNT_CONFIRMATION_REQUESTED]
syncEvents: []
) {
user: User
@deprecated(
reason: "The field always returns a `User` object constructed from the input data. The `user.id` is always empty. To determine whether the user exists in Saleor, query via an external app with the required permissions."
)
"""
Informs whether users need to confirm their email address.
"""
requiresConfirmation: Boolean
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Fields required to create a user.
"""
input AccountRegisterInput @doc(category: "Users") {
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
User language code.
"""
languageCode: LanguageCodeEnum
"""
The email address of the user.
"""
email: String!
"""
Password.
"""
password: String!
"""
Base of frontend URL that will be needed to create confirmation URL. Required when account confirmation is enabled.
"""
redirectUrl: String
"""
User public metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Slug of a channel which will be used to notify users. Optional when only one channel exists.
"""
channel: String
}
"""
Updates the account of the logged-in user.
Requires one of following set of permissions: AUTHENTICATED_USER or AUTHENTICATED_APP + IMPERSONATE_USER.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
type AccountUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
user: User
}
"""
Fields required to update the user.
"""
input AccountInput @doc(category: "Users") {
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
User language code.
"""
languageCode: LanguageCodeEnum
"""
Billing address of the customer.
"""
defaultBillingAddress: AddressInput
"""
Shipping address of the customer.
"""
defaultShippingAddress: AddressInput
"""
Fields required to update the user metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
}
"""
Sends an email with the account removal link for the logged-in user.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- NOTIFY_USER (async): A notification for account delete request.
- ACCOUNT_DELETE_REQUESTED (async): An account delete requested.
"""
type AccountRequestDeletion
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [NOTIFY_USER, ACCOUNT_DELETE_REQUESTED]
syncEvents: []
) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Remove user account.
Requires one of the following permissions: AUTHENTICATED_USER.
Triggers the following webhook events:
- ACCOUNT_DELETED (async): Account was deleted.
"""
type AccountDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ACCOUNT_DELETED], syncEvents: []) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
user: User
}
"""
Creates user address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_CREATED (async): A new address was created.
"""
type AddressCreate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_CREATED], syncEvents: []) {
"""
A user instance for which the address was created.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Updates an address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_UPDATED (async): An address was updated.
"""
type AddressUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_UPDATED], syncEvents: []) {
"""
A user object for which the address was edited.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Deletes an address.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- ADDRESS_DELETED (async): An address was deleted.
"""
type AddressDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [ADDRESS_DELETED], syncEvents: []) {
"""
A user instance for which the address was deleted.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
address: Address
}
"""
Sets a default address for the given user.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer was updated.
"""
type AddressSetDefault
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_UPDATED], syncEvents: []) {
"""
An updated user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Creates a new customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_CREATED (async): A new customer account was created.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
- NOTIFY_USER (async): A notification for setting the password.
- ACCOUNT_SET_PASSWORD_REQUESTED (async): Setting a new password for the account is requested.
"""
type CustomerCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [
CUSTOMER_CREATED
CUSTOMER_METADATA_UPDATED
NOTIFY_USER
ACCOUNT_SET_PASSWORD_REQUESTED
]
syncEvents: []
) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
user: User
}
input UserCreateInput @doc(category: "Users") {
"""
Billing address of the customer.
"""
defaultBillingAddress: AddressInput
"""
Shipping address of the customer.
"""
defaultShippingAddress: AddressInput
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
The unique email address of the user.
"""
email: String
"""
User account is active.
"""
isActive: Boolean
"""
A note about the user.
"""
note: String
"""
Fields required to update the user metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the user private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
User language code.
"""
languageCode: LanguageCodeEnum
"""
External ID of the customer.
"""
externalReference: String
"""
User account is confirmed.
"""
isConfirmed: Boolean
@deprecated(
reason: "The user will be always set as unconfirmed. The confirmation will take place when the user sets the password."
)
"""
URL of a view where users should be redirected to set the password. URL in RFC 1808 format.
"""
redirectUrl: String
"""
Slug of a channel which will be used for notify user. Optional when only one channel exists.
"""
channel: String
}
"""
Updates an existing customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A new customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
type CustomerUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
user: User
}
input CustomerInput @doc(category: "Users") {
"""
Billing address of the customer.
"""
defaultBillingAddress: AddressInput
"""
Shipping address of the customer.
"""
defaultShippingAddress: AddressInput
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
The unique email address of the user.
"""
email: String
"""
User account is active.
"""
isActive: Boolean
"""
A note about the user.
"""
note: String
"""
Fields required to update the user metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the user private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
User language code.
"""
languageCode: LanguageCodeEnum
"""
External ID of the customer.
"""
externalReference: String
"""
User account is confirmed.
"""
isConfirmed: Boolean
}
"""
Deletes a customer.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_DELETED (async): A customer account was deleted.
"""
type CustomerDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_DELETED], syncEvents: []) {
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
user: User
}
"""
Deletes customers.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_DELETED (async): A customer account was deleted.
"""
type CustomerBulkDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [CUSTOMER_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Updates customers.
Requires one of the following permissions: MANAGE_USERS.
Triggers the following webhook events:
- CUSTOMER_UPDATED (async): A customer account was updated.
- CUSTOMER_METADATA_UPDATED (async): Optionally called when customer's metadata was updated.
"""
type CustomerBulkUpdate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [CUSTOMER_UPDATED, CUSTOMER_METADATA_UPDATED]
syncEvents: []
) {
"""
Returns how many objects were created.
"""
count: Int!
"""
List of the updated customers.
"""
results: [CustomerBulkResult!]!
errors: [CustomerBulkUpdateError!]!
}
type CustomerBulkResult @doc(category: "Users") {
"""
Customer data.
"""
customer: User
"""
List of errors that occurred during the update attempt.
"""
errors: [CustomerBulkUpdateError!]
}
type CustomerBulkUpdateError @doc(category: "Users") {
"""
Path to field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
path: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: CustomerBulkUpdateErrorCode!
}
enum CustomerBulkUpdateErrorCode @doc(category: "Users") {
BLANK
DUPLICATED_INPUT_ITEM
GRAPHQL_ERROR
INVALID
REQUIRED
UNIQUE
NOT_FOUND
MAX_LENGTH
}
input CustomerBulkUpdateInput @doc(category: "Users") {
"""
ID of a customer to update.
"""
id: ID
"""
External ID of a customer to update.
"""
externalReference: String
"""
Fields required to update a customer.
"""
input: CustomerInput!
}
"""
Creates a new staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_CREATED (async): A new staff account was created.
- NOTIFY_USER (async): A notification for setting the password.
- STAFF_SET_PASSWORD_REQUESTED (async): Setting a new password for the staff account is requested.
"""
type StaffCreate
@doc(category: "Users")
@webhookEventsInfo(
asyncEvents: [STAFF_CREATED, NOTIFY_USER, STAFF_SET_PASSWORD_REQUESTED]
syncEvents: []
) {
staffErrors: [StaffError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [StaffError!]!
user: User
}
type StaffError @doc(category: "Users") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: AccountErrorCode!
"""
A type of address that causes the error.
"""
addressType: AddressTypeEnum
"""
List of permissions which causes the error.
"""
permissions: [PermissionEnum!]
"""
List of permission group IDs which cause the error.
"""
groups: [ID!]
"""
List of user IDs which causes the error.
"""
users: [ID!]
}
"""
Fields required to create a staff user.
"""
input StaffCreateInput @doc(category: "Users") {
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
The unique email address of the user.
"""
email: String
"""
User account is active.
"""
isActive: Boolean
"""
A note about the user.
"""
note: String
"""
Fields required to update the user metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the user private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
List of permission group IDs to which user should be assigned.
"""
addGroups: [ID!]
"""
URL of a view where users should be redirected to set the password. URL in RFC 1808 format.
"""
redirectUrl: String
}
"""
Updates an existing staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_UPDATED (async): A staff account was updated.
"""
type StaffUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_UPDATED], syncEvents: []) {
staffErrors: [StaffError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [StaffError!]!
user: User
}
"""
Fields required to update a staff user.
"""
input StaffUpdateInput @doc(category: "Users") {
"""
Given name.
"""
firstName: String
"""
Family name.
"""
lastName: String
"""
The unique email address of the user.
"""
email: String
"""
User account is active.
"""
isActive: Boolean
"""
A note about the user.
"""
note: String
"""
Fields required to update the user metadata. Can be read by any API client authorized to read the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
metadata: [MetadataInput!]
"""
Fields required to update the user private metadata. Requires permissions to modify and to read the metadata of the object it's attached to.
Warning: never store sensitive information, including financial data such as credit card details.
"""
privateMetadata: [MetadataInput!]
"""
List of permission group IDs to which user should be assigned.
"""
addGroups: [ID!]
"""
List of permission group IDs from which user should be unassigned.
"""
removeGroups: [ID!]
}
"""
Deletes a staff user. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_DELETED (async): A staff account was deleted.
"""
type StaffDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_DELETED], syncEvents: []) {
staffErrors: [StaffError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [StaffError!]!
user: User
}
"""
Deletes staff users. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- STAFF_DELETED (async): A staff account was deleted.
"""
type StaffBulkDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [STAFF_DELETED], syncEvents: []) {
"""
Returns how many objects were affected.
"""
count: Int!
staffErrors: [StaffError!]! @deprecated(reason: "Use `errors` field instead.")
errors: [StaffError!]!
}
"""
Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
type UserAvatarUpdate @doc(category: "Users") {
"""
An updated user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Deletes a user avatar. Only for staff members.
Requires one of the following permissions: AUTHENTICATED_STAFF_USER.
"""
type UserAvatarDelete @doc(category: "Users") {
"""
An updated user instance.
"""
user: User
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Activate or deactivate users.
Requires one of the following permissions: MANAGE_USERS.
"""
type UserBulkSetActive @doc(category: "Users") {
"""
Returns how many objects were affected.
"""
count: Int!
accountErrors: [AccountError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [AccountError!]!
}
"""
Create new permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_CREATED (async)
"""
type PermissionGroupCreate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_CREATED], syncEvents: []) {
permissionGroupErrors: [PermissionGroupError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PermissionGroupError!]!
group: Group
}
type PermissionGroupError @doc(category: "Users") {
"""
Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field.
"""
field: String
"""
The error message.
"""
message: String
"""
The error code.
"""
code: PermissionGroupErrorCode!
"""
List of permissions which causes the error.
"""
permissions: [PermissionEnum!]
"""
List of user IDs which causes the error.
"""
users: [ID!]
"""
List of channels IDs which causes the error.
"""
channels: [ID!]
}
enum PermissionGroupErrorCode @doc(category: "Users") {
REQUIRED
UNIQUE
ASSIGN_NON_STAFF_MEMBER
DUPLICATED_INPUT_ITEM
CANNOT_REMOVE_FROM_LAST_GROUP
LEFT_NOT_MANAGEABLE_PERMISSION
OUT_OF_SCOPE_PERMISSION
OUT_OF_SCOPE_USER
OUT_OF_SCOPE_CHANNEL
}
input PermissionGroupCreateInput @doc(category: "Users") {
"""
List of permission code names to assign to this group.
"""
addPermissions: [PermissionEnum!]
"""
List of users to assign to this group.
"""
addUsers: [ID!]
"""
List of channels to assign to this group.
"""
addChannels: [ID!]
"""
Group name.
"""
name: String!
"""
Determine if the group has restricted access to channels. DEFAULT: False
"""
restrictedAccessToChannels: Boolean = false
}
"""
Update permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_UPDATED (async)
"""
type PermissionGroupUpdate
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_UPDATED], syncEvents: []) {
permissionGroupErrors: [PermissionGroupError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PermissionGroupError!]!
group: Group
}
input PermissionGroupUpdateInput @doc(category: "Users") {
"""
List of permission code names to assign to this group.
"""
addPermissions: [PermissionEnum!]
"""
List of users to assign to this group.
"""
addUsers: [ID!]
"""
List of channels to assign to this group.
"""
addChannels: [ID!]
"""
Group name.
"""
name: String
"""
List of permission code names to unassign from this group.
"""
removePermissions: [PermissionEnum!]
"""
List of users to unassign from this group.
"""
removeUsers: [ID!]
"""
List of channels to unassign from this group.
"""
removeChannels: [ID!]
"""
Determine if the group has restricted access to channels.
"""
restrictedAccessToChannels: Boolean
}
"""
Delete permission group. Apps are not allowed to perform this mutation.
Requires one of the following permissions: MANAGE_STAFF.
Triggers the following webhook events:
- PERMISSION_GROUP_DELETED (async)
"""
type PermissionGroupDelete
@doc(category: "Users")
@webhookEventsInfo(asyncEvents: [PERMISSION_GROUP_DELETED], syncEvents: []) {
permissionGroupErrors: [PermissionGroupError!]!
@deprecated(reason: "Use `errors` field instead.")
errors: [PermissionGroupError!]!
group: Group
}
type Subscription @doc(category: "Miscellaneous") {
"""
Look up subscription event.
"""
event: Event
"""
Event sent when new draft order is created.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
draftOrderCreated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): DraftOrderCreated @doc(category: "Orders")
"""
Event sent when draft order is updated.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
draftOrderUpdated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): DraftOrderUpdated @doc(category: "Orders")
"""
Event sent when draft order is deleted.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
draftOrderDeleted(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): DraftOrderDeleted @doc(category: "Orders")
"""
Event sent when new order is created.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderCreated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderCreated @doc(category: "Orders")
"""
Event sent when order is updated.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderUpdated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderUpdated @doc(category: "Orders")
"""
Event sent when order is confirmed.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderConfirmed(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderConfirmed @doc(category: "Orders")
"""
Payment has been made. The order may be partially or fully paid.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderPaid(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderPaid @doc(category: "Orders")
"""
Event sent when order is fully paid.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderFullyPaid(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderFullyPaid @doc(category: "Orders")
"""
The order received a refund. The order may be partially or fully refunded.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderRefunded(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderRefunded @doc(category: "Orders")
"""
The order is fully refunded.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderFullyRefunded(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderFullyRefunded @doc(category: "Orders")
"""
Event sent when order is fulfilled.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderFulfilled(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderFulfilled @doc(category: "Orders")
"""
Event sent when order is cancelled.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderCancelled(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderCancelled @doc(category: "Orders")
"""
Event sent when order becomes expired.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderExpired(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderExpired @doc(category: "Orders")
"""
Event sent when order metadata is updated.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderMetadataUpdated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderMetadataUpdated @doc(category: "Orders")
"""
Event sent when orders are imported.
Added in Saleor 3.20.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
orderBulkCreated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): OrderBulkCreated @doc(category: "Orders")
"""
Event sent when new checkout is created.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
checkoutCreated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): CheckoutCreated @doc(category: "Checkout")
"""
Event sent when checkout is updated.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
checkoutUpdated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): CheckoutUpdated @doc(category: "Checkout")
"""
Event sent when checkout is fully-paid.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
checkoutFullyPaid(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): CheckoutFullyPaid @doc(category: "Checkout")
"""
Event sent when checkout is fully authorized.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
checkoutFullyAuthorized(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): CheckoutFullyAuthorized @doc(category: "Checkout")
"""
Event sent when checkout metadata is updated.
Added in Saleor 3.21.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
checkoutMetadataUpdated(
"""
List of channel slugs. The event will be sent only if the object belongs to one of the provided channels. If the channel slug list is empty, objects that belong to any channel will be sent. Maximally 500 items.
"""
channels: [String!]
): CheckoutMetadataUpdated @doc(category: "Checkout")
}
interface Event {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App @doc(category: "Apps")
}
union IssuingPrincipal = App | User
"""
Event sent when new draft order is created.
"""
type DraftOrderCreated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when draft order is updated.
"""
type DraftOrderUpdated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when draft order is deleted.
"""
type DraftOrderDeleted implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when new order is created.
"""
type OrderCreated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order is updated.
"""
type OrderUpdated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order is confirmed.
"""
type OrderConfirmed implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Payment has been made. The order may be partially or fully paid.
"""
type OrderPaid implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order is fully paid.
"""
type OrderFullyPaid implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
The order received a refund. The order may be partially or fully refunded.
"""
type OrderRefunded implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
The order is fully refunded.
"""
type OrderFullyRefunded implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order is fulfilled.
"""
type OrderFulfilled implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order is canceled.
"""
type OrderCancelled implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order becomes expired.
"""
type OrderExpired implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when order metadata is updated.
"""
type OrderMetadataUpdated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
}
"""
Event sent when orders are imported.
"""
type OrderBulkCreated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The orders the event relates to.
"""
orders: [Order!]
}
"""
Event sent when new checkout is created.
"""
type CheckoutCreated implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
"""
Event sent when checkout is updated.
"""
type CheckoutUpdated implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
"""
Event sent when a checkout was fully paid. A checkout is considered fully paid when its `chargeStatus` is `FULL` or `OVERCHARGED`. This event is not sent if payments are only authorized but not fully charged.
It is triggered only for checkouts whose payments are processed through the Transaction API.
"""
type CheckoutFullyPaid implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
"""
Event sent when a checkout was fully authorized. A checkout is considered fully authorized when its `authorizeStatus` is `FULL`.
It is triggered only for checkouts whose payments are processed through the Transaction API.
"""
type CheckoutFullyAuthorized implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
"""
Event sent when checkout metadata is updated.
"""
type CheckoutMetadataUpdated implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
enum DistanceUnitsEnum {
MM
CM
DM
M
KM
FT
YD
INCH
}
enum AreaUnitsEnum {
SQ_MM
SQ_CM
SQ_DM
SQ_M
SQ_KM
SQ_FT
SQ_YD
SQ_INCH
}
enum VolumeUnitsEnum {
CUBIC_MILLIMETER
CUBIC_CENTIMETER
CUBIC_DECIMETER
CUBIC_METER
LITER
CUBIC_FOOT
CUBIC_INCH
CUBIC_YARD
QT
PINT
FL_OZ
ACRE_IN
ACRE_FT
}
"""
Event sent when account confirmation requested. This event is always sent. enableAccountConfirmationByEmail flag set to True is not required.
"""
type AccountConfirmationRequested implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when account change email is requested.
"""
type AccountChangeEmailRequested implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
"""
The new email address the user wants to change to.
"""
newEmail: String
}
"""
Event sent when account email is changed.
"""
type AccountEmailChanged implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
"""
The new email address.
"""
newEmail: String
}
"""
Event sent when setting a new password is requested.
"""
type AccountSetPasswordRequested implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when account is confirmed.
"""
type AccountConfirmed implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when account delete is requested.
"""
type AccountDeleteRequested implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when account is deleted.
"""
type AccountDeleted implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when new address is created.
"""
type AddressCreated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The address the event relates to.
"""
address: Address
}
"""
Event sent when address is updated.
"""
type AddressUpdated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The address the event relates to.
"""
address: Address
}
"""
Event sent when address is deleted.
"""
type AddressDeleted implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The address the event relates to.
"""
address: Address
}
"""
Event sent when new app is installed.
"""
type AppInstalled implements Event @doc(category: "Apps") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The application the event relates to.
"""
app: App
}
"""
Event sent when app is updated.
"""
type AppUpdated implements Event @doc(category: "Apps") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The application the event relates to.
"""
app: App
}
"""
Event sent when app is deleted.
"""
type AppDeleted implements Event @doc(category: "Apps") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The application the event relates to.
"""
app: App
}
"""
Event sent when app status has changed.
"""
type AppStatusChanged implements Event @doc(category: "Apps") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The application the event relates to.
"""
app: App
}
"""
Event sent when new attribute is created.
"""
type AttributeCreated implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute the event relates to.
"""
attribute: Attribute
}
"""
Event sent when attribute is updated.
"""
type AttributeUpdated implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute the event relates to.
"""
attribute: Attribute
}
"""
Event sent when attribute is deleted.
"""
type AttributeDeleted implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute the event relates to.
"""
attribute: Attribute
}
"""
Event sent when new attribute value is created.
"""
type AttributeValueCreated implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute value the event relates to.
"""
attributeValue: AttributeValue
}
"""
Event sent when attribute value is updated.
"""
type AttributeValueUpdated implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute value the event relates to.
"""
attributeValue: AttributeValue
}
"""
Event sent when attribute value is deleted.
"""
type AttributeValueDeleted implements Event @doc(category: "Attributes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The attribute value the event relates to.
"""
attributeValue: AttributeValue
}
"""
Event sent when new category is created.
"""
type CategoryCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The category the event relates to.
"""
category: Category
}
"""
Event sent when category is updated.
"""
type CategoryUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The category the event relates to.
"""
category: Category
}
"""
Event sent when category is deleted.
"""
type CategoryDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The category the event relates to.
"""
category: Category
}
"""
Event sent when new channel is created.
"""
type ChannelCreated implements Event @doc(category: "Channels") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The channel the event relates to.
"""
channel: Channel
}
"""
Event sent when channel is updated.
"""
type ChannelUpdated implements Event @doc(category: "Channels") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The channel the event relates to.
"""
channel: Channel
}
"""
Event sent when channel is deleted.
"""
type ChannelDeleted implements Event @doc(category: "Channels") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The channel the event relates to.
"""
channel: Channel
}
"""
Event sent when channel status has changed.
"""
type ChannelStatusChanged implements Event @doc(category: "Channels") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The channel the event relates to.
"""
channel: Channel
}
"""
Event sent when channel metadata is updated.
"""
type ChannelMetadataUpdated implements Event @doc(category: "Channels") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The channel the event relates to.
"""
channel: Channel
}
"""
Event sent when new gift card is created.
"""
type GiftCardCreated implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
}
"""
Event sent when gift card is updated.
"""
type GiftCardUpdated implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
}
"""
Event sent when gift card is deleted.
"""
type GiftCardDeleted implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
}
"""
Event sent when gift card is e-mailed.
"""
type GiftCardSent implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
"""
Slug of a channel for which this gift card email was sent.
"""
channel: String
"""
E-mail address to which gift card was sent.
"""
sentToEmail: String
}
"""
Event sent when gift card status has changed.
"""
type GiftCardStatusChanged implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
}
"""
Event sent when gift card metadata is updated.
"""
type GiftCardMetadataUpdated implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The gift card the event relates to.
"""
giftCard: GiftCard
}
"""
Event sent when gift card export is completed.
"""
type GiftCardExportCompleted implements Event @doc(category: "Gift cards") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The export file for gift cards.
"""
export: ExportFile
}
"""
Event sent when new menu is created.
"""
type MenuCreated implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu the event relates to.
"""
menu(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Menu
}
"""
Event sent when menu is updated.
"""
type MenuUpdated implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu the event relates to.
"""
menu(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Menu
}
"""
Event sent when menu is deleted.
"""
type MenuDeleted implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu the event relates to.
"""
menu(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Menu
}
"""
Event sent when new menu item is created.
"""
type MenuItemCreated implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu item the event relates to.
"""
menuItem(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): MenuItem
}
"""
Event sent when menu item is updated.
"""
type MenuItemUpdated implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu item the event relates to.
"""
menuItem(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): MenuItem
}
"""
Event sent when menu item is deleted.
"""
type MenuItemDeleted implements Event @doc(category: "Menu") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The menu item the event relates to.
"""
menuItem(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): MenuItem
}
"""
Event sent when new product is created.
"""
type ProductCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product the event relates to.
"""
product(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Product
"""
The category of the product.
"""
category: Category
}
"""
Event sent when product is updated.
"""
type ProductUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product the event relates to.
"""
product(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Product
"""
The category of the product.
"""
category: Category
}
"""
Event sent when product is deleted.
"""
type ProductDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product the event relates to.
"""
product(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Product
"""
The category of the product.
"""
category: Category
}
"""
Event sent when product metadata is updated.
"""
type ProductMetadataUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product the event relates to.
"""
product(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Product
"""
The category of the product.
"""
category: Category
}
"""
Event sent when product export is completed.
"""
type ProductExportCompleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The export file for products.
"""
export: ExportFile
}
"""
Event sent when new product media is created.
"""
type ProductMediaCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product media the event relates to.
"""
productMedia: ProductMedia
}
"""
Event sent when product media is updated.
"""
type ProductMediaUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product media the event relates to.
"""
productMedia: ProductMedia
}
"""
Event sent when product media is deleted.
"""
type ProductMediaDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product media the event relates to.
"""
productMedia: ProductMedia
}
"""
Event sent when new product variant is created.
"""
type ProductVariantCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
}
"""
Event sent when product variant is updated.
"""
type ProductVariantUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
}
"""
Event sent when product variant is out of stock.
"""
type ProductVariantOutOfStock implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
"""
Look up a warehouse.
"""
warehouse: Warehouse
}
"""
Event sent when product variant is back in stock.
"""
type ProductVariantBackInStock implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
"""
Look up a warehouse.
"""
warehouse: Warehouse
}
"""
Event sent when product variant stock is updated.
"""
type ProductVariantStockUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
"""
Look up a warehouse.
"""
warehouse: Warehouse
}
"""
Event sent when product variant is deleted.
"""
type ProductVariantDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
}
"""
Event sent when product variant metadata is updated.
"""
type ProductVariantMetadataUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The product variant the event relates to.
"""
productVariant(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ProductVariant
}
"""
Event sent when new sale is created.
DEPRECATED: this event will be removed. Use `PromotionCreated` event instead.
"""
type SaleCreated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The sale the event relates to.
"""
sale(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Sale
}
"""
Event sent when sale is updated.
DEPRECATED: this event will be removed. Use `PromotionUpdated` event instead.
"""
type SaleUpdated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The sale the event relates to.
"""
sale(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Sale
}
"""
Event sent when sale is deleted.
DEPRECATED: this event will be removed. Use `PromotionDeleted` event instead.
"""
type SaleDeleted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The sale the event relates to.
"""
sale(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Sale
}
"""
The event informs about the start or end of the sale.
DEPRECATED: this event will be removed. Use `PromotionStarted` and `PromotionEnded` events instead.
"""
type SaleToggle implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The sale the event relates to.
"""
sale(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Sale
}
"""
Event sent when new promotion is created.
"""
type PromotionCreated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion the event relates to.
"""
promotion: Promotion
}
"""
Event sent when promotion is updated.
"""
type PromotionUpdated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion the event relates to.
"""
promotion: Promotion
}
"""
Event sent when promotion is deleted.
"""
type PromotionDeleted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion the event relates to.
"""
promotion: Promotion
}
"""
The event informs about the start of the promotion.
"""
type PromotionStarted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion the event relates to.
"""
promotion: Promotion
}
"""
The event informs about the end of the promotion.
"""
type PromotionEnded implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion the event relates to.
"""
promotion: Promotion
}
"""
Event sent when new promotion rule is created.
"""
type PromotionRuleCreated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion rule the event relates to.
"""
promotionRule: PromotionRule
}
"""
Event sent when new promotion rule is updated.
"""
type PromotionRuleUpdated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion rule the event relates to.
"""
promotionRule: PromotionRule
}
"""
Event sent when new promotion rule is deleted.
"""
type PromotionRuleDeleted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The promotion rule the event relates to.
"""
promotionRule: PromotionRule
}
"""
Event sent when invoice is requested.
"""
type InvoiceRequested implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The invoice the event relates to.
"""
invoice: Invoice
"""
Order related to the invoice.
"""
order: Order!
}
"""
Event sent when invoice is deleted.
"""
type InvoiceDeleted implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The invoice the event relates to.
"""
invoice: Invoice
"""
Order related to the invoice.
"""
order: Order
}
"""
Event sent when invoice is sent.
"""
type InvoiceSent implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The invoice the event relates to.
"""
invoice: Invoice
"""
Order related to the invoice.
"""
order: Order
}
"""
Event sent when new fulfillment is created.
"""
type FulfillmentCreated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The fulfillment the event relates to.
"""
fulfillment: Fulfillment
"""
The order the fulfillment belongs to.
"""
order: Order
"""
If true, the app should send a notification to the customer.
"""
notifyCustomer: Boolean!
}
"""
Event sent when the tracking number is updated.
"""
type FulfillmentTrackingNumberUpdated implements Event
@doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The fulfillment the event relates to.
"""
fulfillment: Fulfillment
"""
The order the fulfillment belongs to.
"""
order: Order
}
"""
Event sent when fulfillment is canceled.
"""
type FulfillmentCanceled implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The fulfillment the event relates to.
"""
fulfillment: Fulfillment
"""
The order the fulfillment belongs to.
"""
order: Order
}
"""
Event sent when fulfillment is approved.
"""
type FulfillmentApproved implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The fulfillment the event relates to.
"""
fulfillment: Fulfillment
"""
The order the fulfillment belongs to.
"""
order: Order
"""
If true, send a notification to the customer.
"""
notifyCustomer: Boolean!
}
"""
Event sent when fulfillment metadata is updated.
"""
type FulfillmentMetadataUpdated implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The fulfillment the event relates to.
"""
fulfillment: Fulfillment
"""
The order the fulfillment belongs to.
"""
order: Order
}
"""
Event sent when new customer user is created.
"""
type CustomerCreated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when customer user is updated.
"""
type CustomerUpdated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when customer user metadata is updated.
"""
type CustomerMetadataUpdated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when new collection is created.
"""
type CollectionCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The collection the event relates to.
"""
collection(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Collection
}
"""
Event sent when collection is updated.
"""
type CollectionUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The collection the event relates to.
"""
collection(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Collection
}
"""
Event sent when collection is deleted.
"""
type CollectionDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The collection the event relates to.
"""
collection(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Collection
}
"""
Event sent when collection metadata is updated.
"""
type CollectionMetadataUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The collection the event relates to.
"""
collection(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Collection
}
"""
Event sent when new page is created.
"""
type PageCreated implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page the event relates to.
"""
page: Page
}
"""
Event sent when page is updated.
"""
type PageUpdated implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page the event relates to.
"""
page: Page
}
"""
Event sent when page is deleted.
"""
type PageDeleted implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page the event relates to.
"""
page: Page
}
"""
Event sent when new page type is created.
"""
type PageTypeCreated implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page type the event relates to.
"""
pageType: PageType
}
"""
Event sent when page type is updated.
"""
type PageTypeUpdated implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page type the event relates to.
"""
pageType: PageType
}
"""
Event sent when page type is deleted.
"""
type PageTypeDeleted implements Event @doc(category: "Pages") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The page type the event relates to.
"""
pageType: PageType
}
"""
Event sent when new permission group is created.
"""
type PermissionGroupCreated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The permission group the event relates to.
"""
permissionGroup: Group
}
"""
Event sent when permission group is updated.
"""
type PermissionGroupUpdated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The permission group the event relates to.
"""
permissionGroup: Group
}
"""
Event sent when permission group is deleted.
"""
type PermissionGroupDeleted implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The permission group the event relates to.
"""
permissionGroup: Group
}
"""
Event sent when new shipping price is created.
"""
type ShippingPriceCreated implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping method the event relates to.
"""
shippingMethod(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingMethodType
"""
The shipping zone the shipping method belongs to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shipping price is updated.
"""
type ShippingPriceUpdated implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping method the event relates to.
"""
shippingMethod(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingMethodType
"""
The shipping zone the shipping method belongs to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shipping price is deleted.
"""
type ShippingPriceDeleted implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping method the event relates to.
"""
shippingMethod(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingMethodType
"""
The shipping zone the shipping method belongs to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when new shipping zone is created.
"""
type ShippingZoneCreated implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping zone the event relates to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shipping zone is updated.
"""
type ShippingZoneUpdated implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping zone the event relates to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shipping zone is deleted.
"""
type ShippingZoneDeleted implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping zone the event relates to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shipping zone metadata is updated.
"""
type ShippingZoneMetadataUpdated implements Event @doc(category: "Shipping") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The shipping zone the event relates to.
"""
shippingZone(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): ShippingZone
}
"""
Event sent when shop metadata is updated.
"""
type ShopMetadataUpdated implements Event {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when new staff user is created.
"""
type StaffCreated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when staff user is updated.
"""
type StaffUpdated implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when staff user is deleted.
"""
type StaffDeleted implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user the event relates to.
"""
user: User
}
"""
Event sent when setting a new password for staff is requested.
"""
type StaffSetPasswordRequested implements Event @doc(category: "Users") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The URL to redirect the user after he accepts the request.
"""
redirectUrl: String
"""
The user the event relates to.
"""
user: User
"""
The channel data.
"""
channel: Channel
"""
The token required to confirm request.
"""
token: String
"""
Shop data.
"""
shop: Shop
}
"""
Event sent when transaction item metadata is updated.
"""
type TransactionItemMetadataUpdated implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem
}
"""
Event sent when new translation is created.
"""
type TranslationCreated implements Event @doc(category: "Miscellaneous") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The translation the event relates to.
"""
translation: TranslationTypes
}
union TranslationTypes =
ProductTranslation
| CollectionTranslation
| CategoryTranslation
| AttributeTranslation
| AttributeValueTranslation
| ProductVariantTranslation
| PageTranslation
| ShippingMethodTranslation
| VoucherTranslation
| MenuItemTranslation
| PromotionTranslation
| PromotionRuleTranslation
| SaleTranslation
"""
Event sent when translation is updated.
"""
type TranslationUpdated implements Event @doc(category: "Miscellaneous") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The translation the event relates to.
"""
translation: TranslationTypes
}
"""
Event sent when new voucher is created.
"""
type VoucherCreated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher the event relates to.
"""
voucher(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Voucher
}
"""
Event sent when voucher is updated.
"""
type VoucherUpdated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher the event relates to.
"""
voucher(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Voucher
}
"""
Event sent when voucher is deleted.
"""
type VoucherDeleted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher the event relates to.
"""
voucher(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Voucher
}
"""
Event sent when new voucher codes were created.
Added in Saleor 3.19.
"""
type VoucherCodesCreated implements Event {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher codes the event relates to.
"""
voucherCodes: [VoucherCode!]
}
"""
Event sent when voucher codes were deleted.
Added in Saleor 3.19.
"""
type VoucherCodesDeleted implements Event {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher codes the event relates to.
"""
voucherCodes: [VoucherCode!]
}
"""
Event sent when voucher metadata is updated.
"""
type VoucherMetadataUpdated implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The voucher the event relates to.
"""
voucher(
"""
Slug of a channel for which the data should be returned.
"""
channel: String
): Voucher
}
"""
Event sent when voucher code export is completed.
Added in Saleor 3.18.
"""
type VoucherCodeExportCompleted implements Event @doc(category: "Discounts") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The export file for voucher codes.
"""
export: ExportFile
}
"""
Event sent when new warehouse is created.
"""
type WarehouseCreated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The warehouse the event relates to.
"""
warehouse: Warehouse
}
"""
Event sent when warehouse is updated.
"""
type WarehouseUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The warehouse the event relates to.
"""
warehouse: Warehouse
}
"""
Event sent when warehouse is deleted.
"""
type WarehouseDeleted implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The warehouse the event relates to.
"""
warehouse: Warehouse
}
"""
Event sent when warehouse metadata is updated.
"""
type WarehouseMetadataUpdated implements Event @doc(category: "Products") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The warehouse the event relates to.
"""
warehouse: Warehouse
}
"""
Event sent when thumbnail is created.
"""
type ThumbnailCreated implements Event @doc(category: "Miscellaneous") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Thumbnail id.
"""
id: ID
"""
Thumbnail url.
"""
url: String
"""
Object the thumbnail refers to.
"""
objectId: ID
"""
Original media url.
"""
mediaUrl: String
}
"""
Authorize payment.
"""
type PaymentAuthorize implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
Capture payment.
"""
type PaymentCaptureEvent implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
Refund payment.
"""
type PaymentRefundEvent implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
Void payment.
"""
type PaymentVoidEvent implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
Confirm payment.
"""
type PaymentConfirmEvent implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
Process payment.
"""
type PaymentProcessEvent implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a payment.
"""
payment: Payment
}
"""
List payment gateways.
"""
type PaymentListGateways implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
}
"""
Event sent when transaction cancelation is requested.
"""
type TransactionCancelationRequested implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem
"""
Requested action data.
"""
action: TransactionAction!
}
type TransactionAction @doc(category: "Payments") {
"""
Determines the action type.
"""
actionType: TransactionActionEnum!
"""
Transaction request amount.
"""
amount: PositiveDecimal!
"""
Currency code.
"""
currency: String!
}
"""
Event sent when transaction charge is requested.
"""
type TransactionChargeRequested implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem
"""
Requested action data.
"""
action: TransactionAction!
}
"""
Event sent when transaction refund is requested.
"""
type TransactionRefundRequested implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem
"""
Requested action data.
"""
action: TransactionAction!
"""
Granted refund related to refund request.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
grantedRefund: OrderGrantedRefund
}
"""
Filter shipping methods for order.
"""
type OrderFilterShippingMethods implements Event @doc(category: "Orders") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The order the event relates to.
"""
order: Order
"""
Shipping methods that can be used with this checkout.
"""
shippingMethods: [ShippingMethod!]
}
"""
Filter shipping methods for checkout.
"""
type CheckoutFilterShippingMethods implements Event @doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
"""
Shipping methods that can be used with this checkout.
"""
shippingMethods: [ShippingMethod!]
}
"""
List shipping methods for checkout.
"""
type ShippingListMethodsForCheckout implements Event
@doc(category: "Checkout") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The checkout the event relates to.
"""
checkout: Checkout
"""
Shipping methods that can be used with this checkout.
"""
shippingMethods: [ShippingMethod!]
}
"""
Synchronous webhook for calculating checkout/order taxes.
"""
type CalculateTaxes implements Event @doc(category: "Taxes") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
taxBase: TaxableObject!
}
"""
Taxable object.
"""
type TaxableObject @doc(category: "Taxes") {
"""
The source object related to this tax object.
"""
sourceObject: TaxSourceObject!
"""
Determines if prices contain entered tax..
"""
pricesEnteredWithTax: Boolean!
"""
The currency of the object.
"""
currency: String!
"""
The price of shipping method, includes shipping voucher discount if applied.
"""
shippingPrice: Money!
"""
The address data.
"""
address: Address
"""
List of discounts.
"""
discounts: [TaxableObjectDiscount!]!
"""
List of lines assigned to the object.
"""
lines: [TaxableObjectLine!]!
channel: Channel!
}
"""
Taxable object discount.
"""
type TaxableObjectDiscount @doc(category: "Taxes") {
"""
The name of the discount.
"""
name: String
"""
The amount of the discount.
"""
amount: Money!
"""
Indicates which part of the order the discount should affect: SUBTOTAL or SHIPPING.
"""
type: TaxableObjectDiscountTypeEnum!
}
"""
Indicates which part of the order the discount should affect: SUBTOTAL or SHIPPING.
"""
enum TaxableObjectDiscountTypeEnum @doc(category: "Taxes") {
SUBTOTAL
SHIPPING
}
type TaxableObjectLine @doc(category: "Taxes") {
"""
The source line related to this tax line.
"""
sourceLine: TaxSourceLine!
"""
Number of items.
"""
quantity: Int!
"""
Determines if taxes are being charged for the product.
"""
chargeTaxes: Boolean!
"""
The product name.
"""
productName: String!
"""
The variant name.
"""
variantName: String!
"""
The product sku.
"""
productSku: String
"""
Price of the single item in the order line. The price includes catalogue promotions, specific product and applied once per order voucher discounts. The price does not include the entire order discount.
"""
unitPrice: Money!
"""
Price of the order line. The price includes catalogue promotions, specific product and applied once per order voucher discounts. The price does not include the entire order discount.
"""
totalPrice: Money!
}
union TaxSourceLine = CheckoutLine | OrderLine
"""
Event sent when user wants to initialize the payment gateway.
"""
type PaymentGatewayInitializeSession implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Checkout or order
"""
sourceObject: OrderOrCheckout!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
"""
Amount requested for initializing the payment gateway.
"""
amount: PositiveDecimal
}
union OrderOrCheckout = Checkout | Order
"""
Event sent when user starts processing the payment.
"""
type TransactionInitializeSession implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem!
"""
Checkout or order
"""
sourceObject: OrderOrCheckout!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
"""
Merchant reference assigned to this payment.
"""
merchantReference: String!
"""
The customer's IP address. If not provided as a parameter in the mutation, Saleor will try to determine the customer's IP address on its own.
"""
customerIpAddress: String
"""
Action to proceed for the transaction
"""
action: TransactionProcessAction!
"""
Idempotency key assigned to the transaction initialize.
"""
idempotencyKey: String!
}
type TransactionProcessAction @doc(category: "Payments") {
"""
Transaction amount to process.
"""
amount: PositiveDecimal!
"""
Currency of the amount.
"""
currency: String!
actionType: TransactionFlowStrategyEnum!
}
"""
Event sent when user has additional payment action to process.
"""
type TransactionProcessSession implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
Look up a transaction.
"""
transaction: TransactionItem!
"""
Checkout or order
"""
sourceObject: OrderOrCheckout!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
"""
Merchant reference assigned to this payment.
"""
merchantReference: String!
"""
The customer's IP address. If not provided as a parameter in the mutation, Saleor will try to determine the customer's IP address on its own.
"""
customerIpAddress: String
"""
Action to proceed for the transaction
"""
action: TransactionProcessAction!
}
"""
List payment methods stored for the user by payment gateway.
Note: this API is currently in Feature Preview and can be subject to changes at later point.
"""
type ListStoredPaymentMethods implements Event @doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user for which the app should return a list of payment methods.
"""
user: User!
"""
Channel in context which was used to fetch the list of payment methods.
"""
channel: Channel!
}
"""
Event sent when user requests to delete a payment method.
"""
type StoredPaymentMethodDeleteRequested implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user for which the app should proceed with payment method delete request.
"""
user: User!
"""
The ID of the payment method that should be deleted by the payment gateway.
"""
paymentMethodId: String!
"""
Channel related to the requested delete action.
"""
channel: Channel!
}
"""
Event sent to initialize a new session in payment gateway to store the payment method.
"""
type PaymentGatewayInitializeTokenizationSession implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user related to the requested action.
"""
user: User!
"""
Channel related to the requested action.
"""
channel: Channel!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
}
"""
Event sent when user requests a tokenization of payment method.
"""
type PaymentMethodInitializeTokenizationSession implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user related to the requested action.
"""
user: User!
"""
Channel related to the requested action.
"""
channel: Channel!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
"""
The payment flow that the tokenized payment method should support.
"""
paymentFlowToSupport: TokenizedPaymentFlowEnum!
}
"""
Event sent when user continues a tokenization of payment method.
"""
type PaymentMethodProcessTokenizationSession implements Event
@doc(category: "Payments") {
"""
Time of the event.
"""
issuedAt: DateTime
"""
Saleor version that triggered the event.
"""
version: String
"""
The user or application that triggered the event.
"""
issuingPrincipal: IssuingPrincipal
"""
The application receiving the webhook.
"""
recipient: App
"""
The user related to the requested action.
"""
user: User!
"""
Channel related to the requested action.
"""
channel: Channel!
"""
Payment gateway data in JSON format, received from storefront.
"""
data: JSON
"""
The ID returned by app from `PAYMENT_METHOD_INITIALIZE_TOKENIZATION_SESSION` webhook.
"""
id: String!
}
"""
_Any value scalar as defined by Federation spec.
"""
scalar _Any
"""
_Entity union as defined by Federation spec.
"""
union _Entity =
App
| Address
| User
| Group
| ProductVariant
| Product
| ProductType
| ProductMedia
| Category
| Collection
| Order
| PageType
"""
_Service manifest as defined by Federation spec.
"""
type _Service {
sdl: String
}