From 219d54000b884cd178331130bdef17c9ff35c138 Mon Sep 17 00:00:00 2001 From: Clement Date: Tue, 30 Apr 2024 16:27:22 +1000 Subject: [PATCH] Upgraded lib to API 2024-04 --- .../GenerateGraphQLSchema_Test.cs | 3 +- .../Entities/FulfillmentServiceEntity.cs | 2 + .../GraphQL/GraphQLSchema.generated.cs | 3719 +++++++++++++++-- ShopifySharp/Entities/ShippingLine.cs | 6 + .../Services/Checkout/CheckoutService.cs | 2 + .../Services/OrderRisk/OrderRiskService.cs | 2 + ShopifySharp/Services/ShopifyService.cs | 2 +- 7 files changed, 3421 insertions(+), 315 deletions(-) diff --git a/ShopifySharp.Tests/GenerateGraphQLSchema_Test.cs b/ShopifySharp.Tests/GenerateGraphQLSchema_Test.cs index 50221af27..1d6a27e41 100644 --- a/ShopifySharp.Tests/GenerateGraphQLSchema_Test.cs +++ b/ShopifySharp.Tests/GenerateGraphQLSchema_Test.cs @@ -28,7 +28,8 @@ public async Task GenerateGraphQLTypes() { "JSON", "string" }, { "FormattedString", "string" }, { "ARN", "string" }, - { "StorefrontID", "string" } + { "StorefrontID", "string" }, + { "Color", "string" }, }; string csharpCode = await new GraphQLTypeGenerator().GenerateTypesAsync("ShopifySharp.GraphQL", scalarNameToTypeName, async query => { diff --git a/ShopifySharp/Entities/FulfillmentServiceEntity.cs b/ShopifySharp/Entities/FulfillmentServiceEntity.cs index 2be8cf53f..167218d98 100644 --- a/ShopifySharp/Entities/FulfillmentServiceEntity.cs +++ b/ShopifySharp/Entities/FulfillmentServiceEntity.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using System; namespace ShopifySharp { @@ -91,6 +92,7 @@ public class FulfillmentServiceEntity : ShopifyObject /// Whether the fulfillment service wants to register for APIs related to fulfillment orders. /// [JsonProperty("fulfillment_orders_opt_in")] + [Obsolete("https://shopify.dev/changelog/deprecation-of-the-fulfillmentservice-fulfillmentordersoptin-field")] public bool? FulfillmentOrdersOptIn { get; set; } } } \ No newline at end of file diff --git a/ShopifySharp/Entities/GraphQL/GraphQLSchema.generated.cs b/ShopifySharp/Entities/GraphQL/GraphQLSchema.generated.cs index b60094614..4682692e9 100644 --- a/ShopifySharp/Entities/GraphQL/GraphQLSchema.generated.cs +++ b/ShopifySharp/Entities/GraphQL/GraphQLSchema.generated.cs @@ -279,6 +279,10 @@ public class Abandonment : GraphQLObject, INode /// public bool? inventoryAvailable { get; set; } /// + ///Whether the abandonment event comes from a custom storefront channel. + /// + public bool? isFromCustomStorefront { get; set; } + /// ///Whether the abandonment event comes from the Online Store sales channel. /// public bool? isFromOnlineStore { get; set; } @@ -630,6 +634,26 @@ public class AdjustmentSale : GraphQLObject, ISale public MoneyBag? totalTaxAmount { get; set; } } + /// + ///The set of valid sort keys for the Adjustments query. + /// + public enum AdjustmentsSortKeys + { + /// + ///Sort by the `time` value. + /// + TIME, + /// + ///Sort by the `id` value. + /// + ID, + /// + ///Sort by relevance to the search terms when the `query` parameter is specified on the connection. + ///Don't use this sort key when no search query is specified. + /// + RELEVANCE, + } + /// ///Targets all items the cart for a specified discount. /// @@ -3335,6 +3359,12 @@ public class CalculatedOrder : GraphQLObject, INode /// public Order? originalOrder { get; set; } /// + ///Returns the shipping lines on the order that existed before starting the edit. + ///Will include any changes that have been made as well as shipping lines added during the current edit. + ///Returns only the first 250 shipping lines. + /// + public IEnumerable? shippingLines { get; set; } + /// ///List of changes made to the order during the current edit. /// public OrderStagedChangeConnection? stagedChanges { get; set; } @@ -3395,6 +3425,48 @@ public class CalculatedScriptDiscountApplication : GraphQLObject + ///A shipping line item involved in order editing that may be newly added or have new changes applied. + /// + public class CalculatedShippingLine : GraphQLObject + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The price of the shipping line. + /// + public MoneyBag? price { get; set; } + /// + ///The staged status of the shipping line. + /// + public CalculatedShippingLineStagedStatus? stagedStatus { get; set; } + /// + ///The title of the shipping line. + /// + public string? title { get; set; } + } + + /// + ///Represents the staged status of a CalculatedShippingLine on a CalculatedOrder. + /// + public enum CalculatedShippingLineStagedStatus + { + /// + ///The shipping line has no staged changes associated with it. + /// + NONE, + /// + ///The shipping line was added as part of the current order edit. + /// + ADDED, + /// + ///The shipping line was removed as part of the current order edit. + /// + REMOVED, + } + /// ///Card payment details related to a transaction. /// @@ -3651,6 +3723,232 @@ public class CartTransformFeature : GraphQLObject public CartTransformEligibleOperations? eligibleOperations { get; set; } } + /// + ///Tracks an adjustment to the cash in a cash tracking session for a point of sale device over the course of a shift. + /// + public class CashTrackingAdjustment : GraphQLObject, INode + { + /// + ///The amount of cash being added or removed. + /// + public MoneyV2? cash { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The note entered when the adjustment was made. + /// + public string? note { get; set; } + /// + ///The staff member who made the adjustment. + /// + public StaffMember? staffMember { get; set; } + /// + ///The time when the adjustment was made. + /// + public DateTime? time { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CashTrackingAdjustments. + /// + public class CashTrackingAdjustmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in CashTrackingAdjustmentEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CashTrackingAdjustment and a cursor during pagination. + /// + public class CashTrackingAdjustmentEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of CashTrackingAdjustmentEdge. + /// + public CashTrackingAdjustment? node { get; set; } + } + + /// + ///Tracks the balance in a cash drawer for a point of sale device over the course of a shift. + /// + public class CashTrackingSession : GraphQLObject, INode + { + /// + ///The adjustments made to the cash drawer during this session. + /// + public CashTrackingAdjustmentConnection? adjustments { get; set; } + /// + ///Whether this session is tracking cash payments. + /// + public bool? cashTrackingEnabled { get; set; } + /// + ///The counted cash balance when the session was closed. + /// + public MoneyV2? closingBalance { get; set; } + /// + ///The note entered when the session was closed. + /// + public string? closingNote { get; set; } + /// + ///The user who closed the session. + /// + public StaffMember? closingStaffMember { get; set; } + /// + ///When the session was closed. + /// + public DateTime? closingTime { get; set; } + /// + ///The expected balance at the end of the session or the expected current balance for sessions that are still open. + /// + public MoneyV2? expectedBalance { get; set; } + /// + ///The amount that was expected to be in the cash drawer at the end of the session, calculated after the session was closed. + /// + public MoneyV2? expectedClosingBalance { get; set; } + /// + ///The amount expected to be in the cash drawer based on the previous session. + /// + public MoneyV2? expectedOpeningBalance { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The location of the point of sale device during this session. + /// + public Location? location { get; set; } + /// + ///The net cash sales made for the duration of this cash tracking session. + /// + public MoneyV2? netCashSales { get; set; } + /// + ///The counted cash balance when the session was opened. + /// + public MoneyV2? openingBalance { get; set; } + /// + ///The note entered when the session was opened. + /// + public string? openingNote { get; set; } + /// + ///The user who opened the session. + /// + public StaffMember? openingStaffMember { get; set; } + /// + ///When the session was opened. + /// + public DateTime? openingTime { get; set; } + /// + ///The register name for the point of sale device that this session is tracking cash for. + /// + public string? registerName { get; set; } + /// + ///The sum of all adjustments made during the session, excluding the final adjustment. + /// + public MoneyV2? totalAdjustments { get; set; } + /// + ///The sum of all cash refunds for the duration of this cash tracking session. + /// + public MoneyV2? totalCashRefunds { get; set; } + /// + ///The sum of all cash sales for the duration of this cash tracking session. + /// + public MoneyV2? totalCashSales { get; set; } + /// + ///The total discrepancy for the session including starting and ending. + /// + public MoneyV2? totalDiscrepancy { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CashTrackingSessions. + /// + public class CashTrackingSessionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in CashTrackingSessionEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CashTrackingSession and a cursor during pagination. + /// + public class CashTrackingSessionEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of CashTrackingSessionEdge. + /// + public CashTrackingSession? node { get; set; } + } + + /// + ///The set of valid sort keys for the CashTrackingSessions query. + /// + public enum CashTrackingSessionsSortKeys + { + /// + ///Sort by the `opening_time_desc` value. + /// + OPENING_TIME_DESC, + /// + ///Sort by the `opening_time_asc` value. + /// + OPENING_TIME_ASC, + /// + ///Sort by the `closing_time_desc` value. + /// + CLOSING_TIME_DESC, + /// + ///Sort by the `closing_time_asc` value. + /// + CLOSING_TIME_ASC, + /// + ///Sort by the `total_discrepancy_desc` value. + /// + TOTAL_DISCREPANCY_DESC, + /// + ///Sort by the `total_discrepancy_asc` value. + /// + TOTAL_DISCREPANCY_ASC, + /// + ///Sort by the `id` value. + /// + ID, + /// + ///Sort by relevance to the search terms when the `query` parameter is specified on the connection. + ///Don't use this sort key when no search query is specified. + /// + RELEVANCE, + } + /// ///A list of products with publishing and pricing information. ///A catalog can be associated with a specific context, such as a [`Market`](https://shopify.dev/api/admin-graphql/current/objects/market), [`CompanyLocation`](https://shopify.dev/api/admin-graphql/current/objects/companylocation), or [`App`](https://shopify.dev/api/admin-graphql/current/objects/app). @@ -3700,10 +3998,6 @@ public class CatalogConnection : GraphQLObject, IConnectionWi ///Information to aid in pagination. /// public PageInfo? pageInfo { get; set; } - /// - ///The total count of Catalogs. - /// - public ulong? totalCount { get; set; } } /// @@ -4099,6 +4393,10 @@ public class Channel : GraphQLObject, INode /// public ProductConnection? products { get; set; } /// + ///The count of products published to the channel. Limited to a maximum of 10000. + /// + public Count? productsCount { get; set; } + /// ///Whether the channel supports future publishing. /// public bool? supportsFuturePublishing { get; set; } @@ -4213,6 +4511,25 @@ public class CheckoutBranding : GraphQLObject public CheckoutBrandingDesignSystem? designSystem { get; set; } } + /// + ///The container background style. + /// + public enum CheckoutBrandingBackground + { + /// + ///The Base background style. + /// + BASE, + /// + ///The Subdued background style. + /// + SUBDUED, + /// + ///The Transparent background style. + /// + TRANSPARENT, + } + /// ///Possible values for the background style. /// @@ -4247,6 +4564,44 @@ public enum CheckoutBrandingBorder FULL, } + /// + ///The container border style. + /// + public enum CheckoutBrandingBorderStyle + { + /// + ///The Base border style. + /// + BASE, + /// + ///The Dashed border style. + /// + DASHED, + /// + ///The Dotted border style. + /// + DOTTED, + } + + /// + ///The container border width. + /// + public enum CheckoutBrandingBorderWidth + { + /// + ///The Base border width. + /// + BASE, + /// + ///The Large 100 border width. + /// + LARGE_100, + /// + ///The Large 200 border width. + /// + LARGE_200, + } + /// ///The buttons customizations. /// @@ -4313,6 +4668,47 @@ public class CheckoutBrandingButtonColorRoles : GraphQLObject + ///The customizations for the breadcrumbs that represent a buyer's journey to the checkout. + /// + public class CheckoutBrandingBuyerJourney : GraphQLObject + { + /// + ///An option to display or hide the breadcrumbs that represent the buyer's journey on 3-page checkout. + /// + public CheckoutBrandingVisibility? visibility { get; set; } + } + + /// + ///The customizations that you can make to cart links at checkout. + /// + public class CheckoutBrandingCartLink : GraphQLObject + { + /// + ///Whether the cart link is visible at checkout. + /// + public CheckoutBrandingVisibility? visibility { get; set; } + } + + /// + ///Possible values for the cart link content type for the header. + /// + public enum CheckoutBrandingCartLinkContentType + { + /// + ///The checkout header content type icon value. + /// + ICON, + /// + ///The checkout header content type image value. + /// + IMAGE, + /// + ///The checkout header content type text value. + /// + TEXT, + } + /// ///The checkboxes customizations. /// @@ -4443,17 +4839,25 @@ public class CheckoutBrandingColorScheme : GraphQLObject - ///Transparent color scheme selection. + ///The TRANSPARENT color scheme selection. /// TRANSPARENT, /// - ///Color Scheme1 color scheme selection. + ///The COLOR_SCHEME1 color scheme selection. /// COLOR_SCHEME1, /// - ///Color Scheme2 color scheme selection. + ///The COLOR_SCHEME2 color scheme selection. /// COLOR_SCHEME2, + /// + ///The COLOR_SCHEME3 color scheme selection. + /// + COLOR_SCHEME3, + /// + ///The COLOR_SCHEME4 color scheme selection. + /// + COLOR_SCHEME4, } /// @@ -4469,6 +4873,14 @@ public class CheckoutBrandingColorSchemes : GraphQLObject public CheckoutBrandingColorScheme? scheme2 { get; set; } + /// + ///An extra scheme available to customize more surfaces, components or specific states of the user interface. + /// + public CheckoutBrandingColorScheme? scheme3 { get; set; } + /// + ///An extra scheme available to customize more surfaces, components or specific states of the user interface. + /// + public CheckoutBrandingColorScheme? scheme4 { get; set; } } /// @@ -4556,43 +4968,50 @@ public class CheckoutBrandingControlColorRoles : GraphQLObject - ///Possible values for the corner radius. + ///The options for customizing the corner radius of checkout-related objects. Examples include the primary + ///button, the name text fields and the sections within the main area (if they have borders). + ///Refer to this complete [list](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius#fieldswith) + ///for objects with customizable corner radii. + /// + ///The design system defines the corner radius pixel size for each option. Modify the defaults by setting the + ///[designSystem.cornerRadius](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/CheckoutBrandingDesignSystemInput#field-checkoutbrandingdesignsysteminput-cornerradius) + ///input fields. /// public enum CheckoutBrandingCornerRadius { /// - ///The None corner radius. + ///The 0px corner radius (square corners). /// NONE, /// - ///The Small corner radius. + ///The corner radius with a pixel value defined by designSystem.cornerRadius.small. /// SMALL, /// - ///The Base corner radius. + ///The corner radius with a pixel value defined by designSystem.cornerRadius.base. /// BASE, /// - ///The Large corner radius. + ///The corner radius with a pixel value defined by designSystem.cornerRadius.large. /// LARGE, } /// - ///The corner radius variables. + ///Define the pixel size of corner radius options. /// public class CheckoutBrandingCornerRadiusVariables : GraphQLObject { /// - ///The pixel value for base corner radiuses. + ///The value in pixels for base corner radii. Example: 5. /// public int? @base { get; set; } /// - ///The pixel value for large corner radiuses. + ///The value in pixels for large corner radii. Example: 10. /// public int? large { get; set; } /// - ///The pixel value for small corner radiuses. + ///The value in pixels for small corner radii. Example: 3. /// public int? small { get; set; } } @@ -4621,6 +5040,14 @@ public class CheckoutBrandingCustomFont : GraphQLObject public class CheckoutBrandingCustomizations : GraphQLObject { + /// + ///The customizations for the breadcrumbs that represent a buyer's journey to the checkout. + /// + public CheckoutBrandingBuyerJourney? buyerJourney { get; set; } + /// + ///The checkout cart link customizations. For example, by setting the visibility field to `HIDDEN`, you can hide the cart icon in the header for one-page checkout, and the cart link in breadcrumbs in three-page checkout. + /// + public CheckoutBrandingCartLink? cartLink { get; set; } /// ///The checkboxes customizations. /// @@ -4634,10 +5061,18 @@ public class CheckoutBrandingCustomizations : GraphQLObject public CheckoutBrandingControl? control { get; set; } /// + ///The express checkout customizations. + /// + public CheckoutBrandingExpressCheckout? expressCheckout { get; set; } + /// ///The favicon image. /// public CheckoutBrandingImage? favicon { get; set; } /// + ///The footer customizations. + /// + public CheckoutBrandingFooter? footer { get; set; } + /// ///The global customizations. /// public CheckoutBrandingGlobal? global { get; set; } @@ -4708,6 +5143,28 @@ public class CheckoutBrandingDesignSystem : GraphQLObject + ///The Express Checkout customizations. + /// + public class CheckoutBrandingExpressCheckout : GraphQLObject + { + /// + ///The Express Checkout buttons customizations. + /// + public CheckoutBrandingExpressCheckoutButton? button { get; set; } + } + + /// + ///The Express Checkout button customizations. + /// + public class CheckoutBrandingExpressCheckoutButton : GraphQLObject + { + /// + ///The corner radius used for the Express Checkout buttons. + /// + public CheckoutBrandingCornerRadius? cornerRadius { get; set; } + } + /// ///A font. /// @@ -4729,7 +5186,9 @@ public interface ICheckoutBrandingFont : IGraphQLObject } /// - ///A font group. + ///A font group. To learn more about updating fonts, refer to the + ///[checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert) + ///mutation and the checkout branding [tutorial](https://shopify.dev/docs/apps/checkout/styling). /// public class CheckoutBrandingFontGroup : GraphQLObject { @@ -4794,13 +5253,86 @@ public class CheckoutBrandingFontSize : GraphQLObject public float? ratio { get; set; } } + /// + ///A container for the footer section customizations. + /// + public class CheckoutBrandingFooter : GraphQLObject + { + /// + ///The footer alignment. + /// + public CheckoutBrandingFooterAlignment? alignment { get; set; } + /// + ///The selected color scheme of the footer container. + /// + public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// + ///The footer content settings. + /// + public CheckoutBrandingFooterContent? content { get; set; } + /// + ///The padding of the footer container. + /// + public CheckoutBrandingSpacingKeyword? padding { get; set; } + /// + ///The footer position. + /// + public CheckoutBrandingFooterPosition? position { get; set; } + } + + /// + ///Possible values for the footer alignment. + /// + public enum CheckoutBrandingFooterAlignment + { + /// + ///The checkout footer alignment Start value. + /// + START, + /// + ///The checkout footer alignment Center value. + /// + CENTER, + /// + ///The checkout footer alignment End value. + /// + END, + } + + /// + ///The footer content customizations. + /// + public class CheckoutBrandingFooterContent : GraphQLObject + { + /// + ///The visibility settings for footer content. + /// + public CheckoutBrandingVisibility? visibility { get; set; } + } + + /// + ///Possible values for the footer position. + /// + public enum CheckoutBrandingFooterPosition + { + /// + ///The End footer position. + /// + END, + /// + ///The Inline footer position. + /// + INLINE, + } + /// ///The global customizations. /// public class CheckoutBrandingGlobal : GraphQLObject { /// - ///The global corner radius. + ///The global corner radius setting that overrides all other [corner radius](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius) + ///customizations. /// public CheckoutBrandingGlobalCornerRadius? cornerRadius { get; set; } /// @@ -4810,12 +5342,16 @@ public class CheckoutBrandingGlobal : GraphQLObject } /// - ///Possible values for the corner radius. + ///Possible choices to override corner radius customizations on all applicable objects. Note that this selection + ///can only be used to set the override to `NONE` (0px). + /// + ///For more customizations options, set the [corner radius](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius) + ///selection on specific objects while leaving the global corner radius unset. /// public enum CheckoutBrandingGlobalCornerRadius { /// - ///The None corner radius. + ///Set the global corner radius override to 0px (square corners). /// NONE, } @@ -4834,10 +5370,22 @@ public class CheckoutBrandingHeader : GraphQLObject /// public CheckoutBrandingImage? banner { get; set; } /// + ///The cart link customizations for 1-page checkout. This field allows to customize the cart icon that renders by default on 1-page checkout. + /// + public CheckoutBrandingHeaderCartLink? cartLink { get; set; } + /// + ///The selected color scheme of the header container. + /// + public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// ///The store logo. /// public CheckoutBrandingLogo? logo { get; set; } /// + ///The padding of the header container. + /// + public CheckoutBrandingSpacingKeyword? padding { get; set; } + /// ///The header position. /// public CheckoutBrandingHeaderPosition? position { get; set; } @@ -4862,6 +5410,21 @@ public enum CheckoutBrandingHeaderAlignment END, } + /// + ///The header cart link customizations. + /// + public class CheckoutBrandingHeaderCartLink : GraphQLObject + { + /// + ///The content type for the header back to cart link in 1-page checkout. Setting this to image will render the custom image provided using the image field on the header cart_link object. If no image is provided, the default cart icon will be used. + /// + public CheckoutBrandingCartLinkContentType? contentType { get; set; } + /// + ///The image that's used for the header back to cart link in 1-page checkout when the content type is set to image. + /// + public Image? image { get; set; } + } + /// ///The possible header positions. /// @@ -4931,6 +5494,10 @@ public class CheckoutBrandingLogo : GraphQLObject ///The maximum width of the logo. /// public int? maxWidth { get; set; } + /// + ///The visibility of the logo. + /// + public CheckoutBrandingVisibility? visibility { get; set; } } /// @@ -4946,6 +5513,49 @@ public class CheckoutBrandingMain : GraphQLObject ///The selected color scheme of the main container. /// public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// + ///The settings for the main sections. + /// + public CheckoutBrandingMainSection? section { get; set; } + } + + /// + ///The main sections customizations. + /// + public class CheckoutBrandingMainSection : GraphQLObject + { + /// + ///The background style of the main sections. + /// + public CheckoutBrandingBackground? background { get; set; } + /// + ///The border for the main sections. + /// + public CheckoutBrandingSimpleBorder? border { get; set; } + /// + ///The border style of the main sections. + /// + public CheckoutBrandingBorderStyle? borderStyle { get; set; } + /// + ///The border width of the main sections. + /// + public CheckoutBrandingBorderWidth? borderWidth { get; set; } + /// + ///The selected color scheme of the main sections. + /// + public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// + ///The corner radius of the main sections. + /// + public CheckoutBrandingCornerRadius? cornerRadius { get; set; } + /// + ///The padding of the main sections. + /// + public CheckoutBrandingSpacingKeyword? padding { get; set; } + /// + ///The shadow of the main sections. + /// + public CheckoutBrandingShadow? shadow { get; set; } } /// @@ -4976,6 +5586,49 @@ public class CheckoutBrandingOrderSummary : GraphQLObject public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// + ///The settings for the order summary sections. + /// + public CheckoutBrandingOrderSummarySection? section { get; set; } + } + + /// + ///The order summary sections customizations. + /// + public class CheckoutBrandingOrderSummarySection : GraphQLObject + { + /// + ///The background style of the order summary sections. + /// + public CheckoutBrandingBackground? background { get; set; } + /// + ///The border for the order summary sections. + /// + public CheckoutBrandingSimpleBorder? border { get; set; } + /// + ///The border style of the order summary sections. + /// + public CheckoutBrandingBorderStyle? borderStyle { get; set; } + /// + ///The border width of the order summary sections. + /// + public CheckoutBrandingBorderWidth? borderWidth { get; set; } + /// + ///The selected color scheme of the order summary sections. + /// + public CheckoutBrandingColorSchemeSelection? colorScheme { get; set; } + /// + ///The corner radius of the order summary sections. + /// + public CheckoutBrandingCornerRadius? cornerRadius { get; set; } + /// + ///The padding of the order summary sections. + /// + public CheckoutBrandingSpacingKeyword? padding { get; set; } + /// + ///The shadow of the order summary sections. + /// + public CheckoutBrandingShadow? shadow { get; set; } } /// @@ -4993,6 +5646,33 @@ public class CheckoutBrandingSelect : GraphQLObject public CheckoutBrandingTypographyStyle? typography { get; set; } } + /// + ///The container shadow. + /// + public enum CheckoutBrandingShadow + { + /// + ///The Small 200 shadow. + /// + SMALL_200, + /// + ///The Small 100 shadow. + /// + SMALL_100, + /// + ///The Base shadow. + /// + BASE, + /// + ///The Large 100 shadow. + /// + LARGE_100, + /// + ///The Large 200 shadow. + /// + LARGE_200, + } + /// ///A Shopify font. /// @@ -5133,7 +5813,11 @@ public class CheckoutBrandingTextField : GraphQLObject - ///The typography settings. + ///The typography settings used for checkout-related text. Use these settings to customize the + ///font family and size for primary and secondary text elements. + /// + ///Refer to the [typography tutorial](https://shopify.dev/docs/apps/checkout/styling/customize-typography) + ///for further information on typography customization. /// public class CheckoutBrandingTypography : GraphQLObject { @@ -5146,7 +5830,7 @@ public class CheckoutBrandingTypography : GraphQLObject public CheckoutBrandingFontGroup? secondary { get; set; } /// - ///The font size. + ///The font size design system (base size in pixels and scaling between different sizes). /// public CheckoutBrandingFontSize? size { get; set; } } @@ -5209,36 +5893,41 @@ public enum CheckoutBrandingTypographyLetterCase } /// - ///Possible values for the font size. + ///Possible choices for the font size. + /// + ///Note that the value in pixels of these settings can be customized with the + ///[typography size](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/CheckoutBrandingFontSizeInput) + ///object. Refer to the [typography tutorial](https://shopify.dev/docs/apps/checkout/styling/customize-typography) + ///for more information. /// public enum CheckoutBrandingTypographySize { /// - ///The extra small font size. + ///The extra small font size. Example: 10px. /// EXTRA_SMALL, /// - ///The small font size. + ///The small font size. Example: 12px. /// SMALL, /// - ///The base font size. + ///The base font size. Example: 14px. /// BASE, /// - ///The medium font size. + ///The medium font size. Example: 16px. /// MEDIUM, /// - ///The large font size. + ///The large font size. Example: 19px. /// LARGE, /// - ///The extra large font size. + ///The extra large font size. Example: 21px. /// EXTRA_LARGE, /// - ///The extra extra large font size. + ///The extra extra large font size. Example: 24px. /// EXTRA_EXTRA_LARGE, } @@ -5345,6 +6034,21 @@ public enum CheckoutBrandingUpsertUserErrorCode INTERNAL_ERROR, } + /// + ///Possible visibility states. + /// + public enum CheckoutBrandingVisibility + { + /// + ///The Hidden visibility setting. + /// + HIDDEN, + /// + ///The Visible visibility setting. + /// + VISIBLE, + } + /// ///A checkout profile defines the branding settings and the UI extensions for a store's checkout. A checkout profile could be published or draft. A store might have at most one published checkout profile, which is used to render their live checkout. The store could also have multiple draft profiles that were created, previewed, and published using the admin checkout editor. /// @@ -5490,7 +6194,7 @@ public class Collection : GraphQLObject, IHasMetafieldDefinitions, I /// ///The number of publications a resource is published to without feedback errors. /// - public int? availablePublicationCount { get; set; } + public Count? availablePublicationsCount { get; set; } /// ///A single-line, text-only description of the collection, stripped of any HTML tags and formatting that were included in the description. /// @@ -5558,10 +6262,12 @@ public class Collection : GraphQLObject, IHasMetafieldDefinitions, I /// ///The number of products in the collection. /// - public int? productsCount { get; set; } + public Count? productsCount { get; set; } + /// ///The number of publications a resource is published on. /// + [Obsolete("Use `resourcePublicationsCount` instead.")] public int? publicationCount { get; set; } /// @@ -5594,6 +6300,10 @@ public class Collection : GraphQLObject, IHasMetafieldDefinitions, I /// public ResourcePublicationConnection? resourcePublications { get; set; } /// + ///The number of publications a resource is published on. + /// + public Count? resourcePublicationsCount { get; set; } + /// ///The list of resources that are either published or staged to be published to a publication. /// public ResourcePublicationV2Connection? resourcePublicationsV2 { get; set; } @@ -6424,11 +7134,12 @@ public class CompaniesDeletePayload : GraphQLObject /// ///Represents information about a company which is also a customer of the shop. /// - public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INavigable, INode + public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INavigable, INode, IMetafieldReferencer { /// ///The number of contacts that belong to the company. /// + [Obsolete("Use `contactsCount` instead.")] public int? contactCount { get; set; } /// ///The list of roles for the company contacts. @@ -6439,6 +7150,10 @@ public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, /// public CompanyContactConnection? contacts { get; set; } /// + ///The number of contacts that belong to the company. + /// + public Count? contactsCount { get; set; } + /// ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was created in Shopify. /// public DateTime? createdAt { get; set; } @@ -6479,14 +7194,14 @@ public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, /// public string? lifetimeDuration { get; set; } /// - ///The number of locations that belong to the company. - /// - public int? locationCount { get; set; } - /// ///The list of locations in the company. /// public CompanyLocationConnection? locations { get; set; } /// + ///The number of locations that belong to the company. + /// + public Count? locationsCount { get; set; } + /// ///The main contact for the company. /// public CompanyContact? mainContact { get; set; } @@ -6511,13 +7226,13 @@ public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, /// public string? note { get; set; } /// - ///The total number of orders placed for this company, across all its locations. - /// - public int? orderCount { get; set; } - /// ///The list of the company's orders. /// public OrderConnection? orders { get; set; } + /// + ///The total number of orders placed for this company, across all its locations. + /// + public Count? ordersCount { get; set; } /// ///Returns a private metafield by namespace and key that belongs to the resource. @@ -7207,7 +7922,7 @@ public class CompanyEdge : GraphQLObject, IEdge /// ///A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. /// - public class CompanyLocation : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INavigable, INode + public class CompanyLocation : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INavigable, INode, IMetafieldReferencer { /// ///The address used as billing address for the location. @@ -7222,6 +7937,10 @@ public class CompanyLocation : GraphQLObject, ICommentEventSubj /// public CatalogConnection? catalogs { get; set; } /// + ///The number of catalogs associated with the company location. + /// + public Count? catalogsCount { get; set; } + /// ///The company that the company location belongs to. /// public Company? company { get; set; } @@ -7289,15 +8008,21 @@ public class CompanyLocation : GraphQLObject, ICommentEventSubj ///A note about the company location. /// public string? note { get; set; } + /// ///The total number of orders placed for the location. /// + [Obsolete("Use `ordersCount` instead.")] public int? orderCount { get; set; } /// ///The list of orders for the company location. /// public OrderConnection? orders { get; set; } /// + ///The total number of orders placed for the location. + /// + public Count? ordersCount { get; set; } + /// ///The phone number of the company location. /// public string? phone { get; set; } @@ -7396,7 +8121,7 @@ public class CompanyLocationCatalog : GraphQLObject, ICa /// ///The number of company locations associated with the catalog. /// - public int? companyLocationsCount { get; set; } + public Count? companyLocationsCount { get; set; } /// ///A globally-unique ID. /// @@ -7683,6 +8408,36 @@ public class CompanyUpdatePayload : GraphQLObject public IEnumerable? userErrors { get; set; } } + /// + ///Details for count of elements. + /// + public class Count : GraphQLObject + { + /// + ///Count of elements. + /// + public int? count { get; set; } + /// + ///Precision of count, how exact is the value. + /// + public CountPrecision? precision { get; set; } + } + + /// + ///The precision of the value returned by a count field. + /// + public enum CountPrecision + { + /// + ///The count is exactly the value. + /// + EXACT, + /// + ///The count is at least the value. A limit was imposed and reached. + /// + AT_LEAST, + } + /// ///The list of all the countries from the combined shipping zones for the shop. /// @@ -10246,7 +11001,7 @@ public class CustomerJourneySummary : GraphQLObject /// ///The total number of customer moments associated with this order. Returns null if the order is still in the process of being attributed. /// - public int? momentsCount { get; set; } + public Count? momentsCount { get; set; } /// ///Whether the attributed sessions for the order have been created yet. /// @@ -12296,7 +13051,160 @@ public class DeliveryBrandedPromise : GraphQLObject } /// - ///A shipping service provider or a carrier account. + ///A carrier service (also known as a carrier calculated service or shipping service) provides real-time shipping rates to Shopify. Some common carrier services include Canada Post, FedEx, UPS, and USPS. The term **carrier** is often used interchangeably with the terms **shipping company** and **rate provider**. + /// + ///Using the CarrierService resource, you can add a carrier service to a shop and then provide a list of applicable shipping rates at checkout. You can even use the cart data to adjust shipping rates and offer shipping discounts based on what is in the customer's cart. + /// + ///## Requirements for accessing the CarrierService resource + ///To access the CarrierService resource, add the `write_shipping` permission to your app's requested scopes. For more information, see [API access scopes](https://shopify.dev/docs/admin-api/access-scopes). + /// + ///Your app's request to create a carrier service will fail unless the store installing your carrier service meets one of the following requirements: + ///* It's on the Advanced Shopify plan or higher. + ///* It's on the Shopify plan with yearly billing, or the carrier service feature has been added to the store for a monthly fee. For more information, contact [Shopify Support](https://help.shopify.com/questions). + ///* It's a development store. + /// + ///> Note: + ///> If a store changes its Shopify plan, then the store's association with a carrier service is deactivated if the store no long meets one of the requirements above. + /// + ///## Providing shipping rates to Shopify + ///When adding a carrier service to a store, you need to provide a POST endpoint rooted in the `callbackUrl` property where Shopify can retrieve applicable shipping rates. The callback URL should be a public endpoint that expects these requests from Shopify. + /// + ///### Example shipping rate request sent to a carrier service + /// + ///```json + ///{ + /// "rate": { + /// "origin": { + /// "country": "CA", + /// "postal_code": "K2P1L4", + /// "province": "ON", + /// "city": "Ottawa", + /// "name": null, + /// "address1": "150 Elgin St.", + /// "address2": "", + /// "address3": null, + /// "phone": null, + /// "fax": null, + /// "email": null, + /// "address_type": null, + /// "company_name": "Jamie D's Emporium" + /// }, + /// "destination": { + /// "country": "CA", + /// "postal_code": "K1M1M4", + /// "province": "ON", + /// "city": "Ottawa", + /// "name": "Bob Norman", + /// "address1": "24 Sussex Dr.", + /// "address2": "", + /// "address3": null, + /// "phone": null, + /// "fax": null, + /// "email": null, + /// "address_type": null, + /// "company_name": null + /// }, + /// "items": [{ + /// "name": "Short Sleeve T-Shirt", + /// "sku": "", + /// "quantity": 1, + /// "grams": 1000, + /// "price": 1999, + /// "vendor": "Jamie D's Emporium", + /// "requires_shipping": true, + /// "taxable": true, + /// "fulfillment_service": "manual", + /// "properties": null, + /// "product_id": 48447225880, + /// "variant_id": 258644705304 + /// }], + /// "currency": "USD", + /// "locale": "en" + /// } + ///} + ///``` + /// + ///### Example response + ///```json + ///{ + /// "rates": [ + /// { + /// "service_name": "canadapost-overnight", + /// "service_code": "ON", + /// "total_price": "1295", + /// "description": "This is the fastest option by far", + /// "currency": "CAD", + /// "min_delivery_date": "2013-04-12 14:48:45 -0400", + /// "max_delivery_date": "2013-04-12 14:48:45 -0400" + /// }, + /// { + /// "service_name": "fedex-2dayground", + /// "service_code": "2D", + /// "total_price": "2934", + /// "currency": "USD", + /// "min_delivery_date": "2013-04-12 14:48:45 -0400", + /// "max_delivery_date": "2013-04-12 14:48:45 -0400" + /// }, + /// { + /// "service_name": "fedex-priorityovernight", + /// "service_code": "1D", + /// "total_price": "3587", + /// "currency": "USD", + /// "min_delivery_date": "2013-04-12 14:48:45 -0400", + /// "max_delivery_date": "2013-04-12 14:48:45 -0400" + /// } + /// ] + ///} + ///``` + /// + ///The `address3`, `fax`, `address_type`, and `company_name` fields are returned by specific [ActiveShipping](https://github.com/Shopify/active_shipping) providers. For API-created carrier services, you should use only the following shipping address fields: + ///* `address1` + ///* `address2` + ///* `city` + ///* `zip` + ///* `province` + ///* `country` + /// + ///Other values remain as `null` and are not sent to the callback URL. + /// + ///### Response fields + /// + ///When Shopify requests shipping rates using your callback URL, the response object `rates` must be a JSON array of objects with the following fields. Required fields must be included in the response for the carrier service integration to work properly. + /// + ///| Field | Required | Description | + ///| ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + ///| `service_name` | Yes | The name of the rate, which customers see at checkout. For example: `Expedited Mail`. | + ///| `description` | Yes | A description of the rate, which customers see at checkout. For example: `Includes tracking and insurance`. | + ///| `service_code` | Yes | A unique code associated with the rate. For example: `expedited_mail`. | + ///| `currency` | Yes | The currency of the shipping rate. | + ///| `total_price` | Yes | The total price expressed in subunits. If the currency doesn't use subunits, then the value must be multiplied by 100. For example: `"total_price": 500` for 5.00 CAD, `"total_price": 100000` for 1000 JPY. | + ///| `phone_required` | No | Whether the customer must provide a phone number at checkout. | + ///| `min_delivery_date` | No | The earliest delivery date for the displayed rate. | + ///| `max_delivery_date` | No | The latest delivery date for the displayed rate to still be valid. | + /// + ///## Response Timeouts + ///The read timeout for rate requests are dynamic, based on the number of requests per minute (RPM). These limits are applied to each shop-app pair. The timeout values are as follows. + /// + ///| RPM Range | Timeout | + ///| ------------- | ---------- | + ///| Under 1500 | 10s | + ///| 1500 to 3000 | 5s | + ///| Over 3000 | 3s | + /// + ///> Note: + ///> These values are upper limits and should not be interpretted as a goal to develop towards. Shopify is constantly evaluating the performance of the platform and working towards improving resilience as well as app capabilities. As such, these numbers may be adjusted outside of our normal versioning timelines. + /// + ///## Server-side caching of requests + ///Shopify provides server-side caching to reduce the number of requests it makes. Any shipping rate request that identically matches the following fields will be retrieved from Shopify's cache of the initial response: + ///* variant IDs + ///* default shipping box weight and dimensions + ///* variant quantities + ///* carrier service ID + ///* origin address + ///* destination address + ///* item weights and signatures + /// + ///If any of these fields differ, or if the cache has expired since the original request, then new shipping rates are requested. The cache expires 15 minutes after rates are successfully returned. If an error occurs, then the cache expires after 30 seconds. /// public class DeliveryCarrierService : GraphQLObject, INode { @@ -12794,7 +13702,7 @@ public class DeliveryLocationGroup : GraphQLObject, INode /// ///A count of all locations that are part of this location group. /// - public int? locationsCount { get; set; } + public Count? locationsCount { get; set; } } /// @@ -12889,6 +13797,10 @@ public enum DeliveryLocationLocalPickupSettingsErrorCode /// public class DeliveryMethod : GraphQLObject, INode { + /// + ///The Additional information to consider when performing the delivery. + /// + public DeliveryMethodAdditionalInformation? additionalInformation { get; set; } /// ///The branded promise that was presented to the buyer during checkout. For example: Shop Promise. /// @@ -12915,6 +13827,21 @@ public class DeliveryMethod : GraphQLObject, INode public string? serviceCode { get; set; } } + /// + ///Additional information included on a delivery method that will help during the delivery process. + /// + public class DeliveryMethodAdditionalInformation : GraphQLObject + { + /// + ///The delivery instructions to follow when performing the delivery. + /// + public string? instructions { get; set; } + /// + ///The phone number to contact when performing the delivery. + /// + public string? phone { get; set; } + } + /// ///A method definition contains the delivery rate and the conditions that must be met for the method to be ///applied. @@ -12926,7 +13853,7 @@ public class DeliveryMethodDefinition : GraphQLObject, /// public bool? active { get; set; } /// - ///The description of the method definition. + ///The description of the method definition. Only available on shipping rates that are custom. /// public string? description { get; set; } /// @@ -13133,15 +14060,15 @@ public class DeliveryProfile : GraphQLObject, INode ///The number of active origin locations for the profile. /// public int? originLocationCount { get; set; } - /// - ///The number of product variants for this profile. The count for the default profile isn't supported and will return -1. + ///How many product variants are in this profile. /// - [Obsolete("Use `productVariantsCountV2` instead.")] - public int? productVariantsCount { get; set; } + public Count? productVariantsCount { get; set; } + /// ///How many product variants are in this profile. /// + [Obsolete("Use `productVariantsCount` instead.")] public DeliveryProductVariantsCount? productVariantsCountV2 { get; set; } /// ///The products and variants associated with this profile. @@ -14316,14 +15243,14 @@ public interface IDiscountCode : IGraphQLObject /// public int? asyncUsageCount { get; set; } /// - ///The number of redeem codes for the discount. - /// - public int? codeCount { get; set; } - /// ///A list of redeem codes for the discount. /// public DiscountRedeemCodeConnection? codes { get; set; } /// + ///The number of redeem codes for the discount. + /// + public Count? codesCount { get; set; } + /// ///Determines which discount classes the discount can combine with. /// public DiscountCombinesWith? combinesWith { get; set; } @@ -14406,14 +15333,14 @@ public class DiscountCodeApp : GraphQLObject, IDiscount, IDisco /// public int? asyncUsageCount { get; set; } /// - ///The number of redeem codes for the discount. - /// - public int? codeCount { get; set; } - /// ///A list of redeem codes for the discount. /// public DiscountRedeemCodeConnection? codes { get; set; } /// + ///The number of redeem codes for the discount. + /// + public Count? codesCount { get; set; } + /// ///Determines which discount classes the discount can combine with. /// public DiscountCombinesWith? combinesWith { get; set; } @@ -14558,14 +15485,14 @@ public class DiscountCodeBasic : GraphQLObject, IDiscount, ID /// public int? asyncUsageCount { get; set; } /// - ///The number of redeem codes for the discount. - /// - public int? codeCount { get; set; } - /// ///A list of redeem codes for the discount. /// public DiscountRedeemCodeConnection? codes { get; set; } /// + ///The number of redeem codes for the discount. + /// + public Count? codesCount { get; set; } + /// ///Determines which discount classes the discount can combine with. /// public DiscountCombinesWith? combinesWith { get; set; } @@ -14728,14 +15655,14 @@ public class DiscountCodeBxgy : GraphQLObject, IDiscount, IDis /// public int? asyncUsageCount { get; set; } /// - ///The number of redeem codes for the discount. - /// - public int? codeCount { get; set; } - /// ///A list of redeem codes for the discount. /// public DiscountRedeemCodeConnection? codes { get; set; } /// + ///The number of redeem codes for the discount. + /// + public Count? codesCount { get; set; } + /// ///Determines which discount classes the discount can combine with. /// public DiscountCombinesWith? combinesWith { get; set; } @@ -14887,14 +15814,14 @@ public class DiscountCodeFreeShipping : GraphQLObject, /// public int? asyncUsageCount { get; set; } /// - ///The number of redeem codes for the discount. - /// - public int? codeCount { get; set; } - /// ///A list of redeem codes for the discount. /// public DiscountRedeemCodeConnection? codes { get; set; } /// + ///The number of redeem codes for the discount. + /// + public Count? codesCount { get; set; } + /// ///Determines which discount classes the discount can combine with. /// public DiscountCombinesWith? combinesWith { get; set; } @@ -15862,7 +16789,7 @@ public enum DiscountStatus /// EXPIRED, /// - ///The discount is scheduled. + ///The discount is scheduled when it has a start date in the future. /// SCHEDULED, } @@ -15994,9 +16921,13 @@ public class DiscountUserError : GraphQLObject, IDisplayableE [JsonDerivedType(typeof(MetaobjectUserError), typeDiscriminator: "MetaobjectUserError")] [JsonDerivedType(typeof(OrderCancelUserError), typeDiscriminator: "OrderCancelUserError")] [JsonDerivedType(typeof(OrderCreateMandatePaymentUserError), typeDiscriminator: "OrderCreateMandatePaymentUserError")] + [JsonDerivedType(typeof(OrderEditAddShippingLineUserError), typeDiscriminator: "OrderEditAddShippingLineUserError")] [JsonDerivedType(typeof(OrderEditRemoveDiscountUserError), typeDiscriminator: "OrderEditRemoveDiscountUserError")] + [JsonDerivedType(typeof(OrderEditRemoveShippingLineUserError), typeDiscriminator: "OrderEditRemoveShippingLineUserError")] [JsonDerivedType(typeof(OrderEditUpdateDiscountUserError), typeDiscriminator: "OrderEditUpdateDiscountUserError")] + [JsonDerivedType(typeof(OrderEditUpdateShippingLineUserError), typeDiscriminator: "OrderEditUpdateShippingLineUserError")] [JsonDerivedType(typeof(OrderInvoiceSendUserError), typeDiscriminator: "OrderInvoiceSendUserError")] + [JsonDerivedType(typeof(OrderRiskAssessmentCreateUserError), typeDiscriminator: "OrderRiskAssessmentCreateUserError")] [JsonDerivedType(typeof(PaymentCustomizationError), typeDiscriminator: "PaymentCustomizationError")] [JsonDerivedType(typeof(PaymentReminderSendUserError), typeDiscriminator: "PaymentReminderSendUserError")] [JsonDerivedType(typeof(PaymentTermsCreateUserError), typeDiscriminator: "PaymentTermsCreateUserError")] @@ -16012,6 +16943,11 @@ public class DiscountUserError : GraphQLObject, IDisplayableE [JsonDerivedType(typeof(ProductFeedCreateUserError), typeDiscriminator: "ProductFeedCreateUserError")] [JsonDerivedType(typeof(ProductFeedDeleteUserError), typeDiscriminator: "ProductFeedDeleteUserError")] [JsonDerivedType(typeof(ProductFullSyncUserError), typeDiscriminator: "ProductFullSyncUserError")] + [JsonDerivedType(typeof(ProductOptionUpdateUserError), typeDiscriminator: "ProductOptionUpdateUserError")] + [JsonDerivedType(typeof(ProductOptionsCreateUserError), typeDiscriminator: "ProductOptionsCreateUserError")] + [JsonDerivedType(typeof(ProductOptionsDeleteUserError), typeDiscriminator: "ProductOptionsDeleteUserError")] + [JsonDerivedType(typeof(ProductOptionsReorderUserError), typeDiscriminator: "ProductOptionsReorderUserError")] + [JsonDerivedType(typeof(ProductSetUserError), typeDiscriminator: "ProductSetUserError")] [JsonDerivedType(typeof(ProductVariantRelationshipBulkUpdateUserError), typeDiscriminator: "ProductVariantRelationshipBulkUpdateUserError")] [JsonDerivedType(typeof(ProductVariantsBulkCreateUserError), typeDiscriminator: "ProductVariantsBulkCreateUserError")] [JsonDerivedType(typeof(ProductVariantsBulkDeleteUserError), typeDiscriminator: "ProductVariantsBulkDeleteUserError")] @@ -16035,6 +16971,7 @@ public class DiscountUserError : GraphQLObject, IDisplayableE [JsonDerivedType(typeof(SubscriptionContractUserError), typeDiscriminator: "SubscriptionContractUserError")] [JsonDerivedType(typeof(SubscriptionDraftUserError), typeDiscriminator: "SubscriptionDraftUserError")] [JsonDerivedType(typeof(TaxAppConfigureUserError), typeDiscriminator: "TaxAppConfigureUserError")] + [JsonDerivedType(typeof(TransactionVoidUserError), typeDiscriminator: "TransactionVoidUserError")] [JsonDerivedType(typeof(TranslationUserError), typeDiscriminator: "TranslationUserError")] [JsonDerivedType(typeof(UrlRedirectBulkDeleteByIdsUserError), typeDiscriminator: "UrlRedirectBulkDeleteByIdsUserError")] [JsonDerivedType(typeof(UrlRedirectBulkDeleteBySavedSearchUserError), typeDiscriminator: "UrlRedirectBulkDeleteBySavedSearchUserError")] @@ -16111,9 +17048,13 @@ public interface IDisplayableError : IGraphQLObject public MetaobjectUserError? AsMetaobjectUserError() => this as MetaobjectUserError; public OrderCancelUserError? AsOrderCancelUserError() => this as OrderCancelUserError; public OrderCreateMandatePaymentUserError? AsOrderCreateMandatePaymentUserError() => this as OrderCreateMandatePaymentUserError; + public OrderEditAddShippingLineUserError? AsOrderEditAddShippingLineUserError() => this as OrderEditAddShippingLineUserError; public OrderEditRemoveDiscountUserError? AsOrderEditRemoveDiscountUserError() => this as OrderEditRemoveDiscountUserError; + public OrderEditRemoveShippingLineUserError? AsOrderEditRemoveShippingLineUserError() => this as OrderEditRemoveShippingLineUserError; public OrderEditUpdateDiscountUserError? AsOrderEditUpdateDiscountUserError() => this as OrderEditUpdateDiscountUserError; + public OrderEditUpdateShippingLineUserError? AsOrderEditUpdateShippingLineUserError() => this as OrderEditUpdateShippingLineUserError; public OrderInvoiceSendUserError? AsOrderInvoiceSendUserError() => this as OrderInvoiceSendUserError; + public OrderRiskAssessmentCreateUserError? AsOrderRiskAssessmentCreateUserError() => this as OrderRiskAssessmentCreateUserError; public PaymentCustomizationError? AsPaymentCustomizationError() => this as PaymentCustomizationError; public PaymentReminderSendUserError? AsPaymentReminderSendUserError() => this as PaymentReminderSendUserError; public PaymentTermsCreateUserError? AsPaymentTermsCreateUserError() => this as PaymentTermsCreateUserError; @@ -16129,6 +17070,11 @@ public interface IDisplayableError : IGraphQLObject public ProductFeedCreateUserError? AsProductFeedCreateUserError() => this as ProductFeedCreateUserError; public ProductFeedDeleteUserError? AsProductFeedDeleteUserError() => this as ProductFeedDeleteUserError; public ProductFullSyncUserError? AsProductFullSyncUserError() => this as ProductFullSyncUserError; + public ProductOptionUpdateUserError? AsProductOptionUpdateUserError() => this as ProductOptionUpdateUserError; + public ProductOptionsCreateUserError? AsProductOptionsCreateUserError() => this as ProductOptionsCreateUserError; + public ProductOptionsDeleteUserError? AsProductOptionsDeleteUserError() => this as ProductOptionsDeleteUserError; + public ProductOptionsReorderUserError? AsProductOptionsReorderUserError() => this as ProductOptionsReorderUserError; + public ProductSetUserError? AsProductSetUserError() => this as ProductSetUserError; public ProductVariantRelationshipBulkUpdateUserError? AsProductVariantRelationshipBulkUpdateUserError() => this as ProductVariantRelationshipBulkUpdateUserError; public ProductVariantsBulkCreateUserError? AsProductVariantsBulkCreateUserError() => this as ProductVariantsBulkCreateUserError; public ProductVariantsBulkDeleteUserError? AsProductVariantsBulkDeleteUserError() => this as ProductVariantsBulkDeleteUserError; @@ -16151,6 +17097,7 @@ public interface IDisplayableError : IGraphQLObject public SubscriptionContractUserError? AsSubscriptionContractUserError() => this as SubscriptionContractUserError; public SubscriptionDraftUserError? AsSubscriptionDraftUserError() => this as SubscriptionDraftUserError; public TaxAppConfigureUserError? AsTaxAppConfigureUserError() => this as TaxAppConfigureUserError; + public TransactionVoidUserError? AsTransactionVoidUserError() => this as TransactionVoidUserError; public TranslationUserError? AsTranslationUserError() => this as TranslationUserError; public UrlRedirectBulkDeleteByIdsUserError? AsUrlRedirectBulkDeleteByIdsUserError() => this as UrlRedirectBulkDeleteByIdsUserError; public UrlRedirectBulkDeleteBySavedSearchUserError? AsUrlRedirectBulkDeleteBySavedSearchUserError() => this as UrlRedirectBulkDeleteBySavedSearchUserError; @@ -16239,12 +17186,16 @@ public enum DisputeEvidenceUpdateUserErrorCode /// public enum DisputeStatus { + ACCEPTED, + LOST, NEEDS_RESPONSE, UNDER_REVIEW, - CHARGE_REFUNDED, - ACCEPTED, WON, - LOST, + /// + ///Status previously used by Stripe to indicate that a dispute led to a refund. + /// + [Obsolete("CHARGE_REFUNDED is no longer supported.")] + CHARGE_REFUNDED, } /// @@ -16892,7 +17843,7 @@ public class DraftOrderLineItem : GraphQLObject, INode /// public Image? image { get; set; } /// - ///Whether the line item is a gift card. + ///Whether the line item represents the purchase of a gift card. /// public bool? isGiftCard { get; set; } /// @@ -17424,6 +18375,55 @@ public enum EventSortKeys RELEVANCE, } + /// + ///An item for exchange. + /// + public class ExchangeLineItem : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The order line item for the exchange. + /// + public LineItem? lineItem { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ExchangeLineItems. + /// + public class ExchangeLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in ExchangeLineItemEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ExchangeLineItem and a cursor during pagination. + /// + public class ExchangeLineItemEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of ExchangeLineItemEdge. + /// + public ExchangeLineItem? node { get; set; } + } + /// ///An exchange where existing items on an order are returned and new items are added to the order. /// @@ -17572,6 +18572,10 @@ public class ExchangeV2LineItem : GraphQLObject /// public IEnumerable? giftCards { get; set; } /// + ///Whether the line item represents the purchase of a gift card. + /// + public bool? isGiftCard { get; set; } + /// ///The line item associated with this object. /// public LineItem? lineItem { get; set; } @@ -17730,6 +18734,69 @@ public class FailedRequirement : GraphQLObject public string? message { get; set; } } + /// + ///A additional cost, charged by the merchant, on an order. Examples include return shipping fees and restocking fees. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(RestockingFee), typeDiscriminator: "RestockingFee")] + [JsonDerivedType(typeof(ReturnShippingFee), typeDiscriminator: "ReturnShippingFee")] + public interface IFee : IGraphQLObject + { + public RestockingFee? AsRestockingFee() => this as RestockingFee; + public ReturnShippingFee? AsReturnShippingFee() => this as ReturnShippingFee; + /// + ///The unique ID for the Fee. + /// + public string? id { get; } + } + + /// + ///A sale associated with a fee. + /// + public class FeeSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public SaleActionType? actionType { get; set; } + /// + ///The fee associated with the sale. + /// + public IFee? fee { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public SaleLineType? lineType { get; set; } + /// + ///The number of units either ordered or intended to be returned. + /// + public int? quantity { get; set; } + /// + ///All individual taxes associated with the sale. + /// + public IEnumerable? taxes { get; set; } + /// + ///The total sale amount after taxes and discounts. + /// + public MoneyBag? totalAmount { get; set; } + /// + ///The total discounts allocated to the sale after taxes. + /// + public MoneyBag? totalDiscountAmountAfterTaxes { get; set; } + /// + ///The total discounts allocated to the sale before taxes. + /// + public MoneyBag? totalDiscountAmountBeforeTaxes { get; set; } + /// + ///The total amount of taxes for the sale. + /// + public MoneyBag? totalTaxAmount { get; set; } + } + /// ///A file interface. /// @@ -18207,6 +19274,10 @@ public enum FilesErrorCode ///Duplicate resolution mode REPLACE cannot be used without specifying filename. /// MISSING_FILENAME_FOR_DUPLICATE_MODE_REPLACE, + /// + ///Exceeded the limit of media per product. + /// + PRODUCT_MEDIA_LIMIT_EXCEEDED, } /// @@ -18382,6 +19453,10 @@ public class Fulfillment : GraphQLObject, ILegacyInteroperability, /// public FulfillmentService? service { get; set; } /// + ///The optional shipping label for this fulfillment. + /// + public ShippingLabel? shippingLabel { get; set; } + /// ///The status of the fulfillment. /// public FulfillmentStatus? status { get; set; } @@ -19435,6 +20510,10 @@ public enum FulfillmentOrderAssignmentStatus ///to completely fulfill the requested items. /// FULFILLMENT_ACCEPTED, + /// + ///Fulfillment orders for which the merchant hasn't yet requested fulfillment. + /// + FULFILLMENT_UNSUBMITTED, } /// @@ -19838,7 +20917,7 @@ public class FulfillmentOrderLocationForMove : GraphQLObject - public ulong? availableLineItemsCount { get; set; } + public Count? availableLineItemsCount { get; set; } /// ///The location being considered as the fulfillment order's new assigned location. /// @@ -19860,7 +20939,7 @@ public class FulfillmentOrderLocationForMove : GraphQLObject - public ulong? unavailableLineItemsCount { get; set; } + public Count? unavailableLineItemsCount { get; set; } } /// @@ -20057,15 +21136,8 @@ public class FulfillmentOrderMovePayload : GraphQLObject ///The fulfillment order which now contains the moved line items and is assigned to the destination location. /// - ///**First scenario:** All line items belonging to the original fulfillment order are re-assigned. - /// - ///In this case, this will be the original fulfillment order. - /// - ///**Second scenario:** A subset of the line items belonging to the original fulfillment order are re-assigned. - /// - ///If the new location is already assigned to fulfill line items on the order, then - ///this will be an existing active fulfillment order. - ///Otherwise, this will be a new fulfillment order with the moved line items assigned. + ///If the original fulfillment order doesn't have any line items which are fully or partially fulfilled, the original fulfillment order will be moved to the new location. + ///However if this isn't the case, the moved fulfillment order will differ from the original one. /// public FulfillmentOrder? movedFulfillmentOrder { get; set; } /// @@ -20310,6 +21382,10 @@ public enum FulfillmentOrderSortKeys /// ID, /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// ///Sort by relevance to the search terms when the `query` parameter is specified on the connection. ///Don't use this sort key when no search query is specified. /// @@ -20690,9 +21766,15 @@ public class FulfillmentService : GraphQLObject /// (`fulfillmentOrdersOptIn` is set to `true`). /// public string? callbackUrl { get; set; } + /// ///Whether the fulfillment service uses the [fulfillment order based workflow](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments) for managing fulfillments. + /// + ///As the migration is now finished, the `fulfillmentOrdersOptIn` property is [deprecated]( + ///https://shopify.dev/changelog/deprecation-of-the-fulfillmentservice-fulfillmentordersoptin-field) + ///and is always set to `true` on correctly functioning fulfillment services. /// + [Obsolete("Migration period ended. All correctly functioning fulfillment services have `fulfillmentOrdersOptIn` set to `true`.")] public bool? fulfillmentOrdersOptIn { get; set; } /// ///Human-readable unique identifier for this fulfillment service. @@ -20882,7 +21964,6 @@ public class FulfillmentTrackingInfo : GraphQLObject /// * DHL eCommerce /// * DHL eCommerce Asia /// * DHL Express - /// * DoorDash /// * DPD /// * DPD Local /// * DPD UK @@ -21580,6 +22661,7 @@ public interface IHasMetafields : IGraphQLObject [JsonDerivedType(typeof(OnlineStorePage), typeDiscriminator: "OnlineStorePage")] [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] [JsonDerivedType(typeof(ProductOption), typeDiscriminator: "ProductOption")] + [JsonDerivedType(typeof(ProductOptionValue), typeDiscriminator: "ProductOptionValue")] [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] [JsonDerivedType(typeof(SellingPlan), typeDiscriminator: "SellingPlan")] [JsonDerivedType(typeof(SellingPlanGroup), typeDiscriminator: "SellingPlanGroup")] @@ -21594,6 +22676,7 @@ public interface IHasPublishedTranslations : IGraphQLObject public OnlineStorePage? AsOnlineStorePage() => this as OnlineStorePage; public Product? AsProduct() => this as Product; public ProductOption? AsProductOption() => this as ProductOption; + public ProductOptionValue? AsProductOptionValue() => this as ProductOptionValue; public ProductVariant? AsProductVariant() => this as ProductVariant; public SellingPlan? AsSellingPlan() => this as SellingPlan; public SellingPlanGroup? AsSellingPlanGroup() => this as SellingPlanGroup; @@ -21867,26 +22950,11 @@ public enum InventoryAdjustQuantitiesUserErrorCode /// ITEM_NOT_STOCKED_AT_LOCATION, /// - ///The specified inventory item is not allowed to be adjusted via API. + ///The specified inventory item is not allowed to be adjusted via API. Example: if the inventory item is a parent bundle. /// NON_MUTABLE_INVENTORY_ITEM, } - /// - ///Return type for `inventoryAdjustQuantity` mutation. - /// - public class InventoryAdjustQuantityPayload : GraphQLObject - { - /// - ///Represents the updated inventory quantity of an inventory item at a specific location. - /// - public InventoryLevel? inventoryLevel { get; set; } - /// - ///The list of errors that occurred from executing the mutation. - /// - public IEnumerable? userErrors { get; set; } - } - /// ///Represents a group of adjustments made as part of the same operation. /// @@ -21922,21 +22990,6 @@ public class InventoryAdjustmentGroup : GraphQLObject, public StaffMember? staffMember { get; set; } } - /// - ///Return type for `inventoryBulkAdjustQuantityAtLocation` mutation. - /// - public class InventoryBulkAdjustQuantityAtLocationPayload : GraphQLObject - { - /// - ///Represents the updated inventory quantities of an inventory item at the location. - /// - public IEnumerable? inventoryLevels { get; set; } - /// - ///The list of errors that occurred from executing the mutation. - /// - public IEnumerable? userErrors { get; set; } - } - /// ///Return type for `inventoryBulkToggleActivation` mutation. /// @@ -22127,7 +23180,11 @@ public class InventoryItem : GraphQLObject, ILegacyInteroperabili /// ///The number of locations where this inventory item is stocked. /// - public int? locationsCount { get; set; } + public Count? locationsCount { get; set; } + /// + ///The packaging dimensions of the inventory item. + /// + public InventoryItemMeasurement? measurement { get; set; } /// ///The ISO 3166-2 alpha-2 province code of where the item originated from. /// @@ -22196,6 +23253,21 @@ public class InventoryItemEdge : GraphQLObject, IEdge + ///Represents the packaged dimension for an inventory item. + /// + public class InventoryItemMeasurement : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The weight of the inventory item. + /// + public Weight? weight { get; set; } + } + /// ///Return type for `inventoryItemUpdate` mutation. /// @@ -22216,11 +23288,6 @@ public class InventoryItemUpdatePayload : GraphQLObject public class InventoryLevel : GraphQLObject, INode { - /// - ///The quantity of inventory items that are available at the inventory level's associated location. - /// - [Obsolete("Use the `quantities` field instead and specify available for names. Example: `quantities(names:[\"available\"]){name quantity}`.")] - public int? available { get; set; } /// ///Whether the inventory items associated with the inventory level can be deactivated. /// @@ -22233,22 +23300,10 @@ public class InventoryLevel : GraphQLObject, INode ///Describes either the impact of deactivating the inventory level, or why the inventory level can't be deactivated. /// public string? deactivationAlert { get; set; } - - /// - ///Describes, in HTML with embedded URLs, either the impact of deactivating the inventory level or why the inventory level can't be deactivated. - /// - [Obsolete("Use `deactivationAlert` instead.")] - public string? deactivationAlertHtml { get; set; } /// ///A globally-unique ID. /// public string? id { get; set; } - - /// - ///The quantity of inventory items that are going to the inventory level's associated location. - /// - [Obsolete("Use the `quantities` field instead and specify incoming for names. Example: `quantities(names:[\"incoming\"]){name quantity}`.")] - public int? incoming { get; set; } /// ///Inventory item associated with the inventory level. /// @@ -22409,7 +23464,7 @@ public enum InventoryMoveQuantitiesUserErrorCode /// ITEM_NOT_STOCKED_AT_LOCATION, /// - ///The specified inventory item is not allowed to be adjusted via API. + ///The specified inventory item is not allowed to be adjusted via API. Example: if the inventory item is a parent bundle. /// NON_MUTABLE_INVENTORY_ITEM, } @@ -22615,7 +23670,7 @@ public enum InventorySetOnHandQuantitiesUserErrorCode /// ITEM_NOT_STOCKED_AT_LOCATION, /// - ///The specified inventory item is not allowed to be adjusted via API. + ///The specified inventory item is not allowed to be adjusted via API. Example: if the inventory item is a parent bundle. /// NON_MUTABLE_INVENTORY_ITEM, /// @@ -23417,7 +24472,7 @@ public class LineItem : GraphQLObject, INode /// public SubscriptionContract? contract { get; set; } /// - ///The line item's quantity, minus the removed quantity. + ///The number of units ordered, excluding refunded and removed units. /// public int? currentQuantity { get; set; } /// @@ -23425,31 +24480,31 @@ public class LineItem : GraphQLObject, INode /// public IEnumerable? customAttributes { get; set; } /// - ///The discounts that have been allocated onto the line item by discount applications, not including order edits and refunds. + ///The discounts that have been allocated to the line item by discount applications, including discounts allocated to refunded and removed quantities. /// public IEnumerable? discountAllocations { get; set; } /// - ///The total line price after discounts are applied, in shop currency. + ///The total discounted price of the line item in shop currency, including refunded and removed quantities. This value doesn't include order-level discounts. /// [Obsolete("Use `discountedTotalSet` instead.")] public decimal? discountedTotal { get; set; } /// - ///The total line price after discounts are applied, in shop and presentment currencies. + ///The total discounted price of the line item in shop and presentment currencies, including refunded and removed quantities. This value doesn't include order-level discounts. Code-based discounts aren't included by default. /// public MoneyBag? discountedTotalSet { get; set; } /// - ///The approximate split price of a line item unit, in shop currency. This value doesn't include discounts applied to the entire order. + ///The approximate unit price of the line item in shop currency. This value includes line-level discounts and discounts applied to refunded and removed quantities. It doesn't include order-level discounts. /// [Obsolete("Use `discountedUnitPriceSet` instead.")] public decimal? discountedUnitPrice { get; set; } /// - ///The approximate split price of the line item, including any discounts that apply to the entire order. + ///The approximate unit price of the line item in shop and presentment currencies. This value includes discounts applied to refunded and removed quantities. /// public MoneyBag? discountedUnitPriceAfterAllDiscountsSet { get; set; } /// - ///The approximate split price of a line item unit, in shop and presentment currencies. This value doesn't include discounts applied to the entire order. + ///The approximate unit price of the line item in shop and presentment currencies. This value includes line-level discounts and discounts applied to refunded and removed quantities. It doesn't include order-level discounts. /// public MoneyBag? discountedUnitPriceSet { get; set; } /// @@ -23496,6 +24551,10 @@ public class LineItem : GraphQLObject, INode /// public Image? image { get; set; } /// + ///Whether the line item represents the purchase of a gift card. + /// + public bool? isGiftCard { get; set; } + /// ///The line item group associated to the line item. /// public LineItemGroup? lineItemGroup { get; set; } @@ -23513,23 +24572,24 @@ public class LineItem : GraphQLObject, INode public int? nonFulfillableQuantity { get; set; } /// - ///The total price without discounts applied, in shop currency. - ///This value is based on the unit price of the variant x quantity. + ///In shop currency, the total price of the line item when the order was created. + ///This value doesn't include discounts. /// [Obsolete("Use `originalTotalSet` instead.")] public decimal? originalTotal { get; set; } /// - ///The total price in shop and presentment currencies, without discounts applied. This value is based on the unit price of the variant x quantity. + ///In shop and presentment currencies, the total price of the line item when the order was created. + ///This value doesn't include discounts. /// public MoneyBag? originalTotalSet { get; set; } /// - ///The variant unit price without discounts applied, in shop currency. + ///In shop currency, the unit price of the line item when the order was created. This value doesn't include discounts. /// [Obsolete("Use `originalUnitPriceSet` instead.")] public decimal? originalUnitPrice { get; set; } /// - ///The variant unit price without discounts applied, in shop and presentment currencies. + ///In shop and presentment currencies, the unit price of the line item when the order was created. This value doesn't include discounts. /// public MoneyBag? originalUnitPriceSet { get; set; } /// @@ -23537,11 +24597,11 @@ public class LineItem : GraphQLObject, INode /// public Product? product { get; set; } /// - ///The number of variant units ordered. + ///The number of units ordered, including refunded and removed units. /// public int? quantity { get; set; } /// - ///The line item's quantity, minus the refunded quantity. + ///The number of units ordered, excluding refunded units. /// public int? refundableQuantity { get; set; } /// @@ -23565,7 +24625,7 @@ public class LineItem : GraphQLObject, INode /// public StaffMember? staffMember { get; set; } /// - ///The taxes charged for this line item. + ///The taxes charged for the line item, including taxes charged for refunded and removed quantities. /// public IEnumerable? taxLines { get; set; } /// @@ -23578,32 +24638,32 @@ public class LineItem : GraphQLObject, INode public string? title { get; set; } /// - ///The total amount of the discount allocated to the line item in the shop currency. + ///The total discount allocated to the line item in shop currency, including the total allocated to refunded and removed quantities. This value doesn't include order-level discounts. /// [Obsolete("Use `totalDiscountSet` instead.")] public decimal? totalDiscount { get; set; } /// - ///The total amount of the discount that's allocated to the line item, in the shop and presentment currencies. This field must be explicitly set using draft orders, Shopify scripts, or the API. + ///The total discount allocated to the line item in shop and presentment currencies, including the total allocated to refunded and removed quantities. This value doesn't include order-level discounts. /// public MoneyBag? totalDiscountSet { get; set; } /// - ///The total discounted value of unfulfilled units, in shop currency. + ///In shop currency, the total discounted price of the unfulfilled quantity for the line item. /// [Obsolete("Use `unfulfilledDiscountedTotalSet` instead.")] public decimal? unfulfilledDiscountedTotal { get; set; } /// - ///The total discounted value of unfulfilled units, in shop and presentment currencies. + ///In shop and presentment currencies, the total discounted price of the unfulfilled quantity for the line item. /// public MoneyBag? unfulfilledDiscountedTotalSet { get; set; } /// - ///The total price, without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop currency. + ///In shop currency, the total price of the unfulfilled quantity for the line item. This value doesn't include discounts. /// [Obsolete("Use `unfulfilledOriginalTotalSet` instead.")] public decimal? unfulfilledOriginalTotal { get; set; } /// - ///The total price, without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop and presentment currencies. + ///In shop and presentment currencies, the total price of the unfulfilled quantity for the line item. This value doesn't include discounts. /// public MoneyBag? unfulfilledOriginalTotalSet { get; set; } /// @@ -23747,6 +24807,10 @@ public class LineItemMutable : GraphQLObject, INode /// public Image? image { get; set; } /// + ///Whether the line item represents the purchase of a gift card. + /// + public bool? isGiftCard { get; set; } + /// ///Whether the line item can be edited or not. /// public bool? merchantEditable { get; set; } @@ -23934,6 +24998,23 @@ public class Link : GraphQLObject, IHasPublishedTranslations public string? url { get; set; } } + /// + ///The identifier for the metafield linked to this option. + /// + ///This API is currently in early access. See [Metafield-linked product options](https://shopify.dev/docs/api/admin/migrate/new-product-model/metafield-linked) for more details. + /// + public class LinkedMetafield : GraphQLObject + { + /// + ///Key of the metafield the option is linked to. + /// + public string? key { get; set; } + /// + ///Namespace of the metafield the option is linked to. + /// + public string? @namespace { get; set; } + } + /// ///A locale. /// @@ -24141,6 +25222,10 @@ public class Location : GraphQLObject, IHasMetafieldDefinitions, IHasM /// public bool? addressVerified { get; set; } /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) that the location was added to a shop. + /// + public DateTime? createdAt { get; set; } + /// ///Whether this location can be deactivated. /// public bool? deactivatable { get; set; } @@ -24184,6 +25269,10 @@ public class Location : GraphQLObject, IHasMetafieldDefinitions, IHasM ///Whether the location is active. /// public bool? isActive { get; set; } + /// + ///Whether this location is a fulfillment service. + /// + public bool? isFulfillmentService { get; set; } /// ///Whether the location is your primary location for shipping inventory. @@ -24234,6 +25323,10 @@ public class Location : GraphQLObject, IHasMetafieldDefinitions, IHasM ///List of suggested addresses for this location (empty if none). /// public IEnumerable? suggestedAddresses { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the location was last updated. + /// + public DateTime? updatedAt { get; set; } } /// @@ -24392,6 +25485,10 @@ public enum LocationAddUserErrorCode ///The input value is too short. /// TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, } /// @@ -24760,6 +25857,10 @@ public enum LocationEditUserErrorCode ///The input value is too short. /// TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, } /// @@ -25045,6 +26146,10 @@ public class Market : GraphQLObject, IHasMetafieldDefinitions, IHasMetaf /// public MarketCatalogConnection? catalogs { get; set; } /// + ///The number of catalogs that belong to the market. + /// + public Count? catalogsCount { get; set; } + /// ///The market’s currency settings. /// public MarketCurrencySettings? currencySettings { get; set; } @@ -25077,10 +26182,15 @@ public class Market : GraphQLObject, IHasMetafieldDefinitions, IHasMetaf ///The name of the market. Not shown to customers. /// public string? name { get; set; } + /// ///The market’s price list, which specifies a percentage-based price adjustment as well as ///fixed price overrides for specific variants. + /// + ///Markets with multiple catalogs can have multiple price lists. To query which price lists are connected to + ///a market, please query for price lists through the catalogs connection. /// + [Obsolete("Use `catalogs` instead.")] public PriceList? priceList { get; set; } /// ///Whether the market is the shop’s primary market. @@ -25797,18 +26907,18 @@ public enum MarketUserErrorCode public class MarketWebPresence : GraphQLObject, INode { /// - ///The ISO codes for the alternate locales. When a domain is used, these locales will be + ///The ShopLocale object for the alternate locales. When a domain is used, these locales will be ///available as language-specific subfolders. For example, if English is an ///alternate locale, and `example.ca` is the market’s domain, then ///`example.ca/en` will load in English. /// - public IEnumerable? alternateLocales { get; set; } + public IEnumerable? alternateLocales { get; set; } /// - ///The ISO code for the default locale. When a domain is used, this is the locale that will + ///The ShopLocale object for the default locale. When a domain is used, this is the locale that will ///be used when the domain root is accessed. For example, if French is the default locale, ///and `example.ca` is the market’s domain, then `example.ca` will load in French. /// - public string? defaultLocale { get; set; } + public ShopLocale? defaultLocale { get; set; } /// ///The web presence’s domain. ///This field will be null if `subfolderSuffix` isn't null. @@ -25992,6 +27102,10 @@ public class MarketingActivity : GraphQLObject, INode ///Whether the marketing activity is in the main workflow version of the marketing automation. /// public bool? inMainWorkflowVersion { get; set; } + /// + ///The marketing activity represents an external marketing activity. + /// + public bool? isExternal { get; set; } /// ///The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. @@ -26397,7 +27511,7 @@ public class MarketingActivityUpsertExternalPayload : GraphQLObject - ///An error that occurs during the execution of a Shopify Marketing mutation. + ///An error that occurs during the execution of marketing activity and engagement mutations. /// public class MarketingActivityUserError : GraphQLObject, IDisplayableError { @@ -26428,6 +27542,98 @@ public enum MarketingActivityUserErrorCode ///The input value is already taken. /// TAKEN, + /// + ///Marketing activity does not exist. + /// + MARKETING_ACTIVITY_DOES_NOT_EXIST, + /// + ///Marketing activity is not valid, the associated marketing event does not exist. + /// + MARKETING_EVENT_DOES_NOT_EXIST, + /// + ///All currency codes provided in the input need to match. + /// + CURRENCY_CODE_MISMATCH_INPUT, + /// + ///The currency codes provided need to match the referenced marketing activity's currency code. + /// + MARKETING_ACTIVITY_CURRENCY_CODE_MISMATCH, + /// + ///The job to delete all external activities failed to enqueue. + /// + DELETE_JOB_FAILED_TO_ENQUEUE, + /// + ///Non-hierarchical marketing activities must have UTM parameters or a URL parameter value. + /// + NON_HIERARCHIAL_REQUIRES_UTM_URL_PARAMETER, + /// + ///A mutation can not be ran because a job to delete all external activities has been enqueued, which happens either from calling the marketingActivitiesDeleteAllExternal mutation or as a result of an app uninstall. + /// + DELETE_JOB_ENQUEUED, + /// + ///The marketing activity must be an external activity. + /// + ACTIVITY_NOT_EXTERNAL, + /// + ///The channel handle value cannot be modified. + /// + IMMUTABLE_CHANNEL_HANDLE, + /// + ///The URL parameter value cannot be modified. + /// + IMMUTABLE_URL_PARAMETER, + /// + ///The UTM parameters cannot be modified. + /// + IMMUTABLE_UTM_PARAMETERS, + /// + ///The parent activity cannot be modified. + /// + IMMUTABLE_PARENT_ID, + /// + ///The hierarchy level cannot be modified. + /// + IMMUTABLE_HIERARCHY_LEVEL, + /// + ///The remote ID does not correspond to an existing activity. + /// + INVALID_REMOTE_ID, + /// + ///The channel handle is not recognized. + /// + INVALID_CHANNEL_HANDLE, + /// + ///Either the marketing activity ID or remote ID must be provided for the activity to be deleted. + /// + INVALID_DELETE_ACTIVITY_EXTERNAL_ARGUMENTS, + /// + ///Either the channel_handle or delete_engagements_for_all_channels must be provided when deleting a marketing engagement. + /// + INVALID_DELETE_ENGAGEMENTS_ARGUMENTS, + /// + ///Either the marketing activity ID, remote ID, or UTM must be provided. + /// + INVALID_MARKETING_ACTIVITY_EXTERNAL_ARGUMENTS, + /// + ///For activity level engagement, either the marketing activity ID or remote ID must be provided. For channel level engagement, the channel handle must be provided. + /// + INVALID_MARKETING_ENGAGEMENT_ARGUMENTS, + /// + ///No identifier found. For activity level engagement, either the marketing activity ID or remote ID must be provided. For channel level engagement, the channel handle must be provided. + /// + INVALID_MARKETING_ENGAGEMENT_ARGUMENT_MISSING, + /// + ///This activity has child activities and thus cannot be deleted. Child activities must be deleted before a parent activity. + /// + CANNOT_DELETE_ACTIVITY_WITH_CHILD_EVENTS, + /// + ///The activity's tactic can not be updated to STOREFRONT_APP. This type of tactic can only be specified when creating a new activity. + /// + CANNOT_UPDATE_TACTIC_TO_STOREFRONT_APP, + /// + ///The activity's tactic can not be updated from STOREFRONT_APP. + /// + CANNOT_UPDATE_TACTIC_IF_ORIGINALLY_STOREFRONT_APP, } /// @@ -26762,7 +27968,7 @@ public enum MarketingEventSortKeys } /// - ///The available types of marketing event. + ///The available types of tactics for a marketing activity. /// public enum MarketingTactic { @@ -26811,37 +28017,13 @@ public enum MarketingTactic /// TRANSACTIONAL, /// - ///Search engine optimization. - /// - SEO, - /// - ///A direct visit to the online store. - /// - DIRECT, - /// ///A popup on the online store. /// STOREFRONT_APP, /// - ///A display ad. - /// - [Obsolete("`DISPLAY` is deprecated. Use `AD` instead.")] - DISPLAY, - /// - ///Paid search. - /// - [Obsolete("`SEARCH` is deprecated. Use `AD` instead.")] - SEARCH, - /// - ///A follow-up email. - /// - [Obsolete("'FOLLOW_UP' is deprecated. Use 'TRANSACTIONAL' instead.")] - FOLLOW_UP, - /// - ///A promotional receipt. + ///Search engine optimization. /// - [Obsolete("'RECEIPT' is deprecated. Use 'TRANSACTIONAL' instead.")] - RECEIPT, + SEO, } /// @@ -27382,6 +28564,10 @@ public enum MediaUserErrorCode ///Media cannot be modified. It is currently being modified by another operation. /// MEDIA_CANNOT_BE_MODIFIED, + /// + ///Missing arguments. + /// + MISSING_ARGUMENTS, } /// @@ -28273,6 +29459,25 @@ public enum MetafieldGrantAccessLevel READ_WRITE, } + /// + ///Identifies a metafield by its owner resource, namespace, and key. + /// + public class MetafieldIdentifier : GraphQLObject + { + /// + ///The key of the metafield. + /// + public string? key { get; set; } + /// + ///The namespace of the metafield. + /// + public string? @namespace { get; set; } + /// + ///GID of the owner resource that the metafield belongs to. + /// + public string? ownerId { get; set; } + } + /// ///Possible types of a metafield's owner resource. /// @@ -28315,6 +29520,10 @@ public enum MetafieldOwnerType /// MARKET, /// + ///The Cart Transform metafield owner type. + /// + CARTTRANSFORM, + /// ///The Collection metafield owner type. /// COLLECTION, @@ -28381,6 +29590,7 @@ public enum MetafieldOwnerType [JsonDerivedType(typeof(GenericFile), typeDiscriminator: "GenericFile")] [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] [JsonDerivedType(typeof(Metaobject), typeDiscriminator: "Metaobject")] + [JsonDerivedType(typeof(Model3d), typeDiscriminator: "Model3d")] [JsonDerivedType(typeof(OnlineStorePage), typeDiscriminator: "OnlineStorePage")] [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] @@ -28391,6 +29601,7 @@ public interface IMetafieldReference : IGraphQLObject public GenericFile? AsGenericFile() => this as GenericFile; public MediaImage? AsMediaImage() => this as MediaImage; public Metaobject? AsMetaobject() => this as Metaobject; + public Model3d? AsModel3d() => this as Model3d; public OnlineStorePage? AsOnlineStorePage() => this as OnlineStorePage; public Product? AsProduct() => this as Product; public ProductVariant? AsProductVariant() => this as ProductVariant; @@ -28441,6 +29652,8 @@ public class MetafieldReferenceEdge : GraphQLObject, IEd [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] [JsonDerivedType(typeof(AppInstallation), typeDiscriminator: "AppInstallation")] [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] [JsonDerivedType(typeof(DeliveryCustomization), typeDiscriminator: "DeliveryCustomization")] [JsonDerivedType(typeof(DiscountAutomaticNode), typeDiscriminator: "DiscountAutomaticNode")] @@ -28463,6 +29676,8 @@ public interface IMetafieldReferencer : IGraphQLObject { public AppInstallation? AsAppInstallation() => this as AppInstallation; public Collection? AsCollection() => this as Collection; + public Company? AsCompany() => this as Company; + public CompanyLocation? AsCompanyLocation() => this as CompanyLocation; public Customer? AsCustomer() => this as Customer; public DeliveryCustomization? AsDeliveryCustomization() => this as DeliveryCustomization; public DiscountAutomaticNode? AsDiscountAutomaticNode() => this as DiscountAutomaticNode; @@ -28713,6 +29928,21 @@ public enum MetafieldValueType BOOLEAN, } + /// + ///Return type for `metafieldsDelete` mutation. + /// + public class MetafieldsDeletePayload : GraphQLObject + { + /// + ///List of metafield identifiers that were deleted, null if the corresponding metafield isn't found. + /// + public IEnumerable? deletedMetafields { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + /// ///Return type for `metafieldsSet` mutation. /// @@ -29584,7 +30814,7 @@ public enum MethodDefinitionSortKeys /// ///Represents a Shopify hosted 3D model. /// - public class Model3d : GraphQLObject, IMedia, INode + public class Model3d : GraphQLObject, IMedia, INode, IMetafieldReference { /// ///A word or phrase to share the nature or contents of a media. @@ -29793,7 +31023,15 @@ public class Mutation : GraphQLObject /// public CatalogUpdatePayload? catalogUpdate { get; set; } /// - ///Updates the checkout branding settings for a [checkout profile](https://shopify.dev/api/admin-graphql/unstable/queries/checkoutProfile). If the settings don't exist, then new settings are created. The checkout branding settings applied to a published checkout profile will be immediately visible within the store's checkout. The checkout branding settings applied to a draft checkout profile could be previewed within the admin checkout editor. + ///Updates the checkout branding settings for a + ///[checkout profile](https://shopify.dev/api/admin-graphql/unstable/queries/checkoutProfile). + /// + ///If the settings don't exist, then new settings are created. The checkout branding settings applied to a + ///published checkout profile will be immediately visible within the store's checkout. The checkout branding + ///settings applied to a draft checkout profile could be previewed within the admin checkout editor. + /// + ///To learn more about updating checkout branding settings, refer to the checkout branding + ///[tutorial](https://shopify.dev/docs/apps/checkout/styling). /// public CheckoutBrandingUpsertPayload? checkoutBrandingUpsert { get; set; } /// @@ -30317,6 +31555,13 @@ public class Mutation : GraphQLObject ///Creates file assets using an external URL or for files that were previously uploaded using the ///[stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stageduploadscreate). ///These files are added to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin. + /// + ///Files are processed asynchronously. Some data is not available until processing is completed. + ///Check [fileStatus](https://shopify.dev/api/admin-graphql/latest/interfaces/File#field-file-filestatus) + ///to know when the files are READY or FAILED. See the [FileStatus](https://shopify.dev/api/admin-graphql/latest/enums/filestatus) + ///for the complete set of possible fileStatus values. + /// + ///To get a list of all files, use the [files query](https://shopify.dev/api/admin-graphql/latest/queries/files). /// public FileCreatePayload? fileCreate { get; set; } /// @@ -30524,18 +31769,6 @@ public class Mutation : GraphQLObject ///Apply changes to inventory quantities. /// public InventoryAdjustQuantitiesPayload? inventoryAdjustQuantities { get; set; } - - /// - ///Adjusts the inventory by a certain quantity. - /// - [Obsolete("Use `inventoryAdjustQuantities` instead.")] - public InventoryAdjustQuantityPayload? inventoryAdjustQuantity { get; set; } - - /// - ///Adjusts the inventory at a location for multiple inventory items. - /// - [Obsolete("Use `inventoryAdjustQuantities` instead.")] - public InventoryBulkAdjustQuantityAtLocationPayload? inventoryBulkAdjustQuantityAtLocation { get; set; } /// ///Modify the activation status of an inventory item at locations. Activating an inventory item at a particular location allows that location to stock that inventory item. Deactivating an inventory item at a location removes the inventory item's quantities and turns off the inventory item from that location. /// @@ -30722,6 +31955,10 @@ public class Mutation : GraphQLObject [Obsolete("This mutation will be removed in a future version. Use the `metafieldDefinitionUpdate` mutation with `access.storefront` set instead.")] public MetafieldStorefrontVisibilityDeletePayload? metafieldStorefrontVisibilityDelete { get; set; } /// + ///Deletes multiple metafields in bulk. + /// + public MetafieldsDeletePayload? metafieldsDelete { get; set; } + /// ///Sets metafield values. Metafield values will be set regardless if they were previously created or not. /// ///Allows a maximum of 25 metafields to be set at a time. @@ -30769,7 +32006,7 @@ public class Mutation : GraphQLObject /// public OrderCancelPayload? orderCancel { get; set; } /// - ///Captures payment for an authorized transaction on an order. An order can only be captured if it has a successful authorization transaction. Capturing an order will claim the money reserved by the authorization. orderCapture can be used to capture multiple times as long as the OrderTransaction is multicapturable. To capture a partial payment, the included `amount` value should be less than the total order amount. Multicapture is available only to stores on a Shopify Plus plan. + ///Captures payment for an authorized transaction on an order. An order can only be captured if it has a successful authorization transaction. Capturing an order will claim the money reserved by the authorization. orderCapture can be used to capture multiple times as long as the OrderTransaction is multi-capturable. To capture a partial payment, the included `amount` value should be less than the total order amount. Multi-capture is available only to stores on a Shopify Plus plan. /// public OrderCapturePayload? orderCapture { get; set; } /// @@ -30789,6 +32026,10 @@ public class Mutation : GraphQLObject /// public OrderEditAddLineItemDiscountPayload? orderEditAddLineItemDiscount { get; set; } /// + ///Adds a shipping line to an existing order. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). + /// + public OrderEditAddShippingLinePayload? orderEditAddShippingLine { get; set; } + /// ///Adds a line item from an existing product variant. /// public OrderEditAddVariantPayload? orderEditAddVariant { get; set; } @@ -30806,11 +32047,17 @@ public class Mutation : GraphQLObject ///Removes a discount on the current order edit. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). /// public OrderEditRemoveDiscountPayload? orderEditRemoveDiscount { get; set; } + /// ///Removes a line item discount that was applied as part of an order edit. /// + [Obsolete("Use generic OrderEditRemoveDiscount mutation instead.")] public OrderEditRemoveLineItemDiscountPayload? orderEditRemoveLineItemDiscount { get; set; } /// + ///Removes a shipping line from an existing order. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). + /// + public OrderEditRemoveShippingLinePayload? orderEditRemoveShippingLine { get; set; } + /// ///Sets the quantity of a line item on an order that is being edited. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). /// public OrderEditSetQuantityPayload? orderEditSetQuantity { get; set; } @@ -30819,6 +32066,10 @@ public class Mutation : GraphQLObject /// public OrderEditUpdateDiscountPayload? orderEditUpdateDiscount { get; set; } /// + ///Updates a shipping line on the current order edit. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). + /// + public OrderEditUpdateShippingLinePayload? orderEditUpdateShippingLine { get; set; } + /// ///Sends an email invoice for an order. /// public OrderInvoiceSendPayload? orderInvoiceSend { get; set; } @@ -30831,6 +32082,10 @@ public class Mutation : GraphQLObject /// public OrderOpenPayload? orderOpen { get; set; } /// + ///Create a risk assessment for an order. + /// + public OrderRiskAssessmentCreatePayload? orderRiskAssessmentCreate { get; set; } + /// ///Updates the fields of an order. /// public OrderUpdatePayload? orderUpdate { get; set; } @@ -30867,7 +32122,7 @@ public class Mutation : GraphQLObject /// public PaymentTermsUpdatePayload? paymentTermsUpdate { get; set; } /// - ///Creates a price list. You can use the `priceListCreate` mutation to create a new price list for a country. This enables you to sell your products with international pricing. + ///Creates a price list. You can use the `priceListCreate` mutation to create a new price list and associate it with a catalog. This enables you to sell your products with contextual pricing. /// public PriceListCreatePayload? priceListCreate { get; set; } /// @@ -30966,6 +32221,8 @@ public class Mutation : GraphQLObject /// ///Creates a product. /// + ///For versions `2024-01` and older: + /// ///If you need to create a product with many ///[variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput) ///that are active at several @@ -30993,8 +32250,8 @@ public class Mutation : GraphQLObject ///3. Use the [inventoryBulkToggleActivation](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryBulkToggleActivation) mutation ///on each [inventory item](https://shopify.dev/api/admin-graphql/latest/objects/InventoryItem) to activate it at the appropriate locations. /// - ///4. After activating the variants at the locations, adjust inventory quantities at each location using the - ///[inventoryBulkAdjustQuantityAtLocation](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryBulkAdjustQuantityAtLocation) mutation. + ///4. After activating the variants at the locations, adjust inventory quantities for the inventory items using the + ///[inventoryAdjustQuantities](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryAdjustQuantities) mutation. /// public ProductCreatePayload? productCreate { get; set; } /// @@ -31039,12 +32296,6 @@ public class Mutation : GraphQLObject ///mutation. /// public ProductDuplicatePayload? productDuplicate { get; set; } - - /// - ///Asynchronously duplicate a single product. - /// - [Obsolete("Use `productDuplicateAsyncV2` instead.")] - public ProductDuplicateAsyncPayload? productDuplicateAsync { get; set; } /// ///Asynchronously duplicate a single product. /// @@ -31075,6 +32326,44 @@ public class Mutation : GraphQLObject ///Removes multiple groups from a product. /// public ProductLeaveSellingPlanGroupsPayload? productLeaveSellingPlanGroups { get; set; } + /// + ///Updates a product option. + /// + public ProductOptionUpdatePayload? productOptionUpdate { get; set; } + /// + ///Creates options on a product. + /// + public ProductOptionsCreatePayload? productOptionsCreate { get; set; } + /// + ///Deletes the specified options. + /// + public ProductOptionsDeletePayload? productOptionsDelete { get; set; } + /// + ///Reorders options and option values on a product, causing product variants to alter their position. + /// + ///Options order take precedence over option values order. Depending on the existing product variants, + ///some input orders might not be achieved. + /// + ///Example: + /// Existing product variants: + /// ["Red / Small", "Green / Medium", "Blue / Small"]. + /// + /// New order: + /// [ + /// { + /// name: "Size", values: [{ name: "Small" }, { name: "Medium" }], + /// name: "Color", values: [{ name: "Green" }, { name: "Red" }, { name: "Blue" }] + /// } + /// ]. + /// + /// Description: + /// Variants with "Green" value are expected to appear before variants with "Red" and "Blue" values. + /// However, "Size" option appears before "Color". + /// + /// Therefore, output will be: + /// ["Small / "Red", "Small / Blue", "Medium / Green"]. + /// + public ProductOptionsReorderPayload? productOptionsReorder { get; set; } /// ///Publishes a product. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can only be published on online stores. @@ -31091,6 +32380,51 @@ public class Mutation : GraphQLObject ///Asynchronously reorders the media attached to a product. /// public ProductReorderMediaPayload? productReorderMedia { get; set; } + /// + ///Creates or updates a product in a single request. + /// + ///Use this mutation when syncing information from an external data source into Shopify. + /// + ///When using this mutation to update a product, specify that product's `id` in the input. + /// + ///Any list field (e.g. + ///[collections](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-collections), + ///[metafields](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-metafields), + ///[variants](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-variants)) + ///will be updated so that all included entries are either created or updated, and all existing entries not + ///included will be deleted. + /// + ///All other fields will be updated to the value passed. Omitted fields will not be updated. + /// + ///When run in synchronous mode, the `productSet` mutation has an input limit of 100 variants. If you anticipate + ///any of your use cases requiring support for more than 100 variants, please use the mutation in asynchronous + ///mode (default). + /// + ///When run in synchronous mode, you will get the product back in the response. + /// + ///In asynchronous mode, you will instead get a + ///[ProductSetOperation](https://shopify.dev/api/admin-graphql/current/objects/ProductSetOperation) + ///object back. You can then use the + ///[productOperation](https://shopify.dev/api/admin-graphql/current/queries/productOperation) query to + ///retrieve the updated product data. This query uses the `ProductSetOperation` object to + ///check the status of the operation and to retrieve the details of the updated product and its variants. + /// + ///If you need to update a subset of variants, use one of the bulk variant mutations: + ///- [productVariantsBulkCreate](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkCreate) + ///- [productVariantsBulkUpdate](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkUpdate) + ///- [productVariantsBulkDelete](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkDelete) + /// + ///If you need to update options, use one of the product option mutations: + ///- [productOptionsCreate](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsCreate) + ///- [productOptionUpdate](https://shopify.dev/api/admin-graphql/current/mutations/productOptionUpdate) + ///- [productOptionsDelete](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsDelete) + ///- [productOptionsReorder](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsReorder) + /// + ///See our guide to + ///[sync product data from an external source](https://shopify.dev/api/admin/migrate/new-product-model/sync-data) + ///for more. + /// + public ProductSetPayload? productSet { get; set; } /// ///Unpublishes a product. @@ -31098,10 +32432,16 @@ public class Mutation : GraphQLObject [Obsolete("Use `publishableUnpublish` instead.")] public ProductUnpublishPayload? productUnpublish { get; set; } /// - ///Updates a product. If you update a product and only include some variants in the update, - ///then any variants not included will be deleted. To safely manage variants without the risk of + ///Updates a product. + /// + ///For versions `2024-01` and older: + ///If you update a product and only include some variants in the update, + ///then any variants not included will be deleted. + /// + ///To safely manage variants without the risk of ///deleting excluded variants, use ///[productVariantsBulkUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantsbulkupdate). + /// ///If you want to update a single variant, then use ///[productVariantUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantupdate). /// @@ -31594,6 +32934,10 @@ public class Mutation : GraphQLObject /// public TaxAppConfigurePayload? taxAppConfigure { get; set; } /// + ///Trigger the voiding of an uncaptured authorization transaction. + /// + public TransactionVoidPayload? transactionVoid { get; set; } + /// ///Creates or updates translations. /// public TranslationsRegisterPayload? translationsRegister { get; set; } @@ -31780,6 +33124,8 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(BulkOperation), typeDiscriminator: "BulkOperation")] [JsonDerivedType(typeof(CalculatedOrder), typeDiscriminator: "CalculatedOrder")] [JsonDerivedType(typeof(CartTransform), typeDiscriminator: "CartTransform")] + [JsonDerivedType(typeof(CashTrackingAdjustment), typeDiscriminator: "CashTrackingAdjustment")] + [JsonDerivedType(typeof(CashTrackingSession), typeDiscriminator: "CashTrackingSession")] [JsonDerivedType(typeof(CatalogCsvOperation), typeDiscriminator: "CatalogCsvOperation")] [JsonDerivedType(typeof(Channel), typeDiscriminator: "Channel")] [JsonDerivedType(typeof(ChannelDefinition), typeDiscriminator: "ChannelDefinition")] @@ -31821,6 +33167,7 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(DraftOrderLineItem), typeDiscriminator: "DraftOrderLineItem")] [JsonDerivedType(typeof(DraftOrderTag), typeDiscriminator: "DraftOrderTag")] [JsonDerivedType(typeof(Duty), typeDiscriminator: "Duty")] + [JsonDerivedType(typeof(ExchangeLineItem), typeDiscriminator: "ExchangeLineItem")] [JsonDerivedType(typeof(ExchangeV2), typeDiscriminator: "ExchangeV2")] [JsonDerivedType(typeof(ExternalVideo), typeDiscriminator: "ExternalVideo")] [JsonDerivedType(typeof(Fulfillment), typeDiscriminator: "Fulfillment")] @@ -31835,6 +33182,7 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(GiftCard), typeDiscriminator: "GiftCard")] [JsonDerivedType(typeof(InventoryAdjustmentGroup), typeDiscriminator: "InventoryAdjustmentGroup")] [JsonDerivedType(typeof(InventoryItem), typeDiscriminator: "InventoryItem")] + [JsonDerivedType(typeof(InventoryItemMeasurement), typeDiscriminator: "InventoryItemMeasurement")] [JsonDerivedType(typeof(InventoryLevel), typeDiscriminator: "InventoryLevel")] [JsonDerivedType(typeof(InventoryQuantity), typeDiscriminator: "InventoryQuantity")] [JsonDerivedType(typeof(LineItem), typeDiscriminator: "LineItem")] @@ -31872,6 +33220,8 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] [JsonDerivedType(typeof(ProductFeed), typeDiscriminator: "ProductFeed")] [JsonDerivedType(typeof(ProductOption), typeDiscriminator: "ProductOption")] + [JsonDerivedType(typeof(ProductOptionValue), typeDiscriminator: "ProductOptionValue")] + [JsonDerivedType(typeof(ProductSetOperation), typeDiscriminator: "ProductSetOperation")] [JsonDerivedType(typeof(ProductTaxonomyNode), typeDiscriminator: "ProductTaxonomyNode")] [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] [JsonDerivedType(typeof(ProductVariantComponent), typeDiscriminator: "ProductVariantComponent")] @@ -31879,6 +33229,7 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(PublicationResourceOperation), typeDiscriminator: "PublicationResourceOperation")] [JsonDerivedType(typeof(QuantityPriceBreak), typeDiscriminator: "QuantityPriceBreak")] [JsonDerivedType(typeof(Refund), typeDiscriminator: "Refund")] + [JsonDerivedType(typeof(RefundShippingLine), typeDiscriminator: "RefundShippingLine")] [JsonDerivedType(typeof(Return), typeDiscriminator: "Return")] [JsonDerivedType(typeof(ReturnLineItem), typeDiscriminator: "ReturnLineItem")] [JsonDerivedType(typeof(ReturnableFulfillment), typeDiscriminator: "ReturnableFulfillment")] @@ -31894,6 +33245,7 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(SellingPlan), typeDiscriminator: "SellingPlan")] [JsonDerivedType(typeof(SellingPlanGroup), typeDiscriminator: "SellingPlanGroup")] [JsonDerivedType(typeof(ServerPixel), typeDiscriminator: "ServerPixel")] + [JsonDerivedType(typeof(ShippingLabel), typeDiscriminator: "ShippingLabel")] [JsonDerivedType(typeof(Shop), typeDiscriminator: "Shop")] [JsonDerivedType(typeof(ShopAddress), typeDiscriminator: "ShopAddress")] [JsonDerivedType(typeof(ShopPolicy), typeDiscriminator: "ShopPolicy")] @@ -31912,6 +33264,11 @@ public class NavigationItem : GraphQLObject [JsonDerivedType(typeof(SubscriptionBillingAttempt), typeDiscriminator: "SubscriptionBillingAttempt")] [JsonDerivedType(typeof(SubscriptionContract), typeDiscriminator: "SubscriptionContract")] [JsonDerivedType(typeof(SubscriptionDraft), typeDiscriminator: "SubscriptionDraft")] + [JsonDerivedType(typeof(TaxonomyAttribute), typeDiscriminator: "TaxonomyAttribute")] + [JsonDerivedType(typeof(TaxonomyCategory), typeDiscriminator: "TaxonomyCategory")] + [JsonDerivedType(typeof(TaxonomyChoiceListAttribute), typeDiscriminator: "TaxonomyChoiceListAttribute")] + [JsonDerivedType(typeof(TaxonomyMeasurementAttribute), typeDiscriminator: "TaxonomyMeasurementAttribute")] + [JsonDerivedType(typeof(TaxonomyValue), typeDiscriminator: "TaxonomyValue")] [JsonDerivedType(typeof(TenderTransaction), typeDiscriminator: "TenderTransaction")] [JsonDerivedType(typeof(TransactionFee), typeDiscriminator: "TransactionFee")] [JsonDerivedType(typeof(UrlRedirect), typeDiscriminator: "UrlRedirect")] @@ -31939,6 +33296,8 @@ public interface INode : IGraphQLObject public BulkOperation? AsBulkOperation() => this as BulkOperation; public CalculatedOrder? AsCalculatedOrder() => this as CalculatedOrder; public CartTransform? AsCartTransform() => this as CartTransform; + public CashTrackingAdjustment? AsCashTrackingAdjustment() => this as CashTrackingAdjustment; + public CashTrackingSession? AsCashTrackingSession() => this as CashTrackingSession; public CatalogCsvOperation? AsCatalogCsvOperation() => this as CatalogCsvOperation; public Channel? AsChannel() => this as Channel; public ChannelDefinition? AsChannelDefinition() => this as ChannelDefinition; @@ -31980,6 +33339,7 @@ public interface INode : IGraphQLObject public DraftOrderLineItem? AsDraftOrderLineItem() => this as DraftOrderLineItem; public DraftOrderTag? AsDraftOrderTag() => this as DraftOrderTag; public Duty? AsDuty() => this as Duty; + public ExchangeLineItem? AsExchangeLineItem() => this as ExchangeLineItem; public ExchangeV2? AsExchangeV2() => this as ExchangeV2; public ExternalVideo? AsExternalVideo() => this as ExternalVideo; public Fulfillment? AsFulfillment() => this as Fulfillment; @@ -31994,6 +33354,7 @@ public interface INode : IGraphQLObject public GiftCard? AsGiftCard() => this as GiftCard; public InventoryAdjustmentGroup? AsInventoryAdjustmentGroup() => this as InventoryAdjustmentGroup; public InventoryItem? AsInventoryItem() => this as InventoryItem; + public InventoryItemMeasurement? AsInventoryItemMeasurement() => this as InventoryItemMeasurement; public InventoryLevel? AsInventoryLevel() => this as InventoryLevel; public InventoryQuantity? AsInventoryQuantity() => this as InventoryQuantity; public LineItem? AsLineItem() => this as LineItem; @@ -32031,6 +33392,8 @@ public interface INode : IGraphQLObject public Product? AsProduct() => this as Product; public ProductFeed? AsProductFeed() => this as ProductFeed; public ProductOption? AsProductOption() => this as ProductOption; + public ProductOptionValue? AsProductOptionValue() => this as ProductOptionValue; + public ProductSetOperation? AsProductSetOperation() => this as ProductSetOperation; public ProductTaxonomyNode? AsProductTaxonomyNode() => this as ProductTaxonomyNode; public ProductVariant? AsProductVariant() => this as ProductVariant; public ProductVariantComponent? AsProductVariantComponent() => this as ProductVariantComponent; @@ -32038,6 +33401,7 @@ public interface INode : IGraphQLObject public PublicationResourceOperation? AsPublicationResourceOperation() => this as PublicationResourceOperation; public QuantityPriceBreak? AsQuantityPriceBreak() => this as QuantityPriceBreak; public Refund? AsRefund() => this as Refund; + public RefundShippingLine? AsRefundShippingLine() => this as RefundShippingLine; public Return? AsReturn() => this as Return; public ReturnLineItem? AsReturnLineItem() => this as ReturnLineItem; public ReturnableFulfillment? AsReturnableFulfillment() => this as ReturnableFulfillment; @@ -32053,6 +33417,7 @@ public interface INode : IGraphQLObject public SellingPlan? AsSellingPlan() => this as SellingPlan; public SellingPlanGroup? AsSellingPlanGroup() => this as SellingPlanGroup; public ServerPixel? AsServerPixel() => this as ServerPixel; + public ShippingLabel? AsShippingLabel() => this as ShippingLabel; public Shop? AsShop() => this as Shop; public ShopAddress? AsShopAddress() => this as ShopAddress; public ShopPolicy? AsShopPolicy() => this as ShopPolicy; @@ -32071,6 +33436,11 @@ public interface INode : IGraphQLObject public SubscriptionBillingAttempt? AsSubscriptionBillingAttempt() => this as SubscriptionBillingAttempt; public SubscriptionContract? AsSubscriptionContract() => this as SubscriptionContract; public SubscriptionDraft? AsSubscriptionDraft() => this as SubscriptionDraft; + public TaxonomyAttribute? AsTaxonomyAttribute() => this as TaxonomyAttribute; + public TaxonomyCategory? AsTaxonomyCategory() => this as TaxonomyCategory; + public TaxonomyChoiceListAttribute? AsTaxonomyChoiceListAttribute() => this as TaxonomyChoiceListAttribute; + public TaxonomyMeasurementAttribute? AsTaxonomyMeasurementAttribute() => this as TaxonomyMeasurementAttribute; + public TaxonomyValue? AsTaxonomyValue() => this as TaxonomyValue; public TenderTransaction? AsTenderTransaction() => this as TenderTransaction; public TransactionFee? AsTransactionFee() => this as TransactionFee; public UrlRedirect? AsUrlRedirect() => this as UrlRedirect; @@ -32550,12 +33920,14 @@ public class Order : GraphQLObject, ICommentEventSubject, IHasEvents, IHa ///The phone number associated with the customer. /// public string? phone { get; set; } + /// ///The fulfillment location that was assigned when the order was created. ///Orders can have multiple fulfillment orders. These fulfillment orders can each be assigned to a different location which is responsible for fulfilling a subset of the items in an order. The `Order.physicalLocation` field will only point to one of these locations. ///Use the [`FulfillmentOrder`](https://shopify.dev/api/admin-graphql/latest/objects/fulfillmentorder) ///object for up to date fulfillment location information. /// + [Obsolete("Use `fulfillmentOrders` to get the fulfillment location for the order")] public Location? physicalLocation { get; set; } /// ///The PO number associated with the order. @@ -32642,13 +34014,21 @@ public class Order : GraphQLObject, ICommentEventSubject, IHasEvents, IHa ///A list of returns for the order. /// public ReturnConnection? returns { get; set; } + /// + ///The risk characteristics for the order. + /// + public OrderRiskSummary? risk { get; set; } + /// ///The fraud risk level of the order. /// + [Obsolete("This field is deprecated in version 2024-04. Please use OrderRiskAssessment.riskLevel")] public OrderRiskLevel? riskLevel { get; set; } + /// ///A list of risks associated with the order. /// + [Obsolete("This field is deprecated in version 2024-04. Please use OrderRiskAssessment")] public IEnumerable? risks { get; set; } /// ///The mailing address of the customer. @@ -32849,6 +34229,10 @@ public enum OrderActionType /// REFUND, /// + ///A return on the order. + /// + RETURN, + /// ///An unknown agreement action. Represents new actions that may be added in future versions. /// UNKNOWN, @@ -33265,6 +34649,57 @@ public class OrderEditAddLineItemDiscountPayload : GraphQLObject? userErrors { get; set; } } + /// + ///Return type for `orderEditAddShippingLine` mutation. + /// + public class OrderEditAddShippingLinePayload : GraphQLObject + { + /// + ///The [calculated order](https://shopify.dev/api/admin-graphql/latest/objects/calculatedorder) + ///with the edits applied but not saved. + /// + public CalculatedOrder? calculatedOrder { get; set; } + /// + ///The [calculated shipping line](https://shopify.dev/api/admin-graphql/latest/objects/calculatedshippingline) + ///that's added during this order edit. + /// + public CalculatedShippingLine? calculatedShippingLine { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `OrderEditAddShippingLine`. + /// + public class OrderEditAddShippingLineUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public OrderEditAddShippingLineUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `OrderEditAddShippingLineUserError`. + /// + public enum OrderEditAddShippingLineUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + /// ///Return type for `orderEditAddVariant` mutation. /// @@ -33411,6 +34846,52 @@ public class OrderEditRemoveLineItemDiscountPayload : GraphQLObject? userErrors { get; set; } } + /// + ///Return type for `orderEditRemoveShippingLine` mutation. + /// + public class OrderEditRemoveShippingLinePayload : GraphQLObject + { + /// + ///The [calculated order](https://shopify.dev/api/admin-graphql/latest/objects/calculatedorder) + ///with the edits applied but not saved. + /// + public CalculatedOrder? calculatedOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `OrderEditRemoveShippingLine`. + /// + public class OrderEditRemoveShippingLineUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public OrderEditRemoveShippingLineUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `OrderEditRemoveShippingLineUserError`. + /// + public enum OrderEditRemoveShippingLineUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + /// ///Return type for `orderEditSetQuantity` mutation. /// @@ -33475,6 +34956,51 @@ public enum OrderEditUpdateDiscountUserErrorCode INVALID, } + /// + ///Return type for `orderEditUpdateShippingLine` mutation. + /// + public class OrderEditUpdateShippingLinePayload : GraphQLObject + { + /// + ///An order with the edits applied but not saved. + /// + public CalculatedOrder? calculatedOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `OrderEditUpdateShippingLine`. + /// + public class OrderEditUpdateShippingLineUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public OrderEditUpdateShippingLineUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `OrderEditUpdateShippingLineUserError`. + /// + public enum OrderEditUpdateShippingLineUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + /// ///Return type for `orderInvoiceSend` mutation. /// @@ -33583,6 +35109,10 @@ public class OrderPaymentStatus : GraphQLObject /// public OrderPaymentStatusResult? status { get; set; } /// + ///The transaction associated with the payment. + /// + public IEnumerable? transactions { get; set; } + /// ///A translated message describing an error during the asynchronous processing of a payment. /// public string? translatedErrorMessage { get; set; } @@ -33682,25 +35212,109 @@ public enum OrderReturnStatus /// ///Represents a fraud check on an order. + ///As of version 2024-04 this resource is deprecated. Risk Assessments can be queried via the + ///[OrderRisk Assessments API](https://shopify.dev/api/admin-graphql/2024-04/objects/OrderRiskAssessment). /// public class OrderRisk : GraphQLObject { /// ///Whether the risk level is shown in the Shopify admin. If false, then this order risk is ignored when Shopify determines the overall risk level for the order. /// + [Obsolete("This field is deprecated in version 2024-04")] public bool? display { get; set; } + /// ///The likelihood that an order is fraudulent, based on this order risk. /// ///The level can be set by Shopify risk analysis or by an app. /// + [Obsolete("This field is deprecated in version 2024-04. Please use OrderRiskAssessment.riskLevel")] public OrderRiskLevel? level { get; set; } + /// ///The risk message that's shown to the merchant in the Shopify admin. /// + [Obsolete("This field is deprecated in version 2024-04")] + public string? message { get; set; } + } + + /// + ///The risk assessments for an order. + /// + public class OrderRiskAssessment : GraphQLObject + { + /// + ///Optional facts used to describe the risk assessment. The values in here are specific to the provider. + ///See the [examples for the mutation orderRiskAssessmentCreate](https://shopify.dev/api/admin-graphql/unstable/mutations/orderRiskAssessmentCreate#section-examples). + /// + public IEnumerable? facts { get; set; } + /// + ///The app that provided the assessment, `null` if the assessment was provided by Shopify. + /// + public App? provider { get; set; } + /// + ///The likelihood that the order is fraudulent, based on this risk assessment. + /// + public RiskAssessmentResult? riskLevel { get; set; } + } + + /// + ///Return type for `orderRiskAssessmentCreate` mutation. + /// + public class OrderRiskAssessmentCreatePayload : GraphQLObject + { + /// + ///The order risk assessment created. + /// + public OrderRiskAssessment? orderRiskAssessment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `OrderRiskAssessmentCreate`. + /// + public class OrderRiskAssessmentCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public OrderRiskAssessmentCreateUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// public string? message { get; set; } } + /// + ///Possible error codes that can be returned by `OrderRiskAssessmentCreateUserError`. + /// + public enum OrderRiskAssessmentCreateUserErrorCode + { + /// + ///Too many facts were provided for the risk assessment. + /// + TOO_MANY_FACTS, + /// + ///The order is marked as fulfilled and can no longer accept new risk assessments. + /// + ORDER_ALREADY_FULFILLED, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + /// ///The likelihood that an order is fraudulent. /// @@ -33720,6 +35334,44 @@ public enum OrderRiskLevel HIGH, } + /// + ///List of possible values for an OrderRiskRecommendation recommendation. + /// + public enum OrderRiskRecommendationResult + { + /// + ///Recommends cancelling the order. + /// + CANCEL, + /// + ///Recommends investigating the order by contacting buyers. + /// + INVESTIGATE, + /// + ///Recommends fulfilling the order. + /// + ACCEPT, + /// + ///There is no recommended action for the order. + /// + NONE, + } + + /// + ///Summary of risk characteristics for an order. + /// + public class OrderRiskSummary : GraphQLObject + { + /// + ///The list of risk assessments for the order. + /// + public IEnumerable? assessments { get; set; } + /// + ///The recommendation for the order based on the results of the risk assessments. This suggests the action the merchant should take with regards to its risk of fraud. + /// + public OrderRiskRecommendationResult? recommendation { get; set; } + } + /// ///The set of valid sort keys for the Order query. /// @@ -33790,6 +35442,7 @@ public enum OrderSortKeys [JsonDerivedType(typeof(OrderStagedChangeAddVariant), typeDiscriminator: "OrderStagedChangeAddVariant")] [JsonDerivedType(typeof(OrderStagedChangeDecrementItem), typeDiscriminator: "OrderStagedChangeDecrementItem")] [JsonDerivedType(typeof(OrderStagedChangeIncrementItem), typeDiscriminator: "OrderStagedChangeIncrementItem")] + [JsonDerivedType(typeof(OrderStagedChangeRemoveShippingLine), typeDiscriminator: "OrderStagedChangeRemoveShippingLine")] public interface IOrderStagedChange : IGraphQLObject { public OrderStagedChangeAddCustomItem? AsOrderStagedChangeAddCustomItem() => this as OrderStagedChangeAddCustomItem; @@ -33798,6 +35451,7 @@ public interface IOrderStagedChange : IGraphQLObject public OrderStagedChangeAddVariant? AsOrderStagedChangeAddVariant() => this as OrderStagedChangeAddVariant; public OrderStagedChangeDecrementItem? AsOrderStagedChangeDecrementItem() => this as OrderStagedChangeDecrementItem; public OrderStagedChangeIncrementItem? AsOrderStagedChangeIncrementItem() => this as OrderStagedChangeIncrementItem; + public OrderStagedChangeRemoveShippingLine? AsOrderStagedChangeRemoveShippingLine() => this as OrderStagedChangeRemoveShippingLine; } /// @@ -33947,6 +35601,17 @@ public class OrderStagedChangeIncrementItem : GraphQLObject + ///A shipping line removed during an order edit. + /// + public class OrderStagedChangeRemoveShippingLine : GraphQLObject, IOrderStagedChange + { + /// + ///The removed shipping line. + /// + public ShippingLine? shippingLine { get; set; } + } + /// ///A payment transaction in the context of an order. /// @@ -34058,13 +35723,6 @@ public class OrderTransaction : GraphQLObject, INode ///Date and time when the transaction was processed. /// public DateTime? processedAt { get; set; } - - /// - ///The transaction receipt that the payment gateway attaches to the transaction. - ///The value of this field depends on which payment gateway processed the transaction. - /// - [Obsolete("Use `receiptJson` instead.")] - public string? receipt { get; set; } /// ///The transaction receipt that the payment gateway attaches to the transaction. ///The value of this field depends on which payment gateway processed the transaction. @@ -35684,7 +37342,7 @@ public class PriceListParent : GraphQLObject /// ///Represents information about pricing for a product variant - /// as defined on a price list, such as the price, compare at price, and origin type. You can use a PriceListPrice to specify a fixed price for a specific product variant. + /// as defined on a price list, such as the price, compare at price, and origin type. You can use a `PriceListPrice` to specify a fixed price for a specific product variant. For examples, refer to [PriceListFixedPricesAdd](https://shopify.dev/api/admin-graphql/latest/mutations/priceListFixedPricesAdd) and [PriceList](https://shopify.dev/api/admin-graphql/latest/queries/priceList#section-examples). /// public class PriceListPrice : GraphQLObject { @@ -35745,7 +37403,7 @@ public class PriceListPriceEdge : GraphQLObject, IEdge - ///Represents the origin of a price, either fixed (defined on the price list) or relative (calculated using a price list adjustment configuration). + ///Represents the origin of a price, either fixed (defined on the price list) or relative (calculated using a price list adjustment configuration). For examples, refer to [PriceList](https://shopify.dev/api/admin-graphql/latest/queries/priceList#section-examples). /// public enum PriceListPriceOriginType { @@ -36033,7 +37691,7 @@ public class PriceRule : GraphQLObject, ICommentEventSubject, IHasEve /// ///How many discount codes associated with the price rule. /// - public int? discountCodesCount { get; set; } + public Count? discountCodesCount { get; set; } /// ///The date and time when the price rule ends. For open-ended price rules, use `null`. /// @@ -37277,7 +38935,7 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet /// ///The number of publications a resource is published to without feedback errors. /// - public int? availablePublicationCount { get; set; } + public Count? availablePublicationsCount { get; set; } /// ///The description of the product, complete with HTML formatting. @@ -37285,6 +38943,10 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet [Obsolete("Use `descriptionHtml` instead.")] public string? bodyHtml { get; set; } /// + ///The taxonomy category specified by the merchant. + /// + public TaxonomyCategory? category { get; set; } + /// ///A list of the collections that include the product. /// public CollectionConnection? collections { get; set; } @@ -37384,7 +39046,7 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet /// ///Total count of media belonging to a product. /// - public int? mediaCount { get; set; } + public Count? mediaCount { get; set; } /// ///Returns a metafield by namespace and key that belongs to the resource. /// @@ -37432,9 +39094,11 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet /// [Obsolete("Metafields created using a reserved namespace are private by default. See our guide for\n[migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).")] public PrivateMetafieldConnection? privateMetafields { get; set; } + /// ///The product category specified by the merchant. /// + [Obsolete("Deprecated in API version 2024-04. Use `category` instead.")] public ProductCategory? productCategory { get; set; } /// @@ -37446,9 +39110,11 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet ///The product type specified by the merchant. /// public string? productType { get; set; } + /// ///The number of publications a resource is published on. /// + [Obsolete("Use `resourcePublicationsCount` instead.")] public int? publicationCount { get; set; } /// @@ -37497,18 +39163,28 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet /// public ResourcePublicationConnection? resourcePublications { get; set; } /// + ///The number of publications a resource is published on. + /// + public Count? resourcePublicationsCount { get; set; } + /// ///The list of resources that are either published or staged to be published to a publication. /// public ResourcePublicationV2Connection? resourcePublicationsV2 { get; set; } + /// ///Count of selling plan groups associated with the product. /// + [Obsolete("Use `sellingPlanGroupsCount` instead.")] public int? sellingPlanGroupCount { get; set; } /// ///A list of all selling plan groups defined in the current shop associated with the product either directly or through any of its variants. /// public SellingPlanGroupConnection? sellingPlanGroups { get; set; } /// + ///Count of selling plan groups associated with the product. + /// + public Count? sellingPlanGroupsCount { get; set; } + /// ///SEO information of the product. /// public SEO? seo { get; set; } @@ -37549,9 +39225,11 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet ///The quantity of inventory in stock. /// public int? totalInventory { get; set; } + /// ///The number of variants that are associated with the product. /// + [Obsolete("Use `variantsCount` instead.")] public int? totalVariants { get; set; } /// ///Whether inventory tracking has been enabled for the product. @@ -37583,6 +39261,10 @@ public class Product : GraphQLObject, IHasMetafieldDefinitions, IHasMet /// public ProductVariantConnection? variants { get; set; } /// + ///The number of variants that are associated with the product. + /// + public Count? variantsCount { get; set; } + /// ///The name of the product's vendor. /// public string? vendor { get; set; } @@ -37740,6 +39422,8 @@ public class ProductConnection : GraphQLObject, IConnectionWi /// ///The price of a product in a specific country. ///Prices vary between countries. + ///Refer to [Product](https://shopify.dev/docs/api/admin-graphql/latest/queries/product?example=Get+the+price+range+for+a+product+for+buyers+from+Canada) + ///for more information on how to use this object. /// public class ProductContextualPricing : GraphQLObject { @@ -37925,25 +39609,6 @@ public enum ProductDeleteUserErrorCode GENERIC_ERROR, } - /// - ///Return type for `productDuplicateAsync` mutation. - /// - public class ProductDuplicateAsyncPayload : GraphQLObject - { - /// - ///The duplicated product ID. - /// - public string? duplicatedProductId { get; set; } - /// - ///The asynchronous job for duplicating the products. - /// - public Job? job { get; set; } - /// - ///The list of errors that occurred from executing the mutation. - /// - public IEnumerable? userErrors { get; set; } - } - /// ///Return type for `productDuplicateAsyncV2` mutation. /// @@ -38362,6 +40027,43 @@ public enum ProductMediaSortKeys RELEVANCE, } + /// + ///An entity that represents details of an asynchronous operation on a product. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ProductSetOperation), typeDiscriminator: "ProductSetOperation")] + public interface IProductOperation : IGraphQLObject + { + public ProductSetOperation? AsProductSetOperation() => this as ProductSetOperation; + /// + ///The product that's created or updated during this operation. + /// + public Product? product { get; } + /// + ///The status of this operation. + /// + public ProductOperationStatus? status { get; } + } + + /// + ///Represents the state of this product operation. + /// + public enum ProductOperationStatus + { + /// + ///Operation has been created. + /// + CREATED, + /// + ///Operation is currently running. + /// + ACTIVE, + /// + ///Operation is complete. + /// + COMPLETE, + } + /// ///The product property names. For example, "Size", "Color", and "Material". ///Variants are selected based on permutations of these options. @@ -38374,10 +40076,18 @@ public class ProductOption : GraphQLObject, IHasPublishedTranslat /// public string? id { get; set; } /// + ///The metafield identifier linked to this option. + /// + public LinkedMetafield? linkedMetafield { get; set; } + /// ///The product option’s name. /// public string? name { get; set; } /// + ///Similar to values, option_values returns all the corresponding option value objects to the product option, including values not assigned to any variants. + /// + public IEnumerable? optionValues { get; set; } + /// ///The product option's position. /// public int? position { get; set; } @@ -38391,6 +40101,526 @@ public class ProductOption : GraphQLObject, IHasPublishedTranslat public IEnumerable? values { get; set; } } + /// + ///The set of strategies available for use on the `productOptionDelete` mutation. + /// + public enum ProductOptionDeleteStrategy + { + /// + ///The default strategy, the specified `Option` may only have one corresponding `value`. + /// + DEFAULT, + /// + ///An `Option` with multiple `values` can be deleted. Remaining variants will be deleted, highest `position` first, in the event of duplicates being detected. + /// + POSITION, + /// + ///An `Option` with multiple `values` can be deleted, but the operation only succeeds if no product variants get deleted. + /// + NON_DESTRUCTIVE, + } + + /// + ///Return type for `productOptionUpdate` mutation. + /// + public class ProductOptionUpdatePayload : GraphQLObject + { + /// + ///The product with which the option being updated is associated. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed `ProductOptionUpdate` mutation. + /// + public class ProductOptionUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public ProductOptionUpdateUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `ProductOptionUpdateUserError`. + /// + public enum ProductOptionUpdateUserErrorCode + { + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Product is suspended. + /// + PRODUCT_SUSPENDED, + /// + ///Option does not exist. + /// + OPTION_DOES_NOT_EXIST, + /// + ///Option already exists. + /// + OPTION_ALREADY_EXISTS, + /// + ///The option position provided is not valid. + /// + INVALID_POSITION, + /// + ///The name provided is not valid. + /// + INVALID_NAME, + /// + ///Option values count is over the allowed limit. + /// + OPTION_VALUES_OVER_LIMIT, + /// + ///Option value does not exist. + /// + OPTION_VALUE_DOES_NOT_EXIST, + /// + ///Option value already exists. + /// + OPTION_VALUE_ALREADY_EXISTS, + /// + ///Option value with variants linked cannot be deleted. + /// + OPTION_VALUE_HAS_VARIANTS, + /// + ///Deleting all option values of an option is not allowed. + /// + CANNOT_DELETE_ALL_OPTION_VALUES_IN_OPTION, + /// + ///An option cannot be left only with option values that are not linked to any variant. + /// + CANNOT_LEAVE_OPTIONS_WITHOUT_VARIANTS, + /// + ///On create, this key cannot be used. + /// + NO_KEY_ON_CREATE, + /// + ///A key is missing in the input. + /// + KEY_MISSING_IN_INPUT, + /// + ///Duplicated option value. + /// + DUPLICATED_OPTION_VALUE, + /// + ///Option name is too long. + /// + OPTION_NAME_TOO_LONG, + /// + ///Option value name is too long. + /// + OPTION_VALUE_NAME_TOO_LONG, + /// + ///Performing conflicting actions on an option value. + /// + OPTION_VALUE_CONFLICTING_OPERATION, + /// + ///The number of variants will be above the limit after this operation. + /// + CANNOT_CREATE_VARIANTS_ABOVE_LIMIT, + /// + ///An option cannot have both metafield linked and nonlinked option values. + /// + CANNOT_COMBINE_LINKED_AND_NONLINKED_OPTION_VALUES, + /// + ///Invalid metafield value for linked option. + /// + INVALID_METAFIELD_VALUE_FOR_LINKED_OPTION, + /// + ///Cannot link multiple options to the same metafield. + /// + DUPLICATE_LINKED_OPTION, + /// + ///An option linked to the provided metafield already exists. + /// + OPTION_LINKED_METAFIELD_ALREADY_TAKEN, + /// + ///Updating the linked_metafield of an option requires a linked_metafield_value for each option value. + /// + LINKED_OPTION_UPDATE_MISSING_VALUES, + /// + ///Linked options are currently not supported for this shop. + /// + LINKED_OPTIONS_NOT_SUPPORTED_FOR_SHOP, + /// + ///At least one of the product variants has invalid SKUs. + /// + CANNOT_MAKE_CHANGES_IF_VARIANT_IS_MISSING_REQUIRED_SKU, + } + + /// + ///The set of variant strategies available for use in the `productOptionUpdate` mutation. + /// + public enum ProductOptionUpdateVariantStrategy + { + /// + ///Variants are not created nor deleted in response to option values to add or delete. + ///In cases where deleting a variant would be necessary to complete the operation, an error will be returned. + /// + LEAVE_AS_IS, + /// + ///Variants are created and deleted according to the option values to add and to delete. + /// + ///If an option value is added, a new variant will be added for each existing option combination + ///available on the product. For example, if the existing options are `Size` and `Color`, with + ///values `S`/`XL` and `Red`/`Blue`, adding a new option value `Green` for the option `Color` will create + ///variants with the option value combinations `S`/`Green` and `XL`/`Green`. + /// + ///If an option value is deleted, all variants referencing that option value will be deleted. + /// + MANAGE, + } + + /// + ///The product option value names. For example, "Red", "Blue", and "Green" for a "Color" option. + /// + public class ProductOptionValue : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///Whether the product option value has any linked variants. + /// + public bool? hasVariants { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The value of the linked metafield. + /// + public string? linkedMetafieldValue { get; set; } + /// + ///The name of the product option value. + /// + public string? name { get; set; } + /// + ///The swatch associated with the product option value. + /// + public ProductOptionValueSwatch? swatch { get; set; } + /// + ///The translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + } + + /// + ///A swatch associated with a product option value. + /// + public class ProductOptionValueSwatch : GraphQLObject + { + /// + ///The color representation of the swatch. + /// + public string? color { get; set; } + /// + ///An image representation of the swatch. + /// + public MediaImage? image { get; set; } + } + + /// + ///Return type for `productOptionsCreate` mutation. + /// + public class ProductOptionsCreatePayload : GraphQLObject + { + /// + ///The updated product object. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed `ProductOptionsCreate` mutation. + /// + public class ProductOptionsCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public ProductOptionsCreateUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `ProductOptionsCreateUserError`. + /// + public enum ProductOptionsCreateUserErrorCode + { + /// + ///Option already exists. + /// + OPTION_ALREADY_EXISTS, + /// + ///Options count is over the allowed limit. + /// + OPTIONS_OVER_LIMIT, + /// + ///Option values count is over the allowed limit. + /// + OPTION_VALUES_OVER_LIMIT, + /// + ///The name provided is not valid. + /// + INVALID_NAME, + /// + ///Product is suspended. + /// + PRODUCT_SUSPENDED, + /// + ///Cannot create new options without values for all existing variants. + /// + NEW_OPTION_WITHOUT_VALUE_FOR_EXISTING_VARIANTS, + /// + ///Duplicated option name. + /// + DUPLICATED_OPTION_NAME, + /// + ///Duplicated option value. + /// + DUPLICATED_OPTION_VALUE, + /// + ///Each option must have a name specified. + /// + OPTION_NAME_MISSING, + /// + ///Each option must have at least one option value specified. + /// + OPTION_VALUES_MISSING, + /// + ///Position must be between 1 and the maximum number of options per product. + /// + POSITION_OUT_OF_BOUNDS, + /// + ///If specified, position field must be present in all option inputs. + /// + OPTION_POSITION_MISSING, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///No valid metafield definition found for linked option. + /// + LINKED_METAFIELD_DEFINITION_NOT_FOUND, + /// + ///Invalid metafield value for linked option. + /// + INVALID_METAFIELD_VALUE_FOR_LINKED_OPTION, + /// + ///Missing metafield values for linked option. + /// + MISSING_METAFIELD_VALUES_FOR_LINKED_OPTION, + /// + ///Cannot combine linked metafield and option values. + /// + CANNOT_COMBINE_LINKED_METAFIELD_AND_OPTION_VALUES, + /// + ///Cannot link multiple options to the same metafield. + /// + DUPLICATE_LINKED_OPTION, + /// + ///An option linked to the provided metafield already exists. + /// + OPTION_LINKED_METAFIELD_ALREADY_TAKEN, + /// + ///Linked options are currently not supported for this shop. + /// + LINKED_OPTIONS_NOT_SUPPORTED_FOR_SHOP, + /// + ///At least one of the product variants has invalid SKUs. + /// + CANNOT_MAKE_CHANGES_IF_VARIANT_IS_MISSING_REQUIRED_SKU, + } + + /// + ///Return type for `productOptionsDelete` mutation. + /// + public class ProductOptionsDeletePayload : GraphQLObject + { + /// + ///IDs of the options deleted. + /// + public IEnumerable? deletedOptionsIds { get; set; } + /// + ///The updated product object. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed `ProductOptionsDelete` mutation. + /// + public class ProductOptionsDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public ProductOptionsDeleteUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `ProductOptionsDeleteUserError`. + /// + public enum ProductOptionsDeleteUserErrorCode + { + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Product is suspended. + /// + PRODUCT_SUSPENDED, + /// + ///Option does not exist. + /// + OPTION_DOES_NOT_EXIST, + /// + ///Options do not belong to the same product. + /// + OPTIONS_DO_NOT_BELONG_TO_THE_SAME_PRODUCT, + /// + ///Can't delete option with multiple values. + /// + CANNOT_DELETE_OPTION_WITH_MULTIPLE_VALUES, + /// + ///Cannot delete options without deleting variants. + /// + CANNOT_USE_NON_DESTRUCTIVE_STRATEGY, + /// + ///At least one of the product variants has invalid SKUs. + /// + CANNOT_MAKE_CHANGES_IF_VARIANT_IS_MISSING_REQUIRED_SKU, + } + + /// + ///Return type for `productOptionsReorder` mutation. + /// + public class ProductOptionsReorderPayload : GraphQLObject + { + /// + ///The updated product object. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed `ProductOptionsReorder` mutation. + /// + public class ProductOptionsReorderUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public ProductOptionsReorderUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `ProductOptionsReorderUserError`. + /// + public enum ProductOptionsReorderUserErrorCode + { + /// + ///Option name does not exist. + /// + OPTION_NAME_DOES_NOT_EXIST, + /// + ///Option value does not exist. + /// + OPTION_VALUE_DOES_NOT_EXIST, + /// + ///Option id does not exist. + /// + OPTION_ID_DOES_NOT_EXIST, + /// + ///Option value id does not exist. + /// + OPTION_VALUE_ID_DOES_NOT_EXIST, + /// + ///Duplicated option name. + /// + DUPLICATED_OPTION_NAME, + /// + ///Duplicated option value. + /// + DUPLICATED_OPTION_VALUE, + /// + ///Missing option name. + /// + MISSING_OPTION_NAME, + /// + ///Missing option value. + /// + MISSING_OPTION_VALUE, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///On reorder, this key cannot be used. + /// + NO_KEY_ON_REORDER, + /// + ///Cannot specify different options or option values using mixed id and name reference key. + /// + MIXING_ID_AND_NAME_KEYS_IS_NOT_ALLOWED, + /// + ///At least one of the product variants has invalid SKUs. + /// + CANNOT_MAKE_CHANGES_IF_VARIANT_IS_MISSING_REQUIRED_SKU, + } + /// ///The price range of the product. /// @@ -38616,6 +40846,171 @@ public class ProductSale : GraphQLObject, ISale public MoneyBag? totalTaxAmount { get; set; } } + /// + ///An entity that represents details of an asynchronous + ///[ProductSet](https://shopify.dev/api/admin-graphql/current/mutations/productSet) mutation. + /// + ///By querying this entity with the + ///[productOperation](https://shopify.dev/api/admin-graphql/current/queries/productOperation) query + ///using the ID that was returned + ///[when the product was created or updated](https://shopify.dev/api/admin/migrate/new-product-model/sync-data#create-a-product-with-variants-and-options-asynchronously), + ///this can be used to check the status of an operation. + /// + ///The `status` field indicates whether the operation is `CREATED`, `ACTIVE`, or `COMPLETE`. + /// + ///The `product` field provides the details of the created or updated product. + /// + ///The `userErrors` field provides mutation errors that occurred during the operation. + /// + public class ProductSetOperation : GraphQLObject, INode, IProductOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The product that's created or updated during this operation. + /// + public Product? product { get; set; } + /// + ///The status of this operation. + /// + public ProductOperationStatus? status { get; set; } + /// + ///Returns mutation errors occurred during background mutation processing. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productSet` mutation. + /// + public class ProductSetPayload : GraphQLObject + { + /// + ///The product object. + /// + public Product? product { get; set; } + /// + ///The product set operation, returned when run in asynchronous mode. + /// + public ProductSetOperation? productSetOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors for ProductSet mutation. + /// + public class ProductSetUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public ProductSetUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `ProductSetUserError`. + /// + public enum ProductSetUserErrorCode + { + /// + ///Something went wrong, please try again. + /// + GENERIC_ERROR, + /// + ///Metafield is not valid. + /// + INVALID_METAFIELD, + /// + ///Product variant is not valid. + /// + INVALID_VARIANT, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Product variant does not exist. + /// + PRODUCT_VARIANT_DOES_NOT_EXIST, + /// + ///Option does not exist. + /// + OPTION_DOES_NOT_EXIST, + /// + ///Option value does not exist. + /// + OPTION_VALUE_DOES_NOT_EXIST, + /// + ///Options over limit. + /// + OPTIONS_OVER_LIMIT, + /// + ///Option values over limit. + /// + OPTION_VALUES_OVER_LIMIT, + /// + ///Each option must have at least one option value specified. + /// + OPTION_VALUES_MISSING, + /// + ///Duplicated option name. + /// + DUPLICATED_OPTION_NAME, + /// + ///Duplicated option value. + /// + DUPLICATED_OPTION_VALUE, + /// + ///Number of product variants exceeds shop limit. + /// + VARIANTS_OVER_LIMIT, + /// + ///Must specify product options when updating variants. + /// + PRODUCT_OPTIONS_INPUT_MISSING, + /// + ///Must specify variants when updating options. + /// + VARIANTS_INPUT_MISSING, + /// + ///Gift card products can only be created after they have been activated. + /// + GIFT_CARDS_NOT_ACTIVATED, + /// + ///The product gift_card attribute cannot be changed after creation. + /// + GIFT_CARD_ATTRIBUTE_CANNOT_BE_CHANGED, + /// + ///Product is not valid. + /// + INVALID_PRODUCT, + /// + ///Input is not valid. + /// + INVALID_INPUT, + /// + ///Error processing request in the background job. + /// + JOB_ERROR, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, + } + /// ///The set of valid sort keys for the Product query. /// @@ -38816,9 +41211,11 @@ public class ProductVariant : GraphQLObject, IHasMetafieldDefini /// [Obsolete("\nThe [relationship between a product variant and a fulfillment service was changed in the `2022-07` API version](/changelog/fulfillment-service-sku-sharing). A [ProductVariant](/api/admin-graphql/latest/objects/ProductVariant) can be stocked by multiple fulfillment services. As a result, we recommend that you use the [inventoryItem field](/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-inventoryitem) if you need to determine where a product variant is stocked.\n\nIf you need to determine whether a product is a gift card, then you should continue to use this field until an alternative is available.\n\nLearn more about [managing inventory quantities and states](/apps/fulfillment/inventory-management-apps/quantities-states).")] public FulfillmentService? fulfillmentService { get; set; } + /// ///Whether changes to the fulfillment service for the product variant are allowed. /// + [Obsolete("The [relationship between a product variant and a fulfillment service was changed in the `2022-07` API version](/changelog/fulfillment-service-sku-sharing). A [ProductVariant](/api/admin-graphql/latest/objects/ProductVariant) can be stocked by multiple fulfillment services. \nAs a result, the fulfillment_service is no longer directly editable on a ProductVariant and this field is no longer applicable.")] public EditableProperty? fulfillmentServiceEditable { get; set; } /// @@ -38928,15 +41325,21 @@ public class ProductVariant : GraphQLObject, IHasMetafieldDefini ///[limitations based on customer location](https://help.shopify.com/manual/markets/inventory_and_fulfillment). /// public int? sellableOnlineQuantity { get; set; } + /// ///Count of selling plan groups associated with the product variant. /// + [Obsolete("Use `sellingPlanGroupsCount` instead.")] public int? sellingPlanGroupCount { get; set; } /// ///A list of all selling plan groups defined in the current shop associated with the product variant. /// public SellingPlanGroupConnection? sellingPlanGroups { get; set; } /// + ///Count of selling plan groups associated with the product variant. + /// + public Count? sellingPlanGroupsCount { get; set; } + /// ///A case-sensitive identifier for the product variant in the shop. ///Required in order to connect to a fulfillment service. /// @@ -38969,13 +41372,17 @@ public class ProductVariant : GraphQLObject, IHasMetafieldDefini ///The date and time (ISO 8601 format) when the product variant was last modified. /// public DateTime? updatedAt { get; set; } + /// ///The weight of the product variant in the unit system specified with weight_unit. /// + [Obsolete("Use InventoryItem.measurement.weight instead")] public float? weight { get; set; } + /// ///The unit of measurement that applies to the product variant's weight. If you don't specify a value for weight_unit, then the shop's default unit of measurement is applied. Valid values: `g`, `kg`, `oz`, `lb`. /// + [Obsolete("Use InventoryItem.measurement.weight instead")] public WeightUnit? weightUnit { get; set; } } @@ -39495,6 +41902,21 @@ public class ProductVariantsBulkCreatePayload : GraphQLObject? userErrors { get; set; } } + /// + ///The set of strategies available for use on the `productVariantsBulkCreate` mutation. + /// + public enum ProductVariantsBulkCreateStrategy + { + /// + ///The default strategy; keep the standalone variant (when product has only a single or default variant) when creating variants in bulk. + /// + DEFAULT, + /// + ///Delete the standalone variant (when product has only a single or default variant) when creating new variants in bulk. + /// + REMOVE_STANDALONE_VARIANT, + } + /// ///Error codes for failed product variant bulk create mutations. /// @@ -39774,6 +42196,10 @@ public enum ProductVariantsBulkUpdateUserErrorCode ///Price cannot take a negative value. /// NEGATIVE_PRICE_VALUE, + /// + ///Cannot set name for an option value linked to a metafield. + /// + CANNOT_SET_NAME_FOR_LINKED_OPTION_VALUE, } /// @@ -39878,6 +42304,10 @@ public enum PubSubWebhookSubscriptionCreateUserErrorCode ///Invalid parameters provided. /// INVALID_PARAMETERS, + /// + ///Address for this topic has already been taken. + /// + TAKEN, } /// @@ -40242,10 +42672,12 @@ public interface IPublishable : IGraphQLObject /// ///The number of publications a resource is published to without feedback errors. /// - public int? availablePublicationCount { get; } + public Count? availablePublicationsCount { get; } + /// ///The number of publications a resource is published on. /// + [Obsolete("Use `resourcePublicationsCount` instead.")] public int? publicationCount { get; } /// @@ -40272,6 +42704,10 @@ public interface IPublishable : IGraphQLObject /// public ResourcePublicationConnection? resourcePublications { get; } /// + ///The number of publications a resource is published on. + /// + public Count? resourcePublicationsCount { get; } + /// ///The list of resources that are either published or staged to be published to a publication. /// public ResourcePublicationV2Connection? resourcePublicationsV2 { get; } @@ -40439,10 +42875,6 @@ public class QuantityPriceBreakConnection : GraphQLObject public PageInfo? pageInfo { get; set; } - /// - ///The total count of QuantityPriceBreaks. - /// - public ulong? totalCount { get; set; } } /// @@ -40715,10 +43147,6 @@ public class QuantityRuleConnection : GraphQLObject, ICo ///Information to aid in pagination. /// public PageInfo? pageInfo { get; set; } - /// - ///The total count of QuantityRules. - /// - public ulong? totalCount { get; set; } } /// @@ -40951,6 +43379,17 @@ public class QueryRoot : GraphQLObject /// public CartTransformConnection? cartTransforms { get; set; } /// + ///Lookup a cash tracking session by ID. + /// + public CashTrackingSession? cashTrackingSession { get; set; } + /// + ///Returns a shop's cash tracking sessions for locations with a POS Pro subscription. + /// + ///Tip: To query for cash tracking sessions in bulk, you can + ///[perform a bulk operation](https://shopify.dev/docs/api/usage/bulk-operations/queries). + /// + public CashTrackingSessionConnection? cashTrackingSessions { get; set; } + /// ///Returns a Catalog resource by ID. /// public ICatalog? catalog { get; set; } @@ -40962,6 +43401,10 @@ public class QueryRoot : GraphQLObject ///The catalogs belonging to the shop. /// public CatalogConnection? catalogs { get; set; } + /// + ///The count of catalogs belonging to the shop. Limited to a maximum of 10000. + /// + public Count? catalogsCount { get; set; } /// ///Lookup a channel by ID. @@ -40975,7 +43418,11 @@ public class QueryRoot : GraphQLObject [Obsolete("Use `publications` instead.")] public ChannelConnection? channels { get; set; } /// - ///Returns the checkout branding settings for a checkout profile. + ///Returns the visual customizations for checkout for a given checkout profile. + /// + ///To learn more about updating checkout branding settings, refer to the + ///[checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert) + ///mutation and the checkout branding [tutorial](https://shopify.dev/docs/apps/checkout/styling). /// public CheckoutBranding? checkoutBranding { get; set; } /// @@ -41029,6 +43476,10 @@ public class QueryRoot : GraphQLObject /// public CompanyConnection? companies { get; set; } /// + ///The number of companies for a shop. + /// + public Count? companiesCount { get; set; } + /// ///Returns a `Company` object by ID. /// public Company? company { get; set; } @@ -41041,10 +43492,6 @@ public class QueryRoot : GraphQLObject /// public CompanyContactRole? companyContactRole { get; set; } /// - ///The number of companies for a shop. - /// - public int? companyCount { get; set; } - /// ///Returns a `CompanyLocation` object by ID. /// public CompanyLocation? companyLocation { get; set; } @@ -41119,7 +43566,7 @@ public class QueryRoot : GraphQLObject /// ///The total number of discount codes for the shop. /// - public int? discountCodeCount { get; set; } + public Count? discountCodesCount { get; set; } /// ///Returns a discount resource by ID. /// @@ -41211,9 +43658,9 @@ public class QueryRoot : GraphQLObject /// public GiftCardConnection? giftCards { get; set; } /// - ///The total number of gift cards issued for the shop. + ///The total number of gift cards issued for the shop. Limited to a maximum of 10000. /// - public ulong? giftCardsCount { get; set; } + public Count? giftCardsCount { get; set; } /// ///Returns an ///[InventoryItem](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem) @@ -41396,6 +43843,10 @@ public class QueryRoot : GraphQLObject /// public IEnumerable? paymentTermsTemplates { get; set; } /// + ///The number of pendings orders. Limited to a maximum of 10000. + /// + public Count? pendingOrdersCount { get; set; } + /// ///Returns a price list resource by ID. /// public PriceList? priceList { get; set; } @@ -41457,6 +43908,25 @@ public class QueryRoot : GraphQLObject /// public ProductFeedConnection? productFeeds { get; set; } /// + ///Returns a ProductOperation resource by ID. + /// + ///This can be used to query the + ///[ProductSetOperation](https://shopify.dev/api/admin-graphql/current/objects/ProductSetOperation), using + ///the ID that was returned + ///[when the product was created or updated](https://shopify.dev/api/admin/migrate/new-product-model/sync-data#create-a-product-with-variants-and-options-asynchronously) + ///by the + ///[ProductSet](https://shopify.dev/api/admin-graphql/current/mutations/productSet) mutation. + /// + ///The `status` field indicates whether the operation is `CREATED`, `ACTIVE`, or `COMPLETE`. + /// + ///The `product` field provides the details of the created or updated product. + /// + ///For the + ///[ProductSetOperation](https://shopify.dev/api/admin-graphql/current/objects/ProductSetOperation), the + ///`userErrors` field provides mutation errors that occurred during the operation. + /// + public IProductOperation? productOperation { get; set; } + /// ///Returns the product resource feedback for the currently authenticated app. /// public ProductResourceFeedback? productResourceFeedback { get; set; } @@ -41477,6 +43947,10 @@ public class QueryRoot : GraphQLObject /// public ProductConnection? products { get; set; } /// + ///Count of products. Limited to a maximum of 10000. + /// + public Count? productsCount { get; set; } + /// ///The list of publicly-accessible Admin API versions, including supported versions, the release candidate, and unstable versions. /// public IEnumerable? publicApiVersions { get; set; } @@ -41489,6 +43963,10 @@ public class QueryRoot : GraphQLObject /// public PublicationConnection? publications { get; set; } /// + ///Count of publications. + /// + public Count? publicationsCount { get; set; } + /// ///Returns a Refund resource by ID. /// public Refund? refund { get; set; } @@ -41539,10 +44017,6 @@ public class QueryRoot : GraphQLObject /// public Segment? segment { get; set; } /// - ///The number of segments for a shop. - /// - public int? segmentCount { get; set; } - /// ///A list of filter suggestions associated with a segment. A segment is a group of members (commonly customers) that meet specific criteria. /// public SegmentFilterConnection? segmentFilterSuggestions { get; set; } @@ -41563,6 +44037,10 @@ public class QueryRoot : GraphQLObject /// public SegmentConnection? segments { get; set; } /// + ///The number of segments for a shop. + /// + public Count? segmentsCount { get; set; } + /// ///Returns a Selling Plan Group resource by ID. /// public SellingPlanGroup? sellingPlanGroup { get; set; } @@ -41642,6 +44120,10 @@ public class QueryRoot : GraphQLObject /// public SubscriptionDraft? subscriptionDraft { get; set; } /// + ///The Taxonomy resource lets you access the categories, attributes and values of the loaded taxonomy tree. + /// + public Taxonomy? taxonomy { get; set; } + /// ///Returns a list of TenderTransactions associated with the shop. /// public TenderTransactionConnection? tenderTransactions { get; set; } @@ -41729,6 +44211,10 @@ public class Refund : GraphQLObject, ILegacyInteroperability, INode /// public RefundLineItemConnection? refundLineItems { get; set; } /// + ///The `RefundShippingLine` resources attached to the refund. + /// + public RefundShippingLineConnection? refundShippingLines { get; set; } + /// ///The return associated with the refund. /// public Return? @return { get; set; } @@ -41988,6 +44474,55 @@ public enum RefundLineItemRestockType NO_RESTOCK, } + /// + ///A shipping line item that's included in a refund. + /// + public class RefundShippingLine : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The `ShippingLine` resource associated to the refunded shipping line item. + /// + public ShippingLine? shippingLine { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple RefundShippingLines. + /// + public class RefundShippingLineConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in RefundShippingLineEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one RefundShippingLine and a cursor during pagination. + /// + public class RefundShippingLineEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of RefundShippingLineEdge. + /// + public RefundShippingLine? node { get; set; } + } + /// ///An alert message that appears in the Shopify admin about a problem with a store resource, with 1 or more actions to take. For example, you could use an alert to indicate that you're not charging taxes on some product variants. ///They can optionally have a specific icon and be dismissed by merchants. @@ -42301,6 +44836,26 @@ public class ResourcePublicationV2Edge : GraphQLObject + ///A restocking fee is a fee captured as part of a return to cover the costs of handling a return line item. + ///Typically, this would cover the costs of inspecting, repackaging, and restocking the item. + /// + public class RestockingFee : GraphQLObject, IFee + { + /// + ///The amount of the restocking fee, in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///The unique ID for the Fee. + /// + public string? id { get; set; } + /// + ///The value of the fee as a percentage. + /// + public float? percentage { get; set; } + } + /// ///Represents a return. /// @@ -42311,6 +44866,10 @@ public class Return : GraphQLObject, INode /// public ReturnDecline? decline { get; set; } /// + ///The exchange line items attached to the return. + /// + public ExchangeLineItemConnection? exchangeLineItems { get; set; } + /// ///A globally-unique ID. /// public string? id { get; set; } @@ -42331,6 +44890,10 @@ public class Return : GraphQLObject, INode /// public ReturnLineItemConnection? returnLineItems { get; set; } /// + ///The return shipping fees for the return. + /// + public IEnumerable? returnShippingFees { get; set; } + /// ///The list of reverse fulfillment orders for the return. /// public ReverseFulfillmentOrderConnection? reverseFulfillmentOrders { get; set; } @@ -42348,6 +44911,41 @@ public class Return : GraphQLObject, INode public int? totalQuantity { get; set; } } + /// + ///An agreement between the merchant and customer for a return. + /// + public class ReturnAgreement : GraphQLObject, ISalesAgreement + { + /// + ///The application that created the agreement. + /// + public App? app { get; set; } + /// + ///The date and time at which the agreement occured. + /// + public DateTime? happenedAt { get; set; } + /// + ///The unique ID for the agreement. + /// + public string? id { get; set; } + /// + ///The reason the agremeent was created. + /// + public OrderActionType? reason { get; set; } + /// + ///The return associated with the agreement. + /// + public Return? @return { get; set; } + /// + ///The sales associated with the agreement. + /// + public SaleConnection? sales { get; set; } + /// + ///The staff member associated with the agreement. + /// + public StaffMember? user { get; set; } + } + /// ///Return type for `returnApproveRequest` mutation. /// @@ -42625,6 +45223,10 @@ public class ReturnLineItem : GraphQLObject, INode /// public int? refundedQuantity { get; set; } /// + ///The restocking fee for the return line item. + /// + public RestockingFee? restockingFee { get; set; } + /// ///The reason for returning the item. /// public ReturnReason? returnReason { get; set; } @@ -42768,6 +45370,21 @@ public class ReturnRequestPayload : GraphQLObject public IEnumerable? userErrors { get; set; } } + /// + ///A return shipping fee is a fee captured as part of a return to cover the costs of shipping the return. + /// + public class ReturnShippingFee : GraphQLObject, IFee + { + /// + ///The amount of the return shipping fee, in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///The unique ID for the Fee. + /// + public string? id { get; set; } + } + /// ///The status of a return. /// @@ -43396,6 +46013,67 @@ public enum ReverseFulfillmentOrderThirdPartyConfirmationStatus REJECTED, } + /// + ///List of possible values for a RiskAssessment result. + /// + public enum RiskAssessmentResult + { + /// + ///Indicates a high likelihood that the order is fraudulent. + /// + HIGH, + /// + ///Indicates a medium likelihood that the order is fraudulent. + /// + MEDIUM, + /// + ///Indicates a low likelihood that the order is fraudulent. + /// + LOW, + /// + ///Indicates that the risk assessment will not provide a recommendation for the order. + /// + NONE, + /// + ///Indicates that the risk assessment is still pending. + /// + PENDING, + } + + /// + ///A risk fact belongs to a single risk assessment and serves to provide additional context for an assessment. Risk facts are not necessarily tied to the result of the recommendation. + /// + public class RiskFact : GraphQLObject + { + /// + ///A description of the fact. + /// + public string? description { get; set; } + /// + ///Indicates whether the fact is a negative, neutral or positive contributor with regards to risk. + /// + public RiskFactSentiment? sentiment { get; set; } + } + + /// + ///List of possible values for a RiskFact sentiment. + /// + public enum RiskFactSentiment + { + /// + ///A positive contributor that lowers the risk. + /// + POSITIVE, + /// + ///A neutral contributor with regards to risk. + /// + NEUTRAL, + /// + ///A negative contributor that increases the risk. + /// + NEGATIVE, + } + /// ///A row count represents rows on background operation. /// @@ -43433,6 +46111,7 @@ public class SEO : GraphQLObject [JsonDerivedType(typeof(AdditionalFeeSale), typeDiscriminator: "AdditionalFeeSale")] [JsonDerivedType(typeof(AdjustmentSale), typeDiscriminator: "AdjustmentSale")] [JsonDerivedType(typeof(DutySale), typeDiscriminator: "DutySale")] + [JsonDerivedType(typeof(FeeSale), typeDiscriminator: "FeeSale")] [JsonDerivedType(typeof(GiftCardSale), typeDiscriminator: "GiftCardSale")] [JsonDerivedType(typeof(ProductSale), typeDiscriminator: "ProductSale")] [JsonDerivedType(typeof(ShippingLineSale), typeDiscriminator: "ShippingLineSale")] @@ -43443,6 +46122,7 @@ public interface ISale : IGraphQLObject public AdditionalFeeSale? AsAdditionalFeeSale() => this as AdditionalFeeSale; public AdjustmentSale? AsAdjustmentSale() => this as AdjustmentSale; public DutySale? AsDutySale() => this as DutySale; + public FeeSale? AsFeeSale() => this as FeeSale; public GiftCardSale? AsGiftCardSale() => this as GiftCardSale; public ProductSale? AsProductSale() => this as ProductSale; public ShippingLineSale? AsShippingLineSale() => this as ShippingLineSale; @@ -43596,6 +46276,10 @@ public enum SaleLineType /// ADDITIONAL_FEE, /// + ///A fee charge. + /// + FEE, + /// ///An unknown sale line. Represents new types that may be added in future versions. /// UNKNOWN, @@ -43631,11 +46315,13 @@ public class SaleTax : GraphQLObject [JsonDerivedType(typeof(OrderAgreement), typeDiscriminator: "OrderAgreement")] [JsonDerivedType(typeof(OrderEditAgreement), typeDiscriminator: "OrderEditAgreement")] [JsonDerivedType(typeof(RefundAgreement), typeDiscriminator: "RefundAgreement")] + [JsonDerivedType(typeof(ReturnAgreement), typeDiscriminator: "ReturnAgreement")] public interface ISalesAgreement : IGraphQLObject { public OrderAgreement? AsOrderAgreement() => this as OrderAgreement; public OrderEditAgreement? AsOrderEditAgreement() => this as OrderEditAgreement; public RefundAgreement? AsRefundAgreement() => this as RefundAgreement; + public ReturnAgreement? AsReturnAgreement() => this as ReturnAgreement; /// ///The application that created the agreement. /// @@ -44698,6 +47384,10 @@ public class SelectedOption : GraphQLObject /// public string? name { get; set; } /// + ///The product option’s value object. + /// + public ProductOptionValue? optionValue { get; set; } + /// ///The product option’s value. /// public string? value { get; set; } @@ -45154,22 +47844,22 @@ public class SellingPlanGroup : GraphQLObject, IHasPublishedTr /// public int? position { get; set; } /// - ///A count of products associated to the selling plan group. + ///Product variants associated to the selling plan group. /// - public int? productCount { get; set; } + public ProductVariantConnection? productVariants { get; set; } /// ///A count of product variants associated to the selling plan group. /// - public int? productVariantCount { get; set; } - /// - ///Product variants associated to the selling plan group. - /// - public ProductVariantConnection? productVariants { get; set; } + public Count? productVariantsCount { get; set; } /// ///Products associated to the selling plan group. /// public ProductConnection? products { get; set; } /// + ///A count of products associated to the selling plan group. + /// + public Count? productsCount { get; set; } + /// ///Selling plans associated to the selling plan group. /// public SellingPlanConnection? sellingPlans { get; set; } @@ -45985,6 +48675,29 @@ public enum ShippingDiscountClass SHIPPING, } + /// + ///The optional shipping label for this fulfillment. + /// + public class ShippingLabel : GraphQLObject, INode + { + /// + ///Indicates whether the label is cancellable or not. + /// + public bool? cancellable { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The location of the shipping origin. This will be null when the shipping origin is unknown. + /// + public Location? location { get; set; } + /// + ///Indicates whether the label was printed or not. + /// + public bool? printed { get; set; } + } + /// ///Represents the shipping details that the customer chose for their order. /// @@ -46014,17 +48727,23 @@ public class ShippingLine : GraphQLObject /// ///The pre-tax shipping price with discounts applied. + ///As of API version 2024-07, this will be calculated including cart level discounts, such as the free shipping discount. /// [Obsolete("Use `discountedPriceSet` instead.")] public MoneyV2? discountedPrice { get; set; } /// - ///The pre-tax shipping price with discounts applied. + ///The shipping price after applying discounts. If the parent order.taxesIncluded field is true, then this price includes taxes. If not, it's the pre-tax price. + ///As of API version 2024-07, this will be calculated including cart level discounts, such as the free shipping discount. /// public MoneyBag? discountedPriceSet { get; set; } /// ///A globally-unique ID. /// public string? id { get; set; } + /// + ///Whether the shipping line has been removed. + /// + public bool? isRemoved { get; set; } /// ///The pre-tax shipping price without any discounts applied. @@ -46329,12 +49048,6 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio ///The shop's billing address information. /// public ShopAddress? billingAddress { get; set; } - - /// - ///Exposes the number of channels. - /// - [Obsolete("Use `publicationCount` instead.")] - public int? channelCount { get; set; } /// ///List of all channel definitions associated with a shop. /// @@ -46377,6 +49090,10 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio /// public CountriesInShippingZones? countriesInShippingZones { get; set; } /// + ///The date and time when the shop was created. + /// + public DateTime? createdAt { get; set; } + /// ///The three letter code for the currency that the shop sells in. /// public CurrencyCode? currencyCode { get; set; } @@ -46475,10 +49192,12 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio /// [Obsolete("Use `QueryRoot.inventoryItems` instead.")] public InventoryItemConnection? inventoryItems { get; set; } + /// ///The number of pendings orders on the shop. ///Limited to a maximum of 10000. /// + [Obsolete("Use `QueryRoot.pendingOrdersCount` instead.")] public LimitedPendingOrderCount? limitedPendingOrderCount { get; set; } /// @@ -46493,6 +49212,10 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio [Obsolete("Use `QueryRoot.marketingEvents` instead.")] public MarketingEventConnection? marketingEvents { get; set; } /// + ///Whether SMS marketing has been enabled on the shop's checkout configuration settings. + /// + public bool? marketingSmsConsentEnabledAtCheckout { get; set; } + /// ///The approval signals for a shop to support onboarding to channel apps. /// public MerchantApprovalSignals? merchantApprovalSignals { get; set; } @@ -46544,12 +49267,6 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio ///The shop's settings related to payments. /// public PaymentSettings? paymentSettings { get; set; } - - /// - ///Number of pending orders on the shop. - /// - [Obsolete("Use `limitedPendingOrderCount` instead.")] - public int? pendingOrderCount { get; set; } /// ///The shop's billing plan. /// @@ -46588,9 +49305,11 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio /// [Obsolete("Use `QueryRoot.productByHandle` instead.")] public Product? productByHandle { get; set; } + /// ///The list of all images of all products for the shop. /// + [Obsolete("Use `files` instead. See [filesQuery](https://shopify.dev/docs/api/admin-graphql/latest/queries/files) and its [query](https://shopify.dev/docs/api/admin-graphql/2024-01/queries/files#argument-query) argument for more information.")] public ImageConnection? productImages { get; set; } /// @@ -46622,9 +49341,11 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio /// [Obsolete("Use `QueryRoot.products`.")] public ProductConnection? products { get; set; } + /// ///The number of publications for the shop. /// + [Obsolete("Use `QueryRoot.publicationsCount` instead.")] public int? publicationCount { get; set; } /// ///The shop's limits for specific resources. For example, the maximum number ofvariants allowed per product, or the maximum number of locations allowed. @@ -46701,6 +49422,10 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio /// public UnitSystem? unitSystem { get; set; } /// + ///The date and time when the shop was last updated. + /// + public DateTime? updatedAt { get; set; } + /// ///Fetches a list of images uploaded to the shop by their IDs. /// public IEnumerable? uploadedImagesByIds { get; set; } @@ -46715,7 +49440,7 @@ public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslatio } /// - ///The shop's billing address. + ///An address for a shop. /// public class ShopAddress : GraphQLObject, INode { @@ -49507,6 +52232,26 @@ public enum SubscriptionBillingAttemptErrorCode ///Transient error, try again later. /// TRANSIENT_ERROR, + /// + ///Insufficient funds. + /// + INSUFFICIENT_FUNDS, + /// + ///Purchase Type is not supported. + /// + PURCHASE_TYPE_NOT_SUPPORTED, + /// + ///Paypal Error General. + /// + PAYPAL_ERROR_GENERAL, + /// + ///Card number was incorrect. + /// + CARD_NUMBER_INCORRECT, + /// + ///Fraud was suspected. + /// + FRAUD_SUSPECTED, } /// @@ -49734,15 +52479,21 @@ public class SubscriptionBillingCycleEditedContract : GraphQLObject public SubscriptionManualDiscountConnection? discounts { get; set; } + /// ///The number of lines associated with the subscription contract. /// + [Obsolete("Use `linesCount` instead.")] public int? lineCount { get; set; } /// ///The list of subscription lines associated with the subscription contract. /// public SubscriptionLineConnection? lines { get; set; } /// + ///The number of lines associated with the subscription contract. + /// + public Count? linesCount { get; set; } + /// ///The note field that will be applied to the generated orders. /// public string? note { get; set; } @@ -50092,15 +52843,21 @@ public class SubscriptionContract : GraphQLObject, INode, ///The current status of the last payment. /// public SubscriptionContractLastPaymentStatus? lastPaymentStatus { get; set; } + /// ///The number of lines associated with the subscription contract. /// + [Obsolete("Use `linesCount` instead.")] public int? lineCount { get; set; } /// ///The list of subscription lines associated with the subscription contract. /// public SubscriptionLineConnection? lines { get; set; } /// + ///The number of lines associated with the subscription contract. + /// + public Count? linesCount { get; set; } + /// ///The next billing date for the subscription contract. This field is managed by the apps. /// Alternatively you can utilize our /// [Billing Cycles APIs](https://shopify.dev/docs/apps/selling-strategies/subscriptions/billing-cycles), @@ -50209,15 +52966,21 @@ public interface ISubscriptionContractBase : IGraphQLObject ///The list of subscription discounts associated with the subscription contract. /// public SubscriptionManualDiscountConnection? discounts { get; } + /// ///The number of lines associated with the subscription contract. /// + [Obsolete("Use `linesCount` instead.")] public int? lineCount { get; } /// ///The list of subscription lines associated with the subscription contract. /// public SubscriptionLineConnection? lines { get; } /// + ///The number of lines associated with the subscription contract. + /// + public Count? linesCount { get; } + /// ///The note field that will be applied to the generated orders. /// public string? note { get; } @@ -51256,6 +54019,10 @@ public enum SubscriptionDraftErrorCode /// EXCEEDED_MAX_CONCATENATED_CONTRACTS, /// + ///Customer is scheduled for redaction or has been redacted. + /// + CUSTOMER_REDACTED, + /// ///The input value is invalid. /// INVALID, @@ -52523,6 +55290,257 @@ public enum TaxPartnerState ACTIVE, } + /// + ///The Taxonomy resource lets you access the categories, attributes and values of a taxonomy tree. + /// + public class Taxonomy : GraphQLObject + { + /// + ///Returns the categories of the product taxonomy based on the arguments provided. + ///If a `search` argument is provided, then all categories that match the search query globally are returned. + ///If a `children_of` argument is provided, then all children of the specified category are returned. + ///If a `siblings_of` argument is provided, then all siblings of the specified category are returned. + ///If a `decendents_of` argument is provided, then all descendents of the specified category are returned. + ///If no arguments are provided, then all the top-level categories of the taxonomy are returned. + /// + public TaxonomyCategoryConnection? categories { get; set; } + } + + /// + ///A Shopify product taxonomy attribute. + /// + public class TaxonomyAttribute : GraphQLObject, INode, ITaxonomyCategoryAttribute + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///The details of a specific product category within the [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt). + /// + public class TaxonomyCategory : GraphQLObject, INode + { + /// + ///The IDs of the category's ancestor categories. + /// + public IEnumerable? ancestorIds { get; set; } + /// + ///The attributes of the taxonomy category. + /// + public TaxonomyCategoryAttributeConnection? attributes { get; set; } + /// + ///The IDs of the category's child categories. + /// + public IEnumerable? childrenIds { get; set; } + /// + ///The full name of the taxonomy category. For example, Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds. + /// + public string? fullName { get; set; } + /// + ///The globally-unique ID of the TaxonomyCategory. + /// + public string? id { get; set; } + /// + ///Whether the category is archived. The default value is `false`. + /// + public bool? isArchived { get; set; } + /// + ///Whether the category is a leaf category. A leaf category doesn't have any subcategories beneath it. For example, in Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Treadmills, Dog Treadmills is a leaf category. The value is `true` when there are no `childrenIds` specified. + /// + public bool? isLeaf { get; set; } + /// + ///Whether the category is a root category. A root category is at the top level of the category hierarchy and doesn't have a parent category. For example, Animals & Pet Supplies. The value is `true` when there's no `parentId` specified. + /// + public bool? isRoot { get; set; } + /// + ///The level of the category in the taxonomy tree. Levels indicate the depth of the category from the root. For example, in Animals & Pet Supplies > Pet Supplies > Dog Supplies, Animals & Pet Supplies is at level 1, Animals & Pet Supplies > Pet Supplies is at level 2, and Animals & Pet Supplies > Pet Supplies > Dog Supplies is at level 3. + /// + public int? level { get; set; } + /// + ///The name of the taxonomy category. For example, Dog Beds. + /// + public string? name { get; set; } + /// + ///The ID of the category's parent category. + /// + public string? parentId { get; set; } + } + + /// + ///A product taxonomy attribute interface. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(TaxonomyAttribute), typeDiscriminator: "TaxonomyAttribute")] + [JsonDerivedType(typeof(TaxonomyChoiceListAttribute), typeDiscriminator: "TaxonomyChoiceListAttribute")] + [JsonDerivedType(typeof(TaxonomyMeasurementAttribute), typeDiscriminator: "TaxonomyMeasurementAttribute")] + public interface ITaxonomyCategoryAttribute : IGraphQLObject + { + public TaxonomyAttribute? AsTaxonomyAttribute() => this as TaxonomyAttribute; + public TaxonomyChoiceListAttribute? AsTaxonomyChoiceListAttribute() => this as TaxonomyChoiceListAttribute; + public TaxonomyMeasurementAttribute? AsTaxonomyMeasurementAttribute() => this as TaxonomyMeasurementAttribute; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple TaxonomyCategoryAttributes. + /// + public class TaxonomyCategoryAttributeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in TaxonomyCategoryAttributeEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyCategoryAttribute and a cursor during pagination. + /// + public class TaxonomyCategoryAttributeEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of TaxonomyCategoryAttributeEdge. + /// + public ITaxonomyCategoryAttribute? node { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple TaxonomyCategories. + /// + public class TaxonomyCategoryConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in TaxonomyCategoryEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyCategory and a cursor during pagination. + /// + public class TaxonomyCategoryEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of TaxonomyCategoryEdge. + /// + public TaxonomyCategory? node { get; set; } + } + + /// + ///A Shopify product taxonomy choice list attribute. + /// + public class TaxonomyChoiceListAttribute : GraphQLObject, INode, ITaxonomyCategoryAttribute + { + /// + ///The unique ID of the TaxonomyAttribute. + /// + public string? id { get; set; } + /// + ///The name of the product taxonomy attribute. For example, Color. + /// + public string? name { get; set; } + /// + ///A list of values on the choice list attribute. + /// + public TaxonomyValueConnection? values { get; set; } + } + + /// + ///A Shopify product taxonomy measurement attribute. + /// + public class TaxonomyMeasurementAttribute : GraphQLObject, INode, ITaxonomyCategoryAttribute + { + /// + ///The unique ID of the TaxonomyAttribute. + /// + public string? id { get; set; } + /// + ///The name of the product taxonomy attribute. For example, Color. + /// + public string? name { get; set; } + /// + ///The product taxonomy attribute options. + /// + public IEnumerable? options { get; set; } + } + + /// + ///Represents a Shopify product taxonomy value. + /// + public class TaxonomyValue : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the product taxonomy value. For example, Red. + /// + public string? name { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple TaxonomyValues. + /// + public class TaxonomyValueConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of the nodes contained in TaxonomyValueEdge. + /// + public IEnumerable? nodes { get; set; } + /// + ///Information to aid in pagination. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyValue and a cursor during pagination. + /// + public class TaxonomyValueEdge : GraphQLObject, IEdge + { + /// + ///A cursor for use in pagination. + /// + public string? cursor { get; set; } + /// + ///The item at the end of TaxonomyValueEdge. + /// + public TaxonomyValue? node { get; set; } + } + /// ///A TenderTransaction represents a transaction with financial impact on a shop's balance sheet. A tender transaction always ///represents actual money movement between a buyer and a shop. TenderTransactions can be used instead of OrderTransactions @@ -52717,6 +55735,63 @@ public class TransactionFee : GraphQLObject, INode public string? type { get; set; } } + /// + ///Return type for `transactionVoid` mutation. + /// + public class TransactionVoidPayload : GraphQLObject + { + /// + ///The created void transaction. + /// + public OrderTransaction? transaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `TransactionVoid`. + /// + public class TransactionVoidUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public TransactionVoidUserErrorCode? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `TransactionVoidUserError`. + /// + public enum TransactionVoidUserErrorCode + { + /// + ///Transaction does not exist. + /// + TRANSACTION_NOT_FOUND, + /// + ///Transaction must be a successful authorization. + /// + AUTH_NOT_SUCCESSFUL, + /// + ///Transaction must be voidable. + /// + AUTH_NOT_VOIDABLE, + /// + ///A generic error occurred while attempting to void the transaction. + /// + GENERIC_ERROR, + } + /// ///Translatable content of a resource's field. /// @@ -52855,7 +55930,7 @@ public enum TranslatableResourceType /// PACKING_SLIP_TEMPLATE, /// - ///A payment gateway. Translatable fields: `name`. + ///A payment gateway. Translatable fields: `name`, `message`, `before_payment_instructions`. /// PAYMENT_GATEWAY, /// @@ -52868,9 +55943,9 @@ public enum TranslatableResourceType /// PRODUCT_OPTION, /// - ///An online store product variant. Translatable fields: `option1`, `option2`, `option3`. + ///The product option value names. For example, "Red", "Blue", and "Green" for a "Color" option. Translatable fields: `name`. /// - PRODUCT_VARIANT, + PRODUCT_OPTION_VALUE, /// ///A selling plan. Translatable fields:`name`, `option1`, `option2`, `option3`, `description`. /// @@ -53851,6 +56926,10 @@ public enum ValidationUserErrorCode ///The input value is too short. /// TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, } /// @@ -54324,9 +57403,10 @@ public enum WebhookSubscriptionSortKeys ///The supported topics for webhook subscriptions. You can use webhook subscriptions to receive ///notifications about particular events in a shop. /// - ///You don't create webhook subscriptions to - ///[mandatory webhooks](https://shopify.dev/apps/webhooks/configuration/mandatory-webhooks). - ///Instead, you configure mandatory webhooks in your Partner Dashboard as part of your app setup. + ///You create mandatory webhooks either via the + ///[Partner Dashboard](https://shopify.dev/apps/webhooks/configuration/mandatory-webhooks#subscribe-to-privacy-webhooks) + ///or by updating the + ///[app configuration TOML](https://shopify.dev/apps/tools/cli/configuration#app-configuration-file-example). /// public enum WebhookSubscriptionTopic { @@ -54547,59 +57627,59 @@ public enum WebhookSubscriptionTopic ///If you need to determine the originally assigned location, then you should refer to the `source_location`. /// ///[Learn more about moving line items](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove). - /// Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + /// Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_MOVED, /// - ///The webhook topic for `fulfillment_orders/hold_released` events. Occurs whenever a fulfillment order hold is released. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/hold_released` events. Occurs whenever a fulfillment order hold is released. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_HOLD_RELEASED, /// - ///The webhook topic for `fulfillment_orders/scheduled_fulfillment_order_ready` events. Occurs whenever a fulfillment order which was scheduled becomes due. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/scheduled_fulfillment_order_ready` events. Occurs whenever a fulfillment order which was scheduled becomes due. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_SCHEDULED_FULFILLMENT_ORDER_READY, /// - ///The webhook topic for `fulfillment_orders/order_routing_complete` events. Occurs when an order has finished being routed and it's fulfillment orders assigned to a fulfillment service's location. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders. + ///The webhook topic for `fulfillment_orders/order_routing_complete` events. Occurs when an order has finished being routed and it's fulfillment orders assigned to a fulfillment service's location. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_ORDER_ROUTING_COMPLETE, /// - ///The webhook topic for `fulfillment_orders/cancelled` events. Occurs when a fulfillment order is cancelled. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/cancelled` events. Occurs when a fulfillment order is cancelled. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_CANCELLED, /// - ///The webhook topic for `fulfillment_orders/fulfillment_service_failed_to_complete` events. Occurs when a fulfillment service intends to close an in_progress fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/fulfillment_service_failed_to_complete` events. Occurs when a fulfillment service intends to close an in_progress fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_FULFILLMENT_SERVICE_FAILED_TO_COMPLETE, /// - ///The webhook topic for `fulfillment_orders/fulfillment_request_rejected` events. Occurs when a 3PL rejects a fulfillment request that was sent by a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/fulfillment_request_rejected` events. Occurs when a 3PL rejects a fulfillment request that was sent by a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_REJECTED, /// - ///The webhook topic for `fulfillment_orders/cancellation_request_submitted` events. Occurs when a merchant requests a fulfillment request to be cancelled after that request was approved by a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/cancellation_request_submitted` events. Occurs when a merchant requests a fulfillment request to be cancelled after that request was approved by a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_CANCELLATION_REQUEST_SUBMITTED, /// - ///The webhook topic for `fulfillment_orders/cancellation_request_accepted` events. Occurs when a 3PL accepts a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/cancellation_request_accepted` events. Occurs when a 3PL accepts a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_CANCELLATION_REQUEST_ACCEPTED, /// - ///The webhook topic for `fulfillment_orders/cancellation_request_rejected` events. Occurs when a 3PL rejects a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/cancellation_request_rejected` events. Occurs when a 3PL rejects a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_CANCELLATION_REQUEST_REJECTED, /// - ///The webhook topic for `fulfillment_orders/fulfillment_request_submitted` events. Occurs when a merchant submits a fulfillment request to a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders. + ///The webhook topic for `fulfillment_orders/fulfillment_request_submitted` events. Occurs when a merchant submits a fulfillment request to a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_SUBMITTED, /// - ///The webhook topic for `fulfillment_orders/fulfillment_request_accepted` events. Occurs when a fulfillment service accepts a request to fulfill a fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/fulfillment_request_accepted` events. Occurs when a fulfillment service accepts a request to fulfill a fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_ACCEPTED, /// - ///The webhook topic for `fulfillment_orders/line_items_prepared_for_local_delivery` events. Occurs whenever a fulfillment order's line items are prepared for local delivery. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/line_items_prepared_for_local_delivery` events. Occurs whenever a fulfillment order's line items are prepared for local delivery. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_LOCAL_DELIVERY, /// - ///The webhook topic for `fulfillment_orders/placed_on_hold` events. Occurs when a fulfillment order is placed on hold. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/placed_on_hold` events. Occurs when a fulfillment order is placed on hold. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_PLACED_ON_HOLD, /// @@ -54867,6 +57947,10 @@ public enum WebhookSubscriptionTopic /// RETURNS_APPROVE, /// + ///The webhook topic for `returns/update` events. Occurs whenever a return is updated. Requires at least one of the following scopes: read_returns, read_marketplace_returns, read_buyer_membership_orders. + /// + RETURNS_UPDATE, + /// ///The webhook topic for `returns/decline` events. Occurs whenever a return is declined. This means `Return.status` is `DECLINED`. Requires at least one of the following scopes: read_returns, read_marketplace_returns, read_buyer_membership_orders. /// RETURNS_DECLINE, @@ -54944,6 +58028,15 @@ public enum WebhookSubscriptionTopic /// MARKETS_DELETE, /// + ///The webhook topic for `orders/risk_assessment_changed` events. Triggers when a new risk assessment is available on the order. + ///This can be the first or a subsequent risk assessment. + ///New risk assessments can be provided until the order is marked as fulfilled. + ///Includes the risk level, risk facts and the provider. Does not include the risk recommendation for the order. + ///The order and shop are identified in the headers. + /// Requires the `read_orders` scope. + /// + ORDERS_RISK_ASSESSMENT_CHANGED, + /// ///The webhook topic for `orders/shopify_protect_eligibility_changed` events. Occurs whenever Shopify Protect's eligibility for an order is changed. Requires the `read_orders` scope. /// ORDERS_SHOPIFY_PROTECT_ELIGIBILITY_CHANGED, @@ -54953,7 +58046,7 @@ public enum WebhookSubscriptionTopic ///Fulfillment orders may be merged if they have the same `fulfillAt` datetime. ///If the fulfillment order is merged then the resulting fulfillment order will be indicated in the webhook body. ///Otherwise it will be the original fulfillment order with an updated `fulfill_at` datetime. - /// Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + /// Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_RESCHEDULED, /// @@ -54965,7 +58058,7 @@ public enum WebhookSubscriptionTopic /// AUDIT_EVENTS_ADMIN_API_ACTIVITY, /// - ///The webhook topic for `fulfillment_orders/line_items_prepared_for_pickup` events. Triggers when one or more of the line items for a fulfillment order are prepared for pickup Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. + ///The webhook topic for `fulfillment_orders/line_items_prepared_for_pickup` events. Triggers when one or more of the line items for a fulfillment order are prepared for pickup Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. /// FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_PICKUP, /// diff --git a/ShopifySharp/Entities/ShippingLine.cs b/ShopifySharp/Entities/ShippingLine.cs index bc1ef0d7d..c7e7d30a2 100644 --- a/ShopifySharp/Entities/ShippingLine.cs +++ b/ShopifySharp/Entities/ShippingLine.cs @@ -17,6 +17,12 @@ public class ShippingLine : ShopifyObject [JsonProperty("code")] public string Code { get; set; } + /// + /// Whether the shipping line has been removed from the order. + /// + [JsonProperty("is_removed")] + public bool? IsRemoved { get; set; } + /// /// The phone number used for the shipment. /// diff --git a/ShopifySharp/Services/Checkout/CheckoutService.cs b/ShopifySharp/Services/Checkout/CheckoutService.cs index cdc036647..e0d4b6845 100644 --- a/ShopifySharp/Services/Checkout/CheckoutService.cs +++ b/ShopifySharp/Services/Checkout/CheckoutService.cs @@ -6,12 +6,14 @@ using System.Threading.Tasks; using System.Threading; using ShopifySharp.Utilities; +using System; namespace ShopifySharp { /// /// A service for working with abandoned checkouts. /// + [Obsolete("https://shopify.dev/changelog/deprecation-of-checkout-apis")] public class CheckoutService : ShopifyService, ICheckoutService { /// The shop's *.myshopify.com URL. diff --git a/ShopifySharp/Services/OrderRisk/OrderRiskService.cs b/ShopifySharp/Services/OrderRisk/OrderRiskService.cs index cd265678a..17d61298d 100644 --- a/ShopifySharp/Services/OrderRisk/OrderRiskService.cs +++ b/ShopifySharp/Services/OrderRisk/OrderRiskService.cs @@ -5,12 +5,14 @@ using System.Threading.Tasks; using System.Threading; using ShopifySharp.Utilities; +using System; namespace ShopifySharp { /// /// A service for manipulating Shopify order risks. /// + [Obsolete("https://shopify.dev/docs/api/release-notes/2024-04#AccordionItem85")] public class OrderRiskService : ShopifyService, IOrderRiskService { /// diff --git a/ShopifySharp/Services/ShopifyService.cs b/ShopifySharp/Services/ShopifyService.cs index d0de41966..d1252a351 100644 --- a/ShopifySharp/Services/ShopifyService.cs +++ b/ShopifySharp/Services/ShopifyService.cs @@ -22,7 +22,7 @@ public abstract class ShopifyService : IShopifyService #nullable enable - public virtual string APIVersion => "2024-01"; + public virtual string APIVersion => "2024-04"; public virtual bool SupportsAPIVersioning => true; protected Uri _ShopUri { get; set; }