From 70f4d625a337f7ebf43181420c626f014fe9c0d4 Mon Sep 17 00:00:00 2001 From: matnun-br Date: Tue, 13 May 2025 10:26:22 +1000 Subject: [PATCH 1/6] Initial commit with initial scaffold --- .github/workflows/ci.yml | 33 + .vscode/settings.json | 3 + Directory.Build.props | 10 + ShopifyNet.sln | 48 + ShopifyNet/AdminTypes/Shopify.cs | 65831 +++++ ShopifyNet/ShopifyNet.cs | 6 + ShopifyNet/ShopifyNet.csproj | 12 + ShopifyNetApp/ShopifyNetApp.cs | 38 + ShopifyNetApp/ShopifyNetApp.csproj | 16 + ShopifyNetApp/shopify.json | 344142 ++++++++++++++++++++++++++ 10 files changed, 410139 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .vscode/settings.json create mode 100644 Directory.Build.props create mode 100644 ShopifyNet.sln create mode 100644 ShopifyNet/AdminTypes/Shopify.cs create mode 100644 ShopifyNet/ShopifyNet.cs create mode 100644 ShopifyNet/ShopifyNet.csproj create mode 100644 ShopifyNetApp/ShopifyNetApp.cs create mode 100644 ShopifyNetApp/ShopifyNetApp.csproj create mode 100644 ShopifyNetApp/shopify.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2bd3e32 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +name: Build Test Publish + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: # Allows manual triggering of the workflow + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json + + - name: Install dependencies + run: dotnet restore + + - name: Build + run: dotnet build -c Release --no-restore + + - name: Test + run: dotnet test --no-restore --verbosity normal + + - name: Publish to nuget + if: github.event_name == 'workflow_dispatch' # Only runs when manually triggered for deployment + run: dotnet nuget push ShopifyNet/bin/Release/*.nupkg -s https://api.nuget.org/v3/index.json --skip-duplicate -k "${{ secrets.NUGET_API_KEY }}" diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4bd54c8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "dotnet.defaultSolution": "ShopifyNet.sln" +} \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..21a67c2 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,10 @@ + + + + net9.0 + latest + enable + true + true + + diff --git a/ShopifyNet.sln b/ShopifyNet.sln new file mode 100644 index 0000000..d8ce842 --- /dev/null +++ b/ShopifyNet.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShopifyNet", "ShopifyNet\ShopifyNet.csproj", "{F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShopifyNetApp", "ShopifyNetApp\ShopifyNetApp.csproj", "{2A893113-4D49-409B-9511-07122FDFB81A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|x64.ActiveCfg = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|x64.Build.0 = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|x86.ActiveCfg = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Debug|x86.Build.0 = Debug|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|Any CPU.Build.0 = Release|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|x64.ActiveCfg = Release|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|x64.Build.0 = Release|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|x86.ActiveCfg = Release|Any CPU + {F402CA4F-E89F-46CE-849B-EA7AAC13F7E6}.Release|x86.Build.0 = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|x64.ActiveCfg = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|x64.Build.0 = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|x86.ActiveCfg = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Debug|x86.Build.0 = Debug|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|Any CPU.Build.0 = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|x64.ActiveCfg = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|x64.Build.0 = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|x86.ActiveCfg = Release|Any CPU + {2A893113-4D49-409B-9511-07122FDFB81A}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ShopifyNet/AdminTypes/Shopify.cs b/ShopifyNet/AdminTypes/Shopify.cs new file mode 100644 index 0000000..a0f4a97 --- /dev/null +++ b/ShopifyNet/AdminTypes/Shopify.cs @@ -0,0 +1,65831 @@ +#nullable enable +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace shopify +{ + public static class Serializer + { + public static readonly JsonSerializerOptions Options = new JsonSerializerOptions + { + NumberHandling = JsonNumberHandling.AllowReadingFromString, + Converters = + { + new JsonStringEnumConverter() + }, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + }; + public static string Serialize(object obj) + { + return JsonSerializer.Serialize(obj, obj.GetType(), Options); + } + + public static object? Deserialize(string json, Type type) + { + return JsonSerializer.Deserialize(json, type, Options); + } + + public static T? Deserialize(string json) + where T : class + { + return JsonSerializer.Deserialize(json, Options); + } + } + + public interface IGraphQLObject + { + } + + public abstract class GraphQLObject : IGraphQLObject where TSelf : GraphQLObject + { + public static TSelf? FromJson(string json) => Serializer.Deserialize(json); + } + + public static class GraphQLObjectExtensions + { + public static string ToJson(this IGraphQLObject o) => Serializer.Serialize(o); + } + + public interface IEdge + { + string? cursor { get; set; } + + object? node { get; set; } + } + + public interface IEdge : IEdge + { + object? IEdge.node { get => this.node; set => this.node = (TNode? )value; } + new TNode? node { get; set; } + } + + public interface IConnection + { + PageInfo? pageInfo { get; set; } + + Type GetNodeType(); + IEnumerable? GetNodes(); + } + + public interface IConnectionWithNodes : IConnection + { + IEnumerable? nodes { get; set; } + + IEnumerable? IConnection.GetNodes() => this.nodes; + } + + public interface IConnectionWithNodes : IConnectionWithNodes + { + IEnumerable? IConnectionWithNodes.nodes { get => this.nodes; set => this.nodes = (IEnumerable? )value; } + new IEnumerable? nodes { get; set; } + + Type IConnection.GetNodeType() => typeof(TNode); + } + + public interface IConnectionWithEdges : IConnection + { + IEnumerable? edges { get; set; } + + Type GetEdgeType(); + IEnumerable? IConnection.GetNodes() => this.edges?.Select(e => e.node); + } + + public interface IConnectionWithEdges : IConnectionWithEdges + { + IEnumerable? IConnectionWithEdges.edges { get => this.edges; set => this.edges = (IEnumerable>? )value; } + new IEnumerable>? edges { get; set; } + + Type IConnection.GetNodeType() => typeof(TNode); + } + + public interface IConnectionWithEdges : IConnectionWithEdges where TEdge : IEdge + { + IEnumerable>? IConnectionWithEdges.edges { get => this.edges?.Cast>(); set => this.edges = value?.Cast(); } + new IEnumerable? edges { get; set; } + + Type IConnectionWithEdges.GetEdgeType() => typeof(TEdge); + } + + public interface IConnectionWithNodesAndEdges : IConnectionWithEdges, IConnectionWithNodes where TEdge : IEdge + { + Type IConnection.GetNodeType() => typeof(TNode); + IEnumerable? IConnection.GetNodes() => this.nodes ?? this.edges?.Select(e => e.node); + } + + /// + ///A checkout that was abandoned by the customer. + /// + public class AbandonedCheckout : GraphQLObject, INavigable, INode + { + /// + ///The URL for the buyer to recover their checkout. + /// + public string? abandonedCheckoutUrl { get; set; } + /// + ///The billing address provided by the buyer. + ///Null if the user did not provide a billing address. + /// + public MailingAddress? billingAddress { get; set; } + /// + ///The date and time when the buyer completed the checkout. + ///Null if the checkout has not been completed. + /// + public DateTime? completedAt { get; set; } + /// + ///The date and time when the checkout was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A list of extra information that has been added to the checkout. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer who created this checkout. + ///May be null if the checkout was created from a draft order or via an app. + /// + public Customer? customer { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The discount codes entered by the buyer at checkout. + /// + public IEnumerable? discountCodes { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A list of the line items in this checkout. + /// + public AbandonedCheckoutLineItemConnection? lineItems { get; set; } + + /// + ///The number of products in the checkout. + /// + [Obsolete("Use [AbandonedCheckoutLineItem.quantity](https://shopify.dev/api/admin-graphql/unstable/objects/AbandonedCheckoutLineItem#field-quantity) instead.")] + public int? lineItemsQuantity { get; set; } + /// + ///Unique merchant-facing identifier for the checkout. + /// + public string? name { get; set; } + /// + ///A merchant-facing note added to the checkout. Not visible to the buyer. + /// + public string? note { get; set; } + /// + ///The shipping address to where the line items will be shipped. + ///Null if the user did not provide a shipping address. + /// + public MailingAddress? shippingAddress { get; set; } + /// + ///The sum of all items in the checkout, including discounts but excluding shipping, taxes and tips. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///Individual taxes charged on the checkout. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether taxes are included in line item and shipping line prices. + /// + public bool? taxesIncluded { get; set; } + /// + ///The total amount of discounts to be applied. + /// + public MoneyBag? totalDiscountSet { get; set; } + /// + ///The total duties applied to the checkout. + /// + public MoneyBag? totalDutiesSet { get; set; } + /// + ///The sum of the prices of all line items in the checkout. + /// + public MoneyBag? totalLineItemsPriceSet { get; set; } + /// + ///The sum of all items in the checkout, including discounts, shipping, taxes, and tips. + /// + public MoneyBag? totalPriceSet { get; set; } + /// + ///The total tax applied to the checkout. + /// + public MoneyBag? totalTaxSet { get; set; } + /// + ///The date and time when the checkout was most recently updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AbandonedCheckouts. + /// + public class AbandonedCheckoutConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AbandonedCheckoutEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one AbandonedCheckout and a cursor during pagination. + /// + public class AbandonedCheckoutEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AbandonedCheckoutEdge. + /// + public AbandonedCheckout? node { get; set; } + } + + /// + ///A single line item in an abandoned checkout. + /// + public class AbandonedCheckoutLineItem : GraphQLObject, INode + { + /// + ///A list of extra information that has been added to the line item. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///Discount allocations that have been applied on the line item. + /// + public DiscountAllocationConnection? discountAllocations { get; set; } + /// + ///Final total price for the entire quantity of this line item, including discounts. + /// + public MoneyBag? discountedTotalPriceSet { get; set; } + /// + ///The total price for the entire quantity of this line item, after all discounts are applied, at both the line item and code-based line item level. + /// + public MoneyBag? discountedTotalPriceWithCodeDiscount { get; set; } + /// + ///The price of a single variant unit after discounts are applied at the line item level, in shop and presentment currencies. + /// + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///The price of a single variant unit after all discounts are applied, at both the line item and code-based line item level. + /// + public MoneyBag? discountedUnitPriceWithCodeDiscount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated with the line item's variant or product. + ///NULL if the line item has no product, or if neither the variant nor the product have an image. + /// + public Image? image { get; set; } + /// + ///Original total price for the entire quantity of this line item, before discounts. + /// + public MoneyBag? originalTotalPriceSet { get; set; } + /// + ///Original price for a single unit of this line item, before discounts. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///Product for this line item. + ///NULL for custom line items and products that were deleted after checkout began. + /// + public Product? product { get; set; } + /// + ///The quantity of the line item. + /// + public int? quantity { get; set; } + /// + ///SKU for the inventory item associated with the variant, if any. + /// + public string? sku { get; set; } + /// + ///Title of the line item. Defaults to the product's title. + /// + public string? title { get; set; } + /// + ///Product variant for this line item. + ///NULL for custom line items and variants that were deleted after checkout began. + /// + public ProductVariant? variant { get; set; } + /// + ///Title of the variant for this line item. + ///NULL for custom line items and products that don't have distinct variants. + /// + public string? variantTitle { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AbandonedCheckoutLineItems. + /// + public class AbandonedCheckoutLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AbandonedCheckoutLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one AbandonedCheckoutLineItem and a cursor during pagination. + /// + public class AbandonedCheckoutLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AbandonedCheckoutLineItemEdge. + /// + public AbandonedCheckoutLineItem? node { get; set; } + } + + /// + ///The set of valid sort keys for the AbandonedCartGraphQL query. + /// + public enum AbandonedCheckoutSortKeys + { + /// + ///Sort by the `checkout_id` value. + /// + CHECKOUT_ID, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `customer_name` value. + /// + CUSTOMER_NAME, + /// + ///Sort by the `total_price` value. + /// + TOTAL_PRICE, + /// + ///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 browse, cart, or checkout that was abandoned by a customer. + /// + public class Abandonment : GraphQLObject, INode + { + /// + ///The abandonment payload for the abandoned checkout. + /// + public AbandonedCheckout? abandonedCheckoutPayload { get; set; } + /// + ///The abandonment type. + /// + public string? abandonmentType { get; set; } + /// + ///The app associated with an abandoned checkout. + /// + public App? app { get; set; } + /// + ///Permalink to the cart page. + /// + public string? cartUrl { get; set; } + /// + ///The date and time when the abandonment was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customer who abandoned this event. + /// + public Customer? customer { get; set; } + /// + ///Whether the customer has a draft order since this abandonment has been abandoned. + /// + public bool? customerHasNoDraftOrderSinceAbandonment { get; set; } + /// + ///Whether the customer has completed an order since this checkout has been abandoned. + /// + public bool? customerHasNoOrderSinceAbandonment { get; set; } + /// + ///The number of days since the last abandonment email was sent to the customer. + /// + public int? daysSinceLastAbandonmentEmail { get; set; } + /// + ///When the email was sent, if that's the case. + /// + public DateTime? emailSentAt { get; set; } + /// + ///The email state (e.g., sent or not sent). + /// + public string? emailState { get; set; } + /// + ///The number of hours since the customer has last abandoned a checkout. + /// + public decimal? hoursSinceLastAbandonedCheckout { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the products in abandonment are available. + /// + 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; } + /// + ///Whether the abandonment event comes from the Shop app sales channel. + /// + public bool? isFromShopApp { get; set; } + /// + ///Whether the abandonment event comes from Shop Pay. + /// + public bool? isFromShopPay { get; set; } + /// + ///Whether the customer didn't complete another most significant step since this abandonment. + /// + public bool? isMostSignificantAbandonment { get; set; } + /// + ///The date for the latest browse abandonment. + /// + public DateTime? lastBrowseAbandonmentDate { get; set; } + /// + ///The date for the latest cart abandonment. + /// + public DateTime? lastCartAbandonmentDate { get; set; } + /// + ///The date for the latest checkout abandonment. + /// + public DateTime? lastCheckoutAbandonmentDate { get; set; } + /// + ///The most recent step type. + /// + public string? mostRecentStep { get; set; } + /// + ///The products added to the cart during the customer abandoned visit. + /// + public CustomerVisitProductInfoConnection? productsAddedToCart { get; set; } + /// + ///The products viewed during the customer abandoned visit. + /// + public CustomerVisitProductInfoConnection? productsViewed { get; set; } + /// + ///The date and time when the visit started. + /// + public DateTime? visitStartedAt { get; set; } + } + + /// + ///Specifies the abandonment type. + /// + public enum AbandonmentAbandonmentType + { + /// + ///The abandonment event is an abandoned browse. + /// + BROWSE, + /// + ///The abandonment event is an abandoned cart. + /// + CART, + /// + ///The abandonment event is an abandoned checkout. + /// + CHECKOUT, + } + + /// + ///Specifies the delivery state of a marketing activity. + /// + public enum AbandonmentDeliveryState + { + /// + ///The marketing activity action has not yet been sent. + /// + NOT_SENT, + /// + ///The marketing activity action has been sent. + /// + SENT, + /// + ///The marketing activity action has been scheduled for later delivery. + /// + SCHEDULED, + } + + /// + ///Specifies the email state. + /// + public enum AbandonmentEmailState + { + /// + ///The email has not yet been sent. + /// + NOT_SENT, + /// + ///The email has been sent. + /// + SENT, + /// + ///The email has been scheduled for later delivery. + /// + SCHEDULED, + } + + /// + ///Return type for `abandonmentEmailStateUpdate` mutation. + /// + public class AbandonmentEmailStateUpdatePayload : GraphQLObject + { + /// + ///The updated abandonment. + /// + public Abandonment? abandonment { 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 `AbandonmentEmailStateUpdate`. + /// + public class AbandonmentEmailStateUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `AbandonmentEmailStateUpdateUserError`. + /// + public enum AbandonmentEmailStateUpdateUserErrorCode + { + /// + ///Unable to find an Abandonment for the provided ID. + /// + ABANDONMENT_NOT_FOUND, + } + + /// + ///Return type for `abandonmentUpdateActivitiesDeliveryStatuses` mutation. + /// + public class AbandonmentUpdateActivitiesDeliveryStatusesPayload : GraphQLObject + { + /// + ///The updated abandonment. + /// + public Abandonment? abandonment { 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 `AbandonmentUpdateActivitiesDeliveryStatuses`. + /// + public class AbandonmentUpdateActivitiesDeliveryStatusesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `AbandonmentUpdateActivitiesDeliveryStatusesUserError`. + /// + public enum AbandonmentUpdateActivitiesDeliveryStatusesUserErrorCode + { + /// + ///Unable to find an Abandonment for the provided ID. + /// + ABANDONMENT_NOT_FOUND, + /// + ///Unable to find a marketing activity for the provided ID. + /// + MARKETING_ACTIVITY_NOT_FOUND, + /// + ///Unable to find delivery status info for the provided ID. + /// + DELIVERY_STATUS_INFO_NOT_FOUND, + } + + /// + ///The permission required to access a Shopify Admin API or Storefront API resource for a shop. Merchants grant access scopes that are requested by applications. + /// + public class AccessScope : GraphQLObject + { + /// + ///A description of the actions that the access scope allows an app to perform. + /// + public string? description { get; set; } + /// + ///A readable string that represents the access scope. The string usually follows the format `{action}_{resource}`. `{action}` is `read` or `write`, and `{resource}` is the resource that the action can be performed on. `{action}` and `{resource}` are separated by an underscore. For example, `read_orders` or `write_products`. + /// + public string? handle { get; set; } + } + + /// + ///Possible account types that a staff member can have. + /// + public enum AccountType + { + /// + ///The account can access the Shopify admin. + /// + REGULAR, + /// + ///The account cannot access the Shopify admin. + /// + RESTRICTED, + /// + ///The user has not yet accepted the invitation to create an account. + /// + INVITED, + /// + ///The admin has not yet accepted the request to create a collaborator account. + /// + REQUESTED, + /// + ///The account of a partner who collaborates with the merchant. + /// + COLLABORATOR, + /// + ///The account of a partner collaborator team member. + /// + COLLABORATOR_TEAM_MEMBER, + /// + ///The account can be signed into via a SAML provider. + /// + SAML, + /// + ///The user has not yet accepted the invitation to become the store owner. + /// + INVITED_STORE_OWNER, + } + + /// + ///Represents an operation publishing all products to a publication. + /// + public class AddAllProductsOperation : GraphQLObject, INode, IResourceOperation, IPublicationOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The count of processed rows, summing imported, failed, and skipped rows. + /// + public int? processedRowCount { get; set; } + /// + ///Represents a rows objects within this background operation. + /// + public RowCount? rowCount { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + } + + /// + ///The additional fees that have been applied to the order. + /// + public class AdditionalFee : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the additional fee. + /// + public string? name { get; set; } + /// + ///The price of the additional fee. + /// + public MoneyBag? price { get; set; } + /// + ///A list of taxes charged on the additional fee. + /// + public IEnumerable? taxLines { get; set; } + } + + /// + ///A sale associated with an additional fee charge. + /// + public class AdditionalFeeSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The additional fees for the associated sale. + /// + public SaleAdditionalFee? additionalFee { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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 sale associated with an order price adjustment. + /// + public class AdjustmentSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///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. + /// + public class AllDiscountItems : GraphQLObject, IDiscountItems + { + /// + ///Whether all items are eligible for the discount. This value always returns `true`. + /// + public bool? allItems { get; set; } + } + + /// + ///The Android mobile platform application. + /// + public class AndroidApplication : GraphQLObject, IMobilePlatformApplication + { + /// + ///Whether Android App Links are supported by this app. + /// + public bool? appLinksEnabled { get; set; } + /// + ///The Android application ID. + /// + public string? applicationId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The SHA256 fingerprints of the app's signing certificate. + /// + public IEnumerable? sha256CertFingerprints { get; set; } + } + + /// + ///A version of the API, as defined by [Shopify API versioning](https://shopify.dev/api/usage/versioning). + ///Versions are commonly referred to by their handle (for example, `2021-10`). + /// + public class ApiVersion : GraphQLObject + { + /// + ///The human-readable name of the version. + /// + public string? displayName { get; set; } + /// + ///The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle. + /// + public string? handle { get; set; } + /// + ///Whether the version is actively supported by Shopify. Supported API versions are guaranteed to be stable. Unsupported API versions include unstable, release candidate, and end-of-life versions that are marked as unsupported. For more information, refer to [Versioning](https://shopify.dev/api/usage/versioning). + /// + public bool? supported { get; set; } + } + + /// + ///A Shopify application. + /// + public class App : GraphQLObject, INode + { + /// + ///A unique application API identifier. + /// + public string? apiKey { get; set; } + /// + ///App store page URL of the app. + /// + public string? appStoreAppUrl { get; set; } + /// + ///App store page URL of the developer who created the app. + /// + public string? appStoreDeveloperUrl { get; set; } + /// + ///All requestable access scopes available to the app. + /// + public IEnumerable? availableAccessScopes { get; set; } + /// + ///Banner image for the app. + /// + public Image? banner { get; set; } + /// + ///Description of the app. + /// + public string? description { get; set; } + /// + ///The name of the app developer. + /// + public string? developerName { get; set; } + /// + ///The type of app developer. + /// + public string? developerType { get; set; } + + /// + ///Website of the developer who created the app. + /// + [Obsolete("Use `appStoreDeveloperUrl` instead.")] + public string? developerUrl { get; set; } + /// + ///Whether the app uses the Embedded App SDK. + /// + public bool? embedded { get; set; } + /// + ///Requirements that must be met before the app can be installed. + /// + public IEnumerable? failedRequirements { get; set; } + /// + ///A list of app features that are shown in the Shopify App Store listing. + /// + public IEnumerable? features { get; set; } + /// + ///Feedback from this app about the store. + /// + public AppFeedback? feedback { get; set; } + /// + ///Handle of the app. + /// + public string? handle { get; set; } + /// + ///Icon that represents the app. + /// + public Image? icon { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Webpage where you can install the app. + /// + public string? installUrl { get; set; } + /// + ///Corresponding AppInstallation for this shop and App. + ///Returns null if the App is not installed. + /// + public AppInstallation? installation { get; set; } + /// + ///Whether the app is the [post purchase](https://shopify.dev/apps/checkout/post-purchase) app in use. + /// + public bool? isPostPurchaseAppInUse { get; set; } + + /// + ///Webpage that the app starts in. + /// + [Obsolete("Use AppInstallation.launchUrl instead")] + public string? launchUrl { get; set; } + + /// + ///Menu items for the app, which also appear as submenu items in left navigation sidebar in the Shopify admin. + /// + [Obsolete("Use AppInstallation.navigationItems instead")] + public IEnumerable? navigationItems { get; set; } + /// + ///The optional scopes requested by the app. Lists the optional access scopes the app has declared in its configuration. These scopes are optionally requested by the app after installation. + /// + public IEnumerable? optionalAccessScopes { get; set; } + /// + ///Whether the app was previously installed on the current shop. + /// + public bool? previouslyInstalled { get; set; } + /// + ///Detailed information about the app pricing. + /// + public string? pricingDetails { get; set; } + /// + ///Summary of the app pricing details. + /// + public string? pricingDetailsSummary { get; set; } + /// + ///Link to app privacy policy. + /// + public string? privacyPolicyUrl { get; set; } + /// + ///The public category for the app. + /// + public string? publicCategory { get; set; } + /// + ///Whether the app is published to the Shopify App Store. + /// + public bool? published { get; set; } + /// + ///The access scopes requested by the app. Lists the access scopes the app has declared in its configuration. Merchant must grant approval to these scopes for the app to be installed. + /// + public IEnumerable? requestedAccessScopes { get; set; } + /// + ///Screenshots of the app. + /// + public IEnumerable? screenshots { get; set; } + /// + ///Whether the app was developed by Shopify. + /// + public bool? shopifyDeveloped { get; set; } + /// + ///Name of the app. + /// + public string? title { get; set; } + /// + ///Message that appears when the app is uninstalled. For example: + ///By removing this app, you will no longer be able to publish products to MySocialSite or view this app in your Shopify admin. You can re-enable this channel at any time. + /// + public string? uninstallMessage { get; set; } + + /// + ///Webpage where you can uninstall the app. + /// + [Obsolete("Use AppInstallation.uninstallUrl instead")] + public string? uninstallUrl { get; set; } + /// + ///The webhook API version for the app. + /// + public string? webhookApiVersion { get; set; } + } + + /// + ///A catalog that defines the publication associated with an app. + /// + public class AppCatalog : GraphQLObject, ICatalog, INode + { + /// + ///The apps associated with the catalog. + /// + public AppConnection? apps { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Most recent catalog operations. + /// + public IEnumerable? operations { get; set; } + /// + ///The price list associated with the catalog. + /// + public PriceList? priceList { get; set; } + /// + ///A group of products and collections that's published to a catalog. + /// + public Publication? publication { get; set; } + /// + ///The status of the catalog. + /// + public string? status { get; set; } + /// + ///The name of the catalog. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Apps. + /// + public class AppConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///App credits can be applied by the merchant towards future app purchases, subscriptions, or usage records in Shopify. + /// + public class AppCredit : GraphQLObject, INode + { + /// + ///The amount that can be used towards future app purchases in Shopify. + /// + public MoneyV2? amount { get; set; } + /// + ///The date and time when the app credit was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The description of the app credit. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the app credit is a test transaction. + /// + public bool? test { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AppCredits. + /// + public class AppCreditConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppCreditEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one AppCredit and a cursor during pagination. + /// + public class AppCreditEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppCreditEdge. + /// + public AppCredit? node { get; set; } + } + + /// + ///Possible types of app developer. + /// + public enum AppDeveloperType + { + /// + ///Indicates the app developer is Shopify. + /// + SHOPIFY, + /// + ///Indicates the app developer is a Partner. + /// + PARTNER, + /// + ///Indicates the app developer works directly for a Merchant. + /// + MERCHANT, + /// + ///Indicates the app developer is unknown. It is not categorized as any of the other developer types. + /// + UNKNOWN, + } + + /// + ///A script that defines a discount type. + /// + public class AppDiscountType : GraphQLObject + { + /// + ///The app providing the app discount type. + /// + public App? app { get; set; } + /// + ///The App Bridge details for discount type configuration. + /// + public FunctionsAppBridge? appBridge { get; set; } + /// + ///The client ID of the app providing the app discount type. + /// + public string? appKey { get; set; } + /// + ///A description of the app discount type. + /// + public string? description { get; set; } + /// + ///The class of the app discount type. + /// + public string? discountClass { get; set; } + /// + ///The ID of the function providing the app discount type. + /// + public string? functionId { get; set; } + /// + ///The target type of the app discount type. Possible values: `SHIPPING_LINE` and `LINE_ITEM`. + /// + public string? targetType { get; set; } + /// + ///The title of the app discount type. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type which holds one App and a cursor during pagination. + /// + public class AppEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppEdge. + /// + public App? node { get; set; } + } + + /// + ///Reports the status of shops and their resources and displays this information + ///within Shopify admin. AppFeedback is used to notify merchants about steps they need to take + ///to set up an app on their store. + /// + public class AppFeedback : GraphQLObject + { + /// + ///The application associated to the feedback. + /// + public App? app { get; set; } + /// + ///The date and time when the app feedback was generated. + /// + public DateTime? feedbackGeneratedAt { get; set; } + /// + ///A link to where merchants can resolve errors. + /// + public Link? link { get; set; } + /// + ///The feedback message presented to the merchant. + /// + public IEnumerable? messages { get; set; } + /// + ///Conveys the state of the feedback and whether it requires merchant action or not. + /// + public string? state { get; set; } + } + + /// + ///Represents an installed application on a shop. + /// + public class AppInstallation : GraphQLObject, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The access scopes granted to the application by a merchant during installation. + /// + public IEnumerable? accessScopes { get; set; } + /// + ///The active application subscriptions billed to the shop on a recurring basis. + /// + public IEnumerable? activeSubscriptions { get; set; } + /// + ///All subscriptions created for a shop. + /// + public AppSubscriptionConnection? allSubscriptions { get; set; } + /// + ///Application which is installed. + /// + public App? app { get; set; } + + /// + ///Channel associated with the installed application. + /// + [Obsolete("Use `publication` instead.")] + public Channel? channel { get; set; } + /// + ///Credits that can be used towards future app purchases. + /// + public AppCreditConnection? credits { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The URL to launch the application. + /// + public string? launchUrl { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///One-time purchases to a shop. + /// + public AppPurchaseOneTimeConnection? oneTimePurchases { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 publication associated with the installed application. + /// + public Publication? publication { get; set; } + /// + ///The records that track the externally-captured revenue for the app. The records are used for revenue attribution purposes. + /// + public AppRevenueAttributionRecordConnection? revenueAttributionRecords { get; set; } + + /// + ///Subscriptions charge to a shop on a recurring basis. + /// + [Obsolete("Use `activeSubscriptions` instead.")] + public IEnumerable? subscriptions { get; set; } + /// + ///The URL to uninstall the application. + /// + public string? uninstallUrl { get; set; } + } + + /// + ///The possible categories of an app installation, based on their purpose + ///or the environment they can run in. + /// + public enum AppInstallationCategory + { + /// + ///Apps that serve as channels through which sales are made, such as the online store. + /// + CHANNEL, + /// + ///Apps that can be used in the POS mobile client. + /// + POS_EMBEDDED, + } + + /// + ///An auto-generated type for paginating through multiple AppInstallations. + /// + public class AppInstallationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppInstallationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one AppInstallation and a cursor during pagination. + /// + public class AppInstallationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppInstallationEdge. + /// + public AppInstallation? node { get; set; } + } + + /// + ///The levels of privacy of an app installation. + /// + public enum AppInstallationPrivacy + { + PUBLIC, + PRIVATE, + } + + /// + ///The set of valid sort keys for the AppInstallation query. + /// + public enum AppInstallationSortKeys + { + /// + ///Sort by the `installed_at` value. + /// + INSTALLED_AT, + /// + ///Sort by the `app_title` value. + /// + APP_TITLE, + /// + ///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, + } + + /// + ///The app plan that the merchant is subscribed to. + /// + public class AppPlanV2 : GraphQLObject + { + /// + ///The plan billed to a shop on a recurring basis. + /// + public IAppPricingDetails? pricingDetails { get; set; } + } + + /// + ///The information about the price that's charged to a shop every plan period. + ///The concrete type can be `AppRecurringPricing` for recurring billing or `AppUsagePricing` for usage-based billing. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppRecurringPricing), typeDiscriminator: "AppRecurringPricing")] + [JsonDerivedType(typeof(AppUsagePricing), typeDiscriminator: "AppUsagePricing")] + public interface IAppPricingDetails : IGraphQLObject + { + public AppRecurringPricing? AsAppRecurringPricing() => this as AppRecurringPricing; + public AppUsagePricing? AsAppUsagePricing() => this as AppUsagePricing; + /// + ///The frequency at which the subscribing shop is billed for an app subscription. + /// + public string? interval { get; set; } + } + + /// + ///The frequency at which the shop is billed for an app subscription. + /// + public enum AppPricingInterval + { + /// + ///The app subscription bills the shop annually. + /// + ANNUAL, + /// + ///The app subscription bills the shop every 30 days. + /// + EVERY_30_DAYS, + } + + /// + ///The public-facing category for an app. + /// + public enum AppPublicCategory + { + /// + ///The app's public category is [private](https://shopify.dev/apps/distribution#deprecated-app-types). + /// + PRIVATE, + /// + ///The app's public category is [public](https://shopify.dev/apps/distribution#capabilities-and-requirements). + /// + PUBLIC, + /// + ///The app's public category is [custom](https://shopify.dev/apps/distribution#capabilities-and-requirements). + /// + CUSTOM, + /// + ///The app's public category is other. An app is in this category if it's not classified under any of the other app types (private, public, or custom). + /// + OTHER, + } + + /// + ///Services and features purchased once by the store. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppPurchaseOneTime), typeDiscriminator: "AppPurchaseOneTime")] + public interface IAppPurchase : IGraphQLObject + { + public AppPurchaseOneTime? AsAppPurchaseOneTime() => this as AppPurchaseOneTime; + /// + ///The date and time when the app purchase occurred. + /// + public DateTime? createdAt { get; } + /// + ///The name of the app purchase. + /// + public string? name { get; } + /// + ///The amount to be charged to the store for the app purchase. + /// + public MoneyV2? price { get; } + /// + ///The status of the app purchase. + /// + public string? status { get; } + /// + ///Whether the app purchase is a test transaction. + /// + public bool? test { get; } + } + + /// + ///Services and features purchased once by a store. + /// + public class AppPurchaseOneTime : GraphQLObject, IAppPurchase, INode + { + /// + ///The date and time when the app purchase occurred. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the app purchase. + /// + public string? name { get; set; } + /// + ///The amount to be charged to the store for the app purchase. + /// + public MoneyV2? price { get; set; } + /// + ///The status of the app purchase. + /// + public string? status { get; set; } + /// + ///Whether the app purchase is a test transaction. + /// + public bool? test { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AppPurchaseOneTimes. + /// + public class AppPurchaseOneTimeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppPurchaseOneTimeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `appPurchaseOneTimeCreate` mutation. + /// + public class AppPurchaseOneTimeCreatePayload : GraphQLObject + { + /// + ///The newly created app one-time purchase. + /// + public AppPurchaseOneTime? appPurchaseOneTime { get; set; } + /// + ///The URL that the merchant can access to approve or decline the newly created app one-time purchase. + /// + ///If the merchant declines, then the merchant is redirected to the app and receives a notification message stating that the charge was declined. + ///If the merchant approves and they're successfully invoiced, then the state of the charge changes from `pending` to `active`. + /// + ///You get paid after the charge is activated. + /// + public string? confirmationUrl { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one AppPurchaseOneTime and a cursor during pagination. + /// + public class AppPurchaseOneTimeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppPurchaseOneTimeEdge. + /// + public AppPurchaseOneTime? node { get; set; } + } + + /// + ///The approval status of the app purchase. + /// + ///The merchant is charged for the purchase immediately after approval, and the status changes to `active`. + ///If the payment fails, then the app purchase remains `pending`. + /// + ///Purchases start as `pending` and can change to: `active`, `declined`, `expired`. After a purchase changes, it + ///remains in that final state. + /// + public enum AppPurchaseStatus + { + /// + ///The app purchase has been approved by the merchant and is ready to be activated by the app. App purchases created through the GraphQL Admin API are activated upon approval. + /// + [Obsolete("As of API version 2021-01, when a merchant accepts an app purchase, the status immediately changes from `pending` to `active`.")] + ACCEPTED, + /// + ///The app purchase was approved by the merchant and has been activated by the app. Active app purchases are charged to the merchant and are paid out to the partner. + /// + ACTIVE, + /// + ///The app purchase was declined by the merchant. + /// + DECLINED, + /// + ///The app purchase was not accepted within two days of being created. + /// + EXPIRED, + /// + ///The app purchase is pending approval by the merchant. + /// + PENDING, + } + + /// + ///The pricing information about a subscription app. + ///The object contains an interval (the frequency at which the shop is billed for an app subscription) and + ///a price (the amount to be charged to the subscribing shop at each interval). + /// + public class AppRecurringPricing : GraphQLObject, IAppPricingDetails + { + /// + ///The discount applied to the subscription for a given number of billing intervals. + /// + public AppSubscriptionDiscount? discount { get; set; } + /// + ///The frequency at which the subscribing shop is billed for an app subscription. + /// + public string? interval { get; set; } + /// + ///The amount and currency to be charged to the subscribing shop every billing interval. + /// + public MoneyV2? price { get; set; } + } + + /// + ///Represents app revenue that was captured externally by the partner. + /// + public class AppRevenueAttributionRecord : GraphQLObject, INode + { + /// + ///The financial amount captured in this attribution. + /// + public MoneyV2? amount { get; set; } + /// + ///The timestamp when the financial amount was captured. + /// + public DateTime? capturedAt { get; set; } + /// + ///The timestamp at which this revenue attribution was issued. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The unique value submitted during the creation of the app revenue attribution record. + ///For more information, refer to + ///[Idempotent requests](https://shopify.dev/api/usage/idempotent-requests). + /// + public string? idempotencyKey { get; set; } + /// + ///Indicates whether this is a test submission. + /// + public bool? test { get; set; } + /// + ///The type of revenue attribution. + /// + public string? type { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AppRevenueAttributionRecords. + /// + public class AppRevenueAttributionRecordConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppRevenueAttributionRecordEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one AppRevenueAttributionRecord and a cursor during pagination. + /// + public class AppRevenueAttributionRecordEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppRevenueAttributionRecordEdge. + /// + public AppRevenueAttributionRecord? node { get; set; } + } + + /// + ///The set of valid sort keys for the AppRevenueAttributionRecord query. + /// + public enum AppRevenueAttributionRecordSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Represents the billing types of revenue attribution. + /// + public enum AppRevenueAttributionType + { + /// + ///App purchase related revenue collection. + /// + APPLICATION_PURCHASE, + /// + ///App subscription revenue collection. + /// + APPLICATION_SUBSCRIPTION, + /// + ///App usage-based revenue collection. + /// + APPLICATION_USAGE, + /// + ///Other app revenue collection type. + /// + OTHER, + } + + /// + ///Represents an error that happens while revoking a granted scope. + /// + public class AppRevokeAccessScopesAppRevokeScopeError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `AppRevokeAccessScopesAppRevokeScopeError`. + /// + public enum AppRevokeAccessScopesAppRevokeScopeErrorCode + { + /// + ///No app found on the access token. + /// + MISSING_SOURCE_APP, + /// + ///The application cannot be found. + /// + APPLICATION_CANNOT_BE_FOUND, + /// + ///The requested list of scopes to revoke includes invalid handles. + /// + UNKNOWN_SCOPES, + /// + ///Required scopes cannot be revoked. + /// + CANNOT_REVOKE_REQUIRED_SCOPES, + /// + ///Already granted implied scopes cannot be revoked. + /// + CANNOT_REVOKE_IMPLIED_SCOPES, + /// + ///Cannot revoke optional scopes that haven't been declared. + /// + CANNOT_REVOKE_UNDECLARED_SCOPES, + /// + ///App is not installed on shop. + /// + APP_NOT_INSTALLED, + } + + /// + ///Return type for `appRevokeAccessScopes` mutation. + /// + public class AppRevokeAccessScopesPayload : GraphQLObject + { + /// + ///The list of scope handles that have been revoked. + /// + public IEnumerable? revoked { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Provides users access to services and/or features for a duration of time. + /// + public class AppSubscription : GraphQLObject, INode + { + /// + ///The date and time when the app subscription was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The date and time when the current app subscription period ends. Returns `null` if the subscription isn't active. + /// + public DateTime? currentPeriodEnd { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The plans attached to the app subscription. + /// + public IEnumerable? lineItems { get; set; } + /// + ///The name of the app subscription. + /// + public string? name { get; set; } + /// + ///The URL that the merchant is redirected to after approving the app subscription. + /// + public string? returnUrl { get; set; } + /// + ///The status of the app subscription. + /// + public string? status { get; set; } + /// + ///Specifies whether the app subscription is a test transaction. + /// + public bool? test { get; set; } + /// + ///The number of free trial days, starting at the subscription's creation date, by which billing is delayed. + /// + public int? trialDays { get; set; } + } + + /// + ///Return type for `appSubscriptionCancel` mutation. + /// + public class AppSubscriptionCancelPayload : GraphQLObject + { + /// + ///The cancelled app subscription. + /// + public AppSubscription? appSubscription { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AppSubscriptions. + /// + public class AppSubscriptionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppSubscriptionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `appSubscriptionCreate` mutation. + /// + public class AppSubscriptionCreatePayload : GraphQLObject + { + /// + ///The newly-created app subscription. + /// + public AppSubscription? appSubscription { get; set; } + /// + ///The URL pointing to the page where the merchant approves or declines the charges for an app subscription. + /// + public string? confirmationUrl { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Discount applied to the recurring pricing portion of a subscription. + /// + public class AppSubscriptionDiscount : GraphQLObject + { + /// + ///The total number of billing intervals to which the discount will be applied. + ///The discount will be applied to an indefinite number of billing intervals if this value is blank. + /// + public int? durationLimitInIntervals { get; set; } + /// + ///The price of the subscription after the discount is applied. + /// + public MoneyV2? priceAfterDiscount { get; set; } + /// + ///The remaining number of billing intervals to which the discount will be applied. + /// + public int? remainingDurationInIntervals { get; set; } + /// + ///The value of the discount applied every billing interval. + /// + public IAppSubscriptionDiscountValue? value { get; set; } + } + + /// + ///The fixed amount value of a discount. + /// + public class AppSubscriptionDiscountAmount : GraphQLObject, IAppSubscriptionDiscountValue + { + /// + ///The fixed amount value of a discount. + /// + public MoneyV2? amount { get; set; } + } + + /// + ///The percentage value of a discount. + /// + public class AppSubscriptionDiscountPercentage : GraphQLObject, IAppSubscriptionDiscountValue + { + /// + ///The percentage value of a discount. + /// + public decimal? percentage { get; set; } + } + + /// + ///The value of the discount. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppSubscriptionDiscountAmount), typeDiscriminator: "AppSubscriptionDiscountAmount")] + [JsonDerivedType(typeof(AppSubscriptionDiscountPercentage), typeDiscriminator: "AppSubscriptionDiscountPercentage")] + public interface IAppSubscriptionDiscountValue : IGraphQLObject + { + public AppSubscriptionDiscountAmount? AsAppSubscriptionDiscountAmount() => this as AppSubscriptionDiscountAmount; + public AppSubscriptionDiscountPercentage? AsAppSubscriptionDiscountPercentage() => this as AppSubscriptionDiscountPercentage; + } + + /// + ///An auto-generated type which holds one AppSubscription and a cursor during pagination. + /// + public class AppSubscriptionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppSubscriptionEdge. + /// + public AppSubscription? node { get; set; } + } + + /// + ///The plan attached to an app subscription. + /// + public class AppSubscriptionLineItem : GraphQLObject + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The pricing model for the app subscription. + /// + public AppPlanV2? plan { get; set; } + /// + ///A list of the store's usage records for a usage pricing plan. + /// + public AppUsageRecordConnection? usageRecords { get; set; } + } + + /// + ///Return type for `appSubscriptionLineItemUpdate` mutation. + /// + public class AppSubscriptionLineItemUpdatePayload : GraphQLObject + { + /// + ///The updated app subscription. + /// + public AppSubscription? appSubscription { get; set; } + /// + ///The URL where the merchant approves or declines the updated app subscription line item. + /// + public string? confirmationUrl { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The replacement behavior when creating an app subscription for a merchant with an already existing app subscription. + /// + public enum AppSubscriptionReplacementBehavior + { + /// + ///Cancels the merchant's current app subscription immediately and replaces it with the newly created app subscription. + /// + APPLY_IMMEDIATELY, + /// + ///Defers canceling the merchant's current app subscription and applying the newly created app subscription until the start of the next billing cycle. This value is ignored if the new app subscription is using a different currency than the current app subscription, in which case the new app subscription is applied immediately. + /// + APPLY_ON_NEXT_BILLING_CYCLE, + /// + ///Cancels the merchant's current app subscription immediately and replaces it with the newly created app subscription, with the exception of + ///the following scenarios where replacing the current app subscription will be deferred until the start of the next billing cycle. + ///1) The current app subscription is annual and the newly created app subscription is annual, using the same currency, but is of a lesser value. + ///2) The current app subscription is annual and the newly created app subscription is monthly and using the same currency. + ///3) The current app subscription and the newly created app subscription are identical except for the `discount` value. + /// + STANDARD, + } + + /// + ///The set of valid sort keys for the AppSubscription query. + /// + public enum AppSubscriptionSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///The status of the app subscription. + /// + public enum AppSubscriptionStatus + { + /// + ///The app subscription is pending approval by the merchant. + /// + PENDING, + /// + ///The app subscription has been approved by the merchant and is ready to be activated by the app. + /// + [Obsolete("As of API version 2021-01, when a merchant approves an app subscription, the status immediately transitions from `pending` to `active`.")] + ACCEPTED, + /// + ///The app subscription has been approved by the merchant. Active app subscriptions are billed to the shop. After payment, partners receive payouts. + /// + ACTIVE, + /// + ///The app subscription was declined by the merchant. This is a terminal state. + /// + DECLINED, + /// + ///The app subscription wasn't approved by the merchant within two days of being created. This is a terminal state. + /// + EXPIRED, + /// + ///The app subscription is on hold due to non-payment. The subscription re-activates after payments resume. + /// + FROZEN, + /// + ///The app subscription was cancelled by the app. This could be caused by the app being uninstalled, a new app subscription being activated, or a direct cancellation by the app. This is a terminal state. + /// + CANCELLED, + } + + /// + ///Return type for `appSubscriptionTrialExtend` mutation. + /// + public class AppSubscriptionTrialExtendPayload : GraphQLObject + { + /// + ///The app subscription that had its trial extended. + /// + public AppSubscription? appSubscription { 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 `AppSubscriptionTrialExtend`. + /// + public class AppSubscriptionTrialExtendUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `AppSubscriptionTrialExtendUserError`. + /// + public enum AppSubscriptionTrialExtendUserErrorCode + { + /// + ///The app subscription wasn't found. + /// + SUBSCRIPTION_NOT_FOUND, + /// + ///The trial isn't active. + /// + TRIAL_NOT_ACTIVE, + /// + ///The app subscription isn't active. + /// + SUBSCRIPTION_NOT_ACTIVE, + } + + /// + ///The set of valid sort keys for the AppTransaction query. + /// + public enum AppTransactionSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Defines a usage pricing model for the app subscription. + ///These charges are variable based on how much the merchant uses the app. + /// + public class AppUsagePricing : GraphQLObject, IAppPricingDetails + { + /// + ///The total usage records for interval. + /// + public MoneyV2? balanceUsed { get; set; } + /// + ///The capped amount prevents the merchant from being charged for any usage over that amount during a billing period. + ///This prevents billing from exceeding a maximum threshold over the duration of the billing period. + ///For the merchant to continue using the app after exceeding a capped amount, they would need to agree to a new usage charge. + /// + public MoneyV2? cappedAmount { get; set; } + /// + ///The frequency with which the app usage records are billed. + /// + public string? interval { get; set; } + /// + ///The terms and conditions for app usage pricing. + ///Must be present in order to create usage charges. + ///The terms are presented to the merchant when they approve an app's usage charges. + /// + public string? terms { get; set; } + } + + /// + ///Store usage for app subscriptions with usage pricing. + /// + public class AppUsageRecord : GraphQLObject, INode + { + /// + ///The date and time when the usage record was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The description of the app usage record. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A unique key generated by the client to avoid duplicate charges. + /// + public string? idempotencyKey { get; set; } + /// + ///The price of the usage record. + /// + public MoneyV2? price { get; set; } + /// + ///Defines the usage pricing plan the merchant is subscribed to. + /// + public AppSubscriptionLineItem? subscriptionLineItem { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple AppUsageRecords. + /// + public class AppUsageRecordConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in AppUsageRecordEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `appUsageRecordCreate` mutation. + /// + public class AppUsageRecordCreatePayload : GraphQLObject + { + /// + ///The newly created app usage record. + /// + public AppUsageRecord? appUsageRecord { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one AppUsageRecord and a cursor during pagination. + /// + public class AppUsageRecordEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of AppUsageRecordEdge. + /// + public AppUsageRecord? node { get; set; } + } + + /// + ///The set of valid sort keys for the AppUsageRecord query. + /// + public enum AppUsageRecordSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///The Apple mobile platform application. + /// + public class AppleApplication : GraphQLObject, IMobilePlatformApplication + { + /// + ///The iOS App Clip application ID. + /// + public string? appClipApplicationId { get; set; } + /// + ///Whether iOS App Clips are enabled for this app. + /// + public bool? appClipsEnabled { get; set; } + /// + ///The iOS App ID. + /// + public string? appId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether iOS shared web credentials are enabled for this app. + /// + public bool? sharedWebCredentialsEnabled { get; set; } + /// + ///Whether iOS Universal Links are supported by this app. + /// + public bool? universalLinksEnabled { get; set; } + } + + /// + ///An article in the blogging system. + /// + public class Article : GraphQLObject
, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, INavigable, INode, IMetafieldReferencer + { + /// + ///The name of the author of the article. + /// + public ArticleAuthor? author { get; set; } + /// + ///The blog containing the article. + /// + public Blog? blog { get; set; } + /// + ///The text of the article's body, complete with HTML markup. + /// + public string? body { get; set; } + /// + ///List of the article's comments. + /// + public CommentConnection? comments { get; set; } + /// + ///Count of comments. + /// + public Count? commentsCount { get; set; } + /// + ///The date and time (ISO 8601 format) when the article was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A unique, human-friendly string for the article that's automatically generated from the article's title. + ///The handle is used in the article's URL. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated with the article. + /// + public Image? image { get; set; } + /// + ///Whether or not the article is visible. + /// + public bool? isPublished { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time (ISO 8601 format) when the article became or will become visible. + ///Returns null when the article isn't visible. + /// + public DateTime? publishedAt { get; set; } + /// + ///A summary of the article, which can include HTML markup. + ///The summary is used by the online store theme to display the article on other pages, such as the home page or the main blog page. + /// + public string? summary { get; set; } + /// + ///A comma-separated list of tags. + ///Tags are additional short descriptors formatted as a string of comma-separated values. + /// + public IEnumerable? tags { get; set; } + /// + ///The name of the template an article is using if it's using an alternate template. + ///If an article is using the default `article.liquid` template, then the value returned is `null`. + /// + public string? templateSuffix { get; set; } + /// + ///The title of the article. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The date and time (ISO 8601 format) when the article was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Represents an article author in an Article. + /// + public class ArticleAuthor : GraphQLObject + { + /// + ///The author's full name. + /// + public string? name { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Articles. + /// + public class ArticleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ArticleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable
? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `articleCreate` mutation. + /// + public class ArticleCreatePayload : GraphQLObject + { + /// + ///The article that was created. + /// + public Article? article { 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 `ArticleCreate`. + /// + public class ArticleCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ArticleCreateUserError`. + /// + public enum ArticleCreateUserErrorCode + { + /// + ///Can't create an article author if both author name and user ID are supplied. + /// + AMBIGUOUS_AUTHOR, + /// + ///Can't create a blog from input if a blog ID is supplied. + /// + AMBIGUOUS_BLOG, + /// + ///Can't create an article if both author name and user ID are blank. + /// + AUTHOR_FIELD_REQUIRED, + /// + ///User must exist if a user ID is supplied. + /// + AUTHOR_MUST_EXIST, + /// + ///Can’t set isPublished to true and also set a future publish date. + /// + INVALID_PUBLISH_DATE, + /// + ///Must reference or create a blog when creating an article. + /// + BLOG_REFERENCE_REQUIRED, + /// + ///Image upload failed. + /// + UPLOAD_FAILED, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///The metafield type is invalid. + /// + INVALID_TYPE, + } + + /// + ///Return type for `articleDelete` mutation. + /// + public class ArticleDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted article. + /// + public string? deletedArticleId { 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 `ArticleDelete`. + /// + public class ArticleDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ArticleDeleteUserError`. + /// + public enum ArticleDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///An auto-generated type which holds one Article and a cursor during pagination. + /// + public class ArticleEdge : GraphQLObject, IEdge
+ { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ArticleEdge. + /// + public Article? node { get; set; } + } + + /// + ///The set of valid sort keys for the Article query. + /// + public enum ArticleSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `blog_title` value. + /// + BLOG_TITLE, + /// + ///Sort by the `author` value. + /// + AUTHOR, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `published_at` value. + /// + PUBLISHED_AT, + /// + ///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, + } + + /// + ///Possible sort of tags. + /// + public enum ArticleTagSort + { + /// + ///Sort alphabetically.. + /// + ALPHABETICAL, + /// + ///Sort by popularity, starting with the most popular tag. + /// + POPULAR, + } + + /// + ///Return type for `articleUpdate` mutation. + /// + public class ArticleUpdatePayload : GraphQLObject + { + /// + ///The article that was updated. + /// + public Article? article { 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 `ArticleUpdate`. + /// + public class ArticleUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ArticleUpdateUserError`. + /// + public enum ArticleUpdateUserErrorCode + { + /// + ///Can't update an article author if both author name and user ID are supplied. + /// + AMBIGUOUS_AUTHOR, + /// + ///Can't create a blog from input if a blog ID is supplied. + /// + AMBIGUOUS_BLOG, + /// + ///User must exist if a user ID is supplied. + /// + AUTHOR_MUST_EXIST, + /// + ///Can’t set isPublished to true and also set a future publish date. + /// + INVALID_PUBLISH_DATE, + /// + ///Image upload failed. + /// + UPLOAD_FAILED, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is already taken. + /// + TAKEN, + } + + /// + ///Represents a generic custom attribute, such as whether an order is a customer's first. + /// + public class Attribute : GraphQLObject + { + /// + ///The key or name of the attribute. For example, `"customersFirstOrder"`. + /// + public string? key { get; set; } + /// + ///The value of the attribute. For example, `"true"`. + /// + public string? value { get; set; } + } + + /// + ///Automatic discount applications capture the intentions of a discount that was automatically applied. + /// + public class AutomaticDiscountApplication : GraphQLObject, IDiscountApplication + { + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///An ordered index that can be used to identify the discount application and indicate the precedence + ///of the discount application for calculations. + /// + public int? index { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The title of the discount application. + /// + public string? title { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///The set of valid sort keys for the AutomaticDiscount query. + /// + public enum AutomaticDiscountSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Represents an object containing all information for channels available to a shop. + /// + public class AvailableChannelDefinitionsByChannel : GraphQLObject + { + /// + ///The channel definitions for channels installed on a shop. + /// + public IEnumerable? channelDefinitions { get; set; } + /// + ///The name of the channel. + /// + public string? channelName { get; set; } + } + + /// + ///The possible types for a badge. + /// + public enum BadgeType + { + /// + ///This badge has type `default`. + /// + DEFAULT, + /// + ///This badge has type `success`. + /// + SUCCESS, + /// + ///This badge has type `attention`. + /// + ATTENTION, + /// + ///This badge has type `warning`. + /// + WARNING, + /// + ///This badge has type `info`. + /// + INFO, + } + + /// + ///The set of valid sort keys for the BalanceTransaction query. + /// + public enum BalanceTransactionSortKeys + { + /// + ///Sort by the `payout_date` value. + /// + PAYOUT_DATE, + /// + ///Sort by the `payout_status` value. + /// + PAYOUT_STATUS, + /// + ///Sort by the `processed_at` value. + /// + PROCESSED_AT, + /// + ///Sort by the `amount` value. + /// + AMOUNT, + /// + ///Sort by the `fee` value. + /// + FEE, + /// + ///Sort by the `net` value. + /// + NET, + /// + ///Sort by the `transaction_type` value. + /// + TRANSACTION_TYPE, + /// + ///Sort by the `order_name` value. + /// + ORDER_NAME, + /// + ///Sort by the `payment_method_name` value. + /// + PAYMENT_METHOD_NAME, + /// + ///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, + } + + /// + ///Generic payment details that are related to a transaction. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CardPaymentDetails), typeDiscriminator: "CardPaymentDetails")] + [JsonDerivedType(typeof(LocalPaymentMethodsPaymentDetails), typeDiscriminator: "LocalPaymentMethodsPaymentDetails")] + [JsonDerivedType(typeof(ShopPayInstallmentsPaymentDetails), typeDiscriminator: "ShopPayInstallmentsPaymentDetails")] + public interface IBasePaymentDetails : IGraphQLObject + { + public CardPaymentDetails? AsCardPaymentDetails() => this as CardPaymentDetails; + public LocalPaymentMethodsPaymentDetails? AsLocalPaymentMethodsPaymentDetails() => this as LocalPaymentMethodsPaymentDetails; + public ShopPayInstallmentsPaymentDetails? AsShopPayInstallmentsPaymentDetails() => this as ShopPayInstallmentsPaymentDetails; + /// + ///The name of payment method used by the buyer. + /// + public string? paymentMethodName { get; } + } + + /// + ///Basic events chronicle resource activities such as the creation of an article, the fulfillment of an order, or + ///the addition of a product. + /// + public class BasicEvent : GraphQLObject, IEvent, INode + { + /// + ///The action that occured. + /// + public string? action { get; set; } + /// + ///The name of the app that created the event. + /// + public string? appTitle { get; set; } + /// + ///Refers to a certain event and its resources. + /// + public string? arguments { get; set; } + /// + ///Whether the event was created by an app. + /// + public bool? attributeToApp { get; set; } + /// + ///Whether the event was caused by an admin user. + /// + public bool? attributeToUser { get; set; } + /// + ///The date and time when the event was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Whether the event is critical. + /// + public bool? criticalAlert { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Human readable text that describes the event. + /// + public string? message { get; set; } + /// + ///The resource that generated the event. To see a list of possible types, + ///refer to [HasEvents](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/HasEvents#implemented-in). + /// + public IHasEvents? subject { get; set; } + /// + ///The ID of the resource that generated the event. + /// + public string? subjectId { get; set; } + /// + ///The type of the resource that generated the event. + /// + public string? subjectType { get; set; } + } + + /// + ///Represents an error that happens during the execution of a billing attempt mutation. + /// + public class BillingAttemptUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `BillingAttemptUserError`. + /// + public enum BillingAttemptUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///Subscription contract does not exist. + /// + CONTRACT_NOT_FOUND, + /// + ///Origin time cannot be before the contract creation time. + /// + ORIGIN_TIME_BEFORE_CONTRACT_CREATION, + /// + ///Billing cycle selector cannot select upcoming billing cycle past limit. + /// + UPCOMING_CYCLE_LIMIT_EXCEEDED, + /// + ///Billing cycle selector cannot select billing cycle outside of index range. + /// + CYCLE_INDEX_OUT_OF_RANGE, + /// + ///Billing cycle selector cannot select billing cycle outside of start date range. + /// + CYCLE_START_DATE_OUT_OF_RANGE, + /// + ///Origin time needs to be within the selected billing cycle's start and end at date. + /// + ORIGIN_TIME_OUT_OF_RANGE, + /// + ///Billing cycle charge attempt made more than 24 hours before the billing cycle `billingAttemptExpectedDate`. + /// + BILLING_CYCLE_CHARGE_BEFORE_EXPECTED_DATE, + /// + ///Billing cycle must not be skipped. + /// + BILLING_CYCLE_SKIPPED, + /// + ///Subscription contract is under review. + /// + CONTRACT_UNDER_REVIEW, + /// + ///Subscription contract cannot be billed once terminated. + /// + CONTRACT_TERMINATED, + /// + ///Subscription contract cannot be billed if paused. + /// + CONTRACT_PAUSED, + } + + /// + ///Shopify stores come with a built-in blogging engine, allowing a shop to have one or more blogs. Blogs are meant + ///to be used as a type of magazine or newsletter for the shop, with content that changes over time. + /// + public class Blog : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, INode, IMetafieldReferencer + { + /// + ///List of the blog's articles. + /// + public ArticleConnection? articles { get; set; } + /// + ///Count of articles. + /// + public Count? articlesCount { get; set; } + /// + ///Indicates whether readers can post comments to the blog and if comments are moderated or not. + /// + public string? commentPolicy { get; set; } + /// + ///The date and time when the blog was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///Feed provider details. + /// + public BlogFeed? feed { get; set; } + /// + ///A unique, human-friendly string for the blog. If no handle is specified, a handle will be generated automatically from the blog title. + ///The handle is customizable and is used by the Liquid templating language to refer to the blog. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + /// + ///A list of tags associated with the 200 most recent blog articles. + /// + public IEnumerable? tags { get; set; } + /// + ///The name of the template a blog is using if it's using an alternate template. + ///Returns `null` if a blog is using the default blog.liquid template. + /// + public string? templateSuffix { get; set; } + /// + ///The title of the blog. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The date and time when the blog was update. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Blogs. + /// + public class BlogConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in BlogEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `blogCreate` mutation. + /// + public class BlogCreatePayload : GraphQLObject + { + /// + ///The blog that was created. + /// + public Blog? blog { 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 `BlogCreate`. + /// + public class BlogCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `BlogCreateUserError`. + /// + public enum BlogCreateUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///The metafield type is invalid. + /// + INVALID_TYPE, + } + + /// + ///Return type for `blogDelete` mutation. + /// + public class BlogDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted blog. + /// + public string? deletedBlogId { 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 `BlogDelete`. + /// + public class BlogDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `BlogDeleteUserError`. + /// + public enum BlogDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///An auto-generated type which holds one Blog and a cursor during pagination. + /// + public class BlogEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of BlogEdge. + /// + public Blog? node { get; set; } + } + + /// + ///Blog feed provider details. + /// + public class BlogFeed : GraphQLObject + { + /// + ///Blog feed provider url. + /// + public string? location { get; set; } + /// + ///Blog feed provider path. + /// + public string? path { get; set; } + } + + /// + ///The set of valid sort keys for the Blog query. + /// + public enum BlogSortKeys + { + /// + ///Sort by the `handle` value. + /// + HANDLE, + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///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, + } + + /// + ///Return type for `blogUpdate` mutation. + /// + public class BlogUpdatePayload : GraphQLObject + { + /// + ///The blog that was updated. + /// + public Blog? blog { 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 `BlogUpdate`. + /// + public class BlogUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `BlogUpdateUserError`. + /// + public enum BlogUpdateUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + } + + /// + ///Possible error codes that can be returned by `BulkMutationUserError`. + /// + public enum BulkMutationErrorCode + { + /// + ///The operation did not run because another bulk mutation is already running. [Wait for the operation to finish](https://shopify.dev/api/usage/bulk-operations/imports#wait-for-the-operation-to-finish) before retrying this operation. + /// + OPERATION_IN_PROGRESS, + /// + ///The operation did not run because the mutation is invalid. Check your mutation syntax and try again. + /// + INVALID_MUTATION, + /// + ///The JSONL file submitted via the `stagedUploadsCreate` mutation is invalid. Update the file and try again. + /// + INVALID_STAGED_UPLOAD_FILE, + /// + ///The JSONL file could not be found. Try [uploading the file](https://shopify.dev/api/usage/bulk-operations/imports#generate-the-uploaded-url-and-parameters) again, and check that you've entered the URL correctly for the `stagedUploadPath` mutation argument. + /// + NO_SUCH_FILE, + /// + ///There was a problem reading the JSONL file. This error might be intermittent, so you can try performing the same query again. + /// + INTERNAL_FILE_SERVER_ERROR, + } + + /// + ///Represents an error that happens during execution of a bulk mutation. + /// + public class BulkMutationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///An asynchronous long-running operation to fetch data in bulk or to bulk import data. + /// + ///Bulk operations are created using the `bulkOperationRunQuery` or `bulkOperationRunMutation` mutation. After + ///they are created, clients should poll the `status` field for updates. When `COMPLETED`, the `url` field contains + ///a link to the data in [JSONL](http://jsonlines.org/) format. + /// + ///Refer to the [bulk operations guide](https://shopify.dev/api/usage/bulk-operations/imports) for more details. + /// + public class BulkOperation : GraphQLObject, INode + { + /// + ///When the bulk operation was successfully completed. + /// + public DateTime? completedAt { get; set; } + /// + ///When the bulk operation was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Error code for failed operations. + /// + public string? errorCode { get; set; } + /// + ///File size in bytes of the file in the `url` field. + /// + public ulong? fileSize { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A running count of all the objects processed. + ///For example, when fetching all the products and their variants, this field counts both products and variants. + ///This field can be used to track operation progress. + /// + public ulong? objectCount { get; set; } + /// + ///The URL that points to the partial or incomplete response data (in [JSONL](http://jsonlines.org/) format) that was returned by a failed operation. + ///The URL expires 7 days after the operation fails. Returns `null` when there's no data available. + /// + public string? partialDataUrl { get; set; } + /// + ///GraphQL query document specified in `bulkOperationRunQuery`. + /// + public string? query { get; set; } + /// + ///A running count of all the objects that are processed at the root of the query. + ///For example, when fetching all the products and their variants, this field only counts products. + ///This field can be used to track operation progress. + /// + public ulong? rootObjectCount { get; set; } + /// + ///Status of the bulk operation. + /// + public string? status { get; set; } + /// + ///The bulk operation's type. + /// + public string? type { get; set; } + /// + ///The URL that points to the response data in [JSONL](http://jsonlines.org/) format. + ///The URL expires 7 days after the operation completes. + /// + public string? url { get; set; } + } + + /// + ///Return type for `bulkOperationCancel` mutation. + /// + public class BulkOperationCancelPayload : GraphQLObject + { + /// + ///The bulk operation to be canceled. + /// + public BulkOperation? bulkOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed bulk operations. + /// + public enum BulkOperationErrorCode + { + /// + ///The provided operation `query` returned access denied due to missing + ///[access scopes](https://shopify.dev/api/usage/access-scopes). + ///Review the requested object permissions and execute the query as a normal non-bulk GraphQL request to see more details. + /// + ACCESS_DENIED, + /// + ///The operation resulted in partial or incomplete data due to internal server errors during execution. + ///These errors might be intermittent, so you can try performing the same query again. + /// + INTERNAL_SERVER_ERROR, + /// + ///The operation resulted in partial or incomplete data due to query timeouts during execution. + ///In some cases, timeouts can be avoided by modifying your `query` to select fewer fields. + /// + TIMEOUT, + } + + /// + ///Return type for `bulkOperationRunMutation` mutation. + /// + public class BulkOperationRunMutationPayload : GraphQLObject + { + /// + ///The newly created bulk operation. + /// + public BulkOperation? bulkOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `bulkOperationRunQuery` mutation. + /// + public class BulkOperationRunQueryPayload : GraphQLObject + { + /// + ///The newly created bulk operation. + /// + public BulkOperation? bulkOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The valid values for the status of a bulk operation. + /// + public enum BulkOperationStatus + { + /// + ///The bulk operation has been canceled. + /// + CANCELED, + /// + ///Cancelation has been initiated on the bulk operation. There may be a short delay from when a cancelation + ///starts until the operation is actually canceled. + /// + CANCELING, + /// + ///The bulk operation has successfully completed. + /// + COMPLETED, + /// + ///The bulk operation has been created. + /// + CREATED, + /// + ///The bulk operation URL has expired. + /// + EXPIRED, + /// + ///The bulk operation has failed. For information on why the operation failed, use + ///[BulkOperation.errorCode](https://shopify.dev/api/admin-graphql/latest/enums/bulkoperationerrorcode). + /// + FAILED, + /// + ///The bulk operation is runnning. + /// + RUNNING, + } + + /// + ///The valid values for the bulk operation's type. + /// + public enum BulkOperationType + { + /// + ///The bulk operation is a query. + /// + QUERY, + /// + ///The bulk operation is a mutation. + /// + MUTATION, + } + + /// + ///Return type for `bulkProductResourceFeedbackCreate` mutation. + /// + public class BulkProductResourceFeedbackCreatePayload : GraphQLObject + { + /// + ///The feedback that's created. + /// + public IEnumerable? feedback { 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 `BulkProductResourceFeedbackCreate`. + /// + public class BulkProductResourceFeedbackCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `BulkProductResourceFeedbackCreateUserError`. + /// + public enum BulkProductResourceFeedbackCreateUserErrorCode + { + /// + ///The operation was attempted on too many feedback objects. The maximum number of feedback objects that you can operate on is 50. + /// + MAXIMUM_FEEDBACK_LIMIT_EXCEEDED, + /// + ///The feedback for a later version of this resource was already accepted. + /// + OUTDATED_FEEDBACK, + /// + ///The product wasn't found or isn't available to the channel. + /// + PRODUCT_NOT_FOUND, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + } + + /// + ///Represents the Bundles feature configuration for the shop. + /// + public class BundlesFeature : GraphQLObject + { + /// + ///Whether a shop is configured properly to sell bundles. + /// + public bool? eligibleForBundles { get; set; } + /// + ///The reason why a shop is not eligible for bundles. + /// + public string? ineligibilityReason { get; set; } + /// + ///Whether a shop has any fixed bundle products or has a cartTransform function installed. + /// + public bool? sellsBundles { get; set; } + } + + /// + ///Possible error codes that can be returned by `BusinessCustomerUserError`. + /// + public enum BusinessCustomerErrorCode + { + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///The resource wasn't found. + /// + RESOURCE_NOT_FOUND, + /// + ///Deleting the resource failed. + /// + FAILED_TO_DELETE, + /// + ///Missing a required field. + /// + REQUIRED, + /// + ///The input is empty. + /// + NO_INPUT, + /// + ///The input is invalid. + /// + INVALID_INPUT, + /// + ///Unexpected type. + /// + UNEXPECTED_TYPE, + /// + ///The field value is too long. + /// + TOO_LONG, + /// + ///The number of resources exceeded the limit. + /// + LIMIT_REACHED, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is already taken. + /// + TAKEN, + } + + /// + ///An error that happens during the execution of a business customer mutation. + /// + public class BusinessCustomerUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Represents a merchant's Business Entity. + /// + public class BusinessEntity : GraphQLObject, INode + { + /// + ///The address of the merchant's Business Entity. + /// + public BusinessEntityAddress? address { get; set; } + /// + ///The name of the company associated with the merchant's Business Entity. + /// + public string? companyName { get; set; } + /// + ///The display name of the merchant's Business Entity. + /// + public string? displayName { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether it's the merchant's primary Business Entity. + /// + public bool? primary { get; set; } + /// + ///Shopify Payments account information, including balances and payouts. + /// + public ShopifyPaymentsAccount? shopifyPaymentsAccount { get; set; } + } + + /// + ///Represents the address of a merchant's Business Entity. + /// + public class BusinessEntityAddress : GraphQLObject + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The country code of the merchant's Business Entity. + /// + public string? countryCode { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///Settings describing the behavior of checkout for a B2B buyer. + /// + public class BuyerExperienceConfiguration : GraphQLObject + { + /// + ///Whether to checkout to draft order for merchant review. + /// + public bool? checkoutToDraft { get; set; } + /// + ///The portion required to be paid at checkout. + /// + public IDepositConfiguration? deposit { get; set; } + /// + ///Whether to allow customers to use editable shipping addresses. + /// + public bool? editableShippingAddress { get; set; } + /// + ///Whether a buyer must pay at checkout or they can also choose to pay + ///later using net terms. + /// + public bool? payNowOnly { get; set; } + /// + ///Represents the merchant configured payment terms. + /// + public PaymentTermsTemplate? paymentTermsTemplate { get; set; } + } + + /// + ///A discount that is automatically applied to an order that is being edited. + /// + public class CalculatedAutomaticDiscountApplication : GraphQLObject, ICalculatedDiscountApplication + { + /// + ///The method by which the discount's value is allocated to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The level at which the discount was applied. + /// + public string? appliedTo { get; set; } + /// + ///The description of discount application. Indicates the reason why the discount was applied. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///An amount discounting the line that has been allocated by an associated discount application. + /// + public class CalculatedDiscountAllocation : GraphQLObject + { + /// + ///The money amount that's allocated by the discount application in shop and presentment currencies. + /// + public MoneyBag? allocatedAmountSet { get; set; } + /// + ///The discount that the allocated amount originated from. + /// + public ICalculatedDiscountApplication? discountApplication { get; set; } + } + + /// + ///A [discount application](https://shopify.dev/api/admin-graphql/latest/interfaces/discountapplication) involved in order editing that might be newly added or have new changes applied. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CalculatedAutomaticDiscountApplication), typeDiscriminator: "CalculatedAutomaticDiscountApplication")] + [JsonDerivedType(typeof(CalculatedDiscountCodeApplication), typeDiscriminator: "CalculatedDiscountCodeApplication")] + [JsonDerivedType(typeof(CalculatedManualDiscountApplication), typeDiscriminator: "CalculatedManualDiscountApplication")] + [JsonDerivedType(typeof(CalculatedScriptDiscountApplication), typeDiscriminator: "CalculatedScriptDiscountApplication")] + public interface ICalculatedDiscountApplication : IGraphQLObject + { + public CalculatedAutomaticDiscountApplication? AsCalculatedAutomaticDiscountApplication() => this as CalculatedAutomaticDiscountApplication; + public CalculatedDiscountCodeApplication? AsCalculatedDiscountCodeApplication() => this as CalculatedDiscountCodeApplication; + public CalculatedManualDiscountApplication? AsCalculatedManualDiscountApplication() => this as CalculatedManualDiscountApplication; + public CalculatedScriptDiscountApplication? AsCalculatedScriptDiscountApplication() => this as CalculatedScriptDiscountApplication; + /// + ///The method by which the discount's value is allocated to its entitled items. + /// + public string? allocationMethod { get; } + /// + ///The level at which the discount was applied. + /// + public string? appliedTo { get; } + /// + ///The description of discount application. Indicates the reason why the discount was applied. + /// + public string? description { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; } + } + + /// + ///An auto-generated type for paginating through multiple CalculatedDiscountApplications. + /// + public class CalculatedDiscountApplicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CalculatedDiscountApplicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CalculatedDiscountApplication and a cursor during pagination. + /// + public class CalculatedDiscountApplicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CalculatedDiscountApplicationEdge. + /// + public ICalculatedDiscountApplication? node { get; set; } + } + + /// + ///A discount code that is applied to an order that is being edited. + /// + public class CalculatedDiscountCodeApplication : GraphQLObject, ICalculatedDiscountApplication + { + /// + ///The method by which the discount's value is allocated to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The level at which the discount was applied. + /// + public string? appliedTo { get; set; } + /// + ///The string identifying the discount code that was used at the time of application. + /// + public string? code { get; set; } + /// + ///The description of discount application. Indicates the reason why the discount was applied. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///The calculated fields for a draft order. + /// + public class CalculatedDraftOrder : GraphQLObject + { + /// + ///Whether or not to accept automatic discounts on the draft order during calculation. + ///If false, only discount codes and custom draft order discounts (see `appliedDiscount`) will be applied. + ///If true, eligible automatic discounts will be applied in addition to discount codes and custom draft order discounts. + /// + public bool? acceptAutomaticDiscounts { get; set; } + /// + ///The list of alerts raised while calculating. + /// + public IEnumerable? alerts { get; set; } + /// + ///The custom order-level discount applied. + /// + public DraftOrderAppliedDiscount? appliedDiscount { get; set; } + /// + ///The available shipping rates. + ///Requires a customer with a valid shipping address and at least one line item. + /// + public IEnumerable? availableShippingRates { get; set; } + /// + ///Whether the billing address matches the shipping address. + /// + public bool? billingAddressMatchesShippingAddress { get; set; } + /// + ///The shop currency used for calculation. + /// + public string? currencyCode { get; set; } + /// + ///The customer who will be sent an invoice. + /// + public Customer? customer { get; set; } + /// + ///All discount codes applied. + /// + public IEnumerable? discountCodes { get; set; } + /// + ///The list of the line items in the calculated draft order. + /// + public IEnumerable? lineItems { get; set; } + /// + ///A subtotal of the line items and corresponding discounts, + ///excluding include shipping charges, shipping discounts, taxes, or order discounts. + /// + public MoneyBag? lineItemsSubtotalPrice { get; set; } + /// + ///The name of the selected market. + /// + public string? marketName { get; set; } + /// + ///The selected country code that determines the pricing. + /// + public string? marketRegionCountryCode { get; set; } + /// + ///The assigned phone number. + /// + public string? phone { get; set; } + /// + ///The list of platform discounts applied. + /// + public IEnumerable? platformDiscounts { get; set; } + /// + ///The payment currency used for calculation. + /// + public string? presentmentCurrencyCode { get; set; } + /// + ///The purchasing entity. + /// + public IPurchasingEntity? purchasingEntity { get; set; } + /// + ///The line item containing the shipping information and costs. + /// + public ShippingLine? shippingLine { get; set; } + + /// + ///The subtotal, in shop currency, of the line items and their discounts, excluding shipping charges, shipping discounts, and taxes. + /// + [Obsolete("Use `subtotalPriceSet` instead.")] + public decimal? subtotalPrice { get; set; } + /// + ///The subtotal, of the line items and their discounts, excluding shipping charges, shipping discounts, and taxes. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///The list of of taxes lines charged for each line item and shipping line. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether the line item prices include taxes. + /// + public bool? taxesIncluded { get; set; } + /// + ///Total discounts. + /// + public MoneyBag? totalDiscountsSet { get; set; } + /// + ///Total price of line items. + /// + public MoneyBag? totalLineItemsPriceSet { get; set; } + + /// + ///The total price, in shop currency, includes taxes, shipping charges, and discounts. + /// + [Obsolete("Use `totalPriceSet` instead.")] + public decimal? totalPrice { get; set; } + /// + ///The total price, includes taxes, shipping charges, and discounts. + /// + public MoneyBag? totalPriceSet { get; set; } + /// + ///The sum of individual line item quantities. + ///If the draft order has bundle items, this is the sum containing the quantities of individual items in the bundle. + /// + public int? totalQuantityOfLineItems { get; set; } + + /// + ///The total shipping price in shop currency. + /// + [Obsolete("Use `totalShippingPriceSet` instead.")] + public decimal? totalShippingPrice { get; set; } + /// + ///The total shipping price. + /// + public MoneyBag? totalShippingPriceSet { get; set; } + + /// + ///The total tax in shop currency. + /// + [Obsolete("Use `totalTaxSet` instead.")] + public decimal? totalTax { get; set; } + /// + ///The total tax. + /// + public MoneyBag? totalTaxSet { get; set; } + /// + ///Fingerprint of the current cart. + ///In order to have bundles work, the fingerprint must be passed to + ///each request as it was previously returned, unmodified. + /// + public string? transformerFingerprint { get; set; } + /// + ///The list of warnings raised while calculating. + /// + public IEnumerable? warnings { get; set; } + } + + /// + ///The calculated line item for a draft order. + /// + public class CalculatedDraftOrderLineItem : GraphQLObject, IDraftOrderPlatformDiscountAllocationTarget + { + /// + ///The custom applied discount. + /// + public DraftOrderAppliedDiscount? appliedDiscount { get; set; } + /// + ///The `discountedTotal` divided by `quantity`, + ///equal to the average value of the line item price per unit after discounts are applied. + ///This value doesn't include discounts applied to the entire draft order. + /// + public MoneyBag? approximateDiscountedUnitPriceSet { get; set; } + /// + ///The bundle components of the draft order line item. + /// + public IEnumerable? bundleComponents { get; set; } + /// + ///Whether the line item is custom (`true`) or contains a product variant (`false`). + /// + public bool? custom { get; set; } + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The list of additional information (metafields) with the associated types. + /// + public IEnumerable? customAttributesV2 { get; set; } + /// + ///The total price with discounts applied. + /// + public MoneyV2? discountedTotal { get; set; } + /// + ///The total price with discounts applied. + /// + public MoneyBag? discountedTotalSet { get; set; } + + /// + ///The unit price with discounts applied. + /// + [Obsolete("Use `approximateDiscountedUnitPriceSet` instead.")] + public MoneyV2? discountedUnitPrice { get; set; } + + /// + ///The unit price with discounts applied. + /// + [Obsolete("Use `approximateDiscountedUnitPriceSet` instead.")] + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///Name of the service provider who fulfilled the order. + /// + ///Valid values are either **manual** or the name of the provider. + ///For example, **amazon**, **shipwire**. + /// + ///Deleted fulfillment services will return null. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///The image associated with the draft order line item. + /// + public Image? image { get; set; } + /// + ///Whether the line item represents the purchase of a gift card. + /// + public bool? isGiftCard { get; set; } + /// + ///The name of the product. + /// + public string? name { get; set; } + /// + ///The total price, excluding discounts, equal to the original unit price multiplied by quantity. + /// + public MoneyV2? originalTotal { get; set; } + /// + ///The total price excluding discounts, equal to the original unit price multiplied by quantity. + /// + public MoneyBag? originalTotalSet { get; set; } + /// + ///The line item price without any discounts applied. + /// + public MoneyV2? originalUnitPrice { get; set; } + /// + ///The price without any discounts applied. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The original custom line item input price. + /// + public MoneyV2? originalUnitPriceWithCurrency { get; set; } + /// + ///The product for the line item. + /// + public Product? product { get; set; } + /// + ///The quantity of items. For a bundle item, this is the quantity of bundles, + ///not the quantity of items contained in the bundles themselves. + /// + public int? quantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///The SKU number of the product variant. + /// + public string? sku { get; set; } + /// + ///Whether the variant is taxable. + /// + public bool? taxable { get; set; } + /// + ///The title of the product or variant. This field only applies to custom line items. + /// + public string? title { get; set; } + /// + ///The total value of the discount. + /// + public MoneyV2? totalDiscount { get; set; } + /// + ///The total discount amount. + /// + public MoneyBag? totalDiscountSet { get; set; } + /// + ///The UUID of the draft order line item. Must be unique and consistent across requests. + ///This field is mandatory in order to manipulate drafts with bundles. + /// + public string? uuid { get; set; } + /// + ///The product variant for the line item. + /// + public ProductVariant? variant { get; set; } + /// + ///The name of the variant. + /// + public string? variantTitle { get; set; } + /// + ///The name of the vendor who created the product variant. + /// + public string? vendor { get; set; } + /// + ///The weight unit and value. + /// + public Weight? weight { get; set; } + } + + /// + ///A calculated exchange line item. + /// + public class CalculatedExchangeLineItem : GraphQLObject + { + /// + ///The discounts that have been allocated onto the line item by discount applications. + /// + public IEnumerable? calculatedDiscountAllocations { get; set; } + /// + ///The unit price of the exchange line item after discounts. + /// + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The original unit price of the exchange line item before discounts. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The quantity being exchanged. + /// + public int? quantity { get; set; } + /// + ///The calculated subtotal set of the exchange line item, including discounts. + /// + public MoneyBag? subtotalSet { get; set; } + /// + ///The total tax of the exchange line item. + /// + public MoneyBag? totalTaxSet { get; set; } + /// + ///The variant being exchanged. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///A line item involved in order editing that may be newly added or have new changes applied. + /// + public class CalculatedLineItem : GraphQLObject + { + /// + ///The discounts that have been allocated onto the line item by discount applications. + /// + public IEnumerable? calculatedDiscountAllocations { get; set; } + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + + /// + ///The discounts that have been allocated onto the line item by discount applications. + /// + [Obsolete("Use `calculatedDiscountAllocations` instead.")] + public IEnumerable? discountAllocations { get; set; } + /// + ///The price of a single quantity of the line item with line item discounts applied, in shop and presentment currencies. Discounts applied to the entire order aren't included in this price. + /// + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///The total number of items that can be edited. + /// + public int? editableQuantity { get; set; } + /// + ///The editable quantity prior to any changes made in the current edit. + /// + public int? editableQuantityBeforeChanges { get; set; } + /// + ///The total price of editable lines in shop and presentment currencies. + /// + public MoneyBag? editableSubtotalSet { get; set; } + /// + ///Whether the calculated line item has a staged discount. + /// + public bool? hasStagedLineItemDiscount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image object associated to the line item's variant. + /// + public Image? image { get; set; } + /// + ///The variant unit price in shop and presentment currencies, without any discounts applied. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The total number of items. + /// + public int? quantity { get; set; } + /// + ///Whether the line item can be restocked or not. + /// + public bool? restockable { get; set; } + /// + ///Whether the changes on the line item will result in a restock. + /// + public bool? restocking { get; set; } + /// + ///The variant SKU number. + /// + public string? sku { get; set; } + /// + ///A list of changes that affect this line item. + /// + public IEnumerable? stagedChanges { get; set; } + /// + ///The title of the product. + /// + public string? title { get; set; } + /// + ///The total price of uneditable lines in shop and presentment currencies. + /// + public MoneyBag? uneditableSubtotalSet { get; set; } + /// + ///The product variant associated with this line item. The value is null for custom line items and items where + ///the variant has been deleted. + /// + public ProductVariant? variant { get; set; } + /// + ///The title of the variant. + /// + public string? variantTitle { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CalculatedLineItems. + /// + public class CalculatedLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CalculatedLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CalculatedLineItem and a cursor during pagination. + /// + public class CalculatedLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CalculatedLineItemEdge. + /// + public CalculatedLineItem? node { get; set; } + } + + /// + ///Represents a discount that was manually created for an order that is being edited. + /// + public class CalculatedManualDiscountApplication : GraphQLObject, ICalculatedDiscountApplication + { + /// + ///The method by which the discount's value is allocated to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The level at which the discount was applied. + /// + public string? appliedTo { get; set; } + /// + ///The description of discount application. Indicates the reason why the discount was applied. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///An order with edits applied but not saved. + /// + public class CalculatedOrder : GraphQLObject, INode + { + /// + ///Returns only the new discount applications being added to the order in the current edit. + /// + public CalculatedDiscountApplicationConnection? addedDiscountApplications { get; set; } + /// + ///Returns only the new line items being added to the order during the current edit. + /// + public CalculatedLineItemConnection? addedLineItems { get; set; } + /// + ///Amount of the order-level discount (doesn't contain any line item discounts) in shop and presentment currencies. + /// + public MoneyBag? cartDiscountAmountSet { get; set; } + /// + ///Whether the changes have been applied and saved to the order. + /// + public bool? committed { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Returns all items on the order that existed before starting the edit. + ///Will include any changes that have been made. + ///Will not include line items added during the current edit. + /// + public CalculatedLineItemConnection? lineItems { get; set; } + /// + ///The HTML of the customer notification for the order edit. + /// + public string? notificationPreviewHtml { get; set; } + /// + ///The customer notification title. + /// + public string? notificationPreviewTitle { get; set; } + /// + ///The order without any changes applied. + /// + 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; } + /// + ///The sum of the quantities for the line items that contribute to the order's subtotal. + /// + public int? subtotalLineItemsQuantity { get; set; } + /// + ///The subtotal of the line items, in shop and presentment currencies, after all the discounts are applied. The subtotal doesn't include shipping. The subtotal includes taxes for taxes-included orders and excludes taxes for taxes-excluded orders. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///Taxes charged for the line item. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Total price of the order less the total amount received from the customer in shop and presentment currencies. + /// + public MoneyBag? totalOutstandingSet { get; set; } + /// + ///Total amount of the order (includes taxes and discounts) in shop and presentment currencies. + /// + public MoneyBag? totalPriceSet { get; set; } + } + + /// + ///The calculated costs of handling a return line item. + ///Typically, this would cover the costs of inspecting, repackaging, and restocking the item. + /// + public class CalculatedRestockingFee : GraphQLObject, ICalculatedReturnFee + { + /// + ///The calculated amount of the return fee, in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The value of the fee as a percentage. + /// + public decimal? percentage { get; set; } + } + + /// + ///A calculated return. + /// + public class CalculatedReturn : GraphQLObject + { + /// + ///A list of calculated exchange line items. + /// + public IEnumerable? exchangeLineItems { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A list of calculated return line items. + /// + public IEnumerable? returnLineItems { get; set; } + /// + ///The calulated return shipping fee. + /// + public CalculatedReturnShippingFee? returnShippingFee { get; set; } + } + + /// + ///A calculated return fee. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CalculatedRestockingFee), typeDiscriminator: "CalculatedRestockingFee")] + [JsonDerivedType(typeof(CalculatedReturnShippingFee), typeDiscriminator: "CalculatedReturnShippingFee")] + public interface ICalculatedReturnFee : IGraphQLObject + { + public CalculatedRestockingFee? AsCalculatedRestockingFee() => this as CalculatedRestockingFee; + public CalculatedReturnShippingFee? AsCalculatedReturnShippingFee() => this as CalculatedReturnShippingFee; + /// + ///The calculated amount of the return fee, in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + } + + /// + ///A calculated return line item. + /// + public class CalculatedReturnLineItem : GraphQLObject + { + /// + ///The fulfillment line item from which items are returned. + /// + public FulfillmentLineItem? fulfillmentLineItem { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The quantity being returned. + /// + public int? quantity { get; set; } + /// + ///The restocking fee of the return line item. + /// + public CalculatedRestockingFee? restockingFee { get; set; } + /// + ///The subtotal of the return line item before order discounts. + /// + public MoneyBag? subtotalBeforeOrderDiscountsSet { get; set; } + /// + ///The subtotal of the return line item. + /// + public MoneyBag? subtotalSet { get; set; } + /// + ///The total tax of the return line item. + /// + public MoneyBag? totalTaxSet { get; set; } + } + + /// + ///The calculated cost of the return shipping. + /// + public class CalculatedReturnShippingFee : GraphQLObject, ICalculatedReturnFee + { + /// + ///The calculated amount of the return fee, in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///A discount created by a Shopify script for an order that is being edited. + /// + public class CalculatedScriptDiscountApplication : GraphQLObject, ICalculatedDiscountApplication + { + /// + ///The method by which the discount's value is allocated to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The level at which the discount was applied. + /// + public string? appliedTo { get; set; } + /// + ///The description of discount application. Indicates the reason why the discount was applied. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///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 when sold and before applying discounts. This field includes taxes if `Order.taxesIncluded` is true. Otherwise, this field doesn't include taxes for the shipping line. + /// + public MoneyBag? price { get; set; } + /// + ///The staged status of the shipping line. + /// + public string? 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. + /// + public class CardPaymentDetails : GraphQLObject, IBasePaymentDetails, IPaymentDetails + { + /// + ///The response code from the address verification system (AVS). The code is always a single letter. + /// + public string? avsResultCode { get; set; } + /// + ///The issuer identification number (IIN), formerly known as bank identification number (BIN) of the customer's credit card. This is made up of the first few digits of the credit card number. + /// + public string? bin { get; set; } + /// + ///The name of the company that issued the customer's credit card. + /// + public string? company { get; set; } + /// + ///The response code from the credit card company indicating whether the customer entered the card security code, or card verification value, correctly. The code is a single letter or empty string. + /// + public string? cvvResultCode { get; set; } + /// + ///The month in which the used credit card expires. + /// + public int? expirationMonth { get; set; } + /// + ///The year in which the used credit card expires. + /// + public int? expirationYear { get; set; } + /// + ///The holder of the credit card. + /// + public string? name { get; set; } + /// + ///The customer's credit card number, with most of the leading digits redacted. + /// + public string? number { get; set; } + /// + ///The name of payment method used by the buyer. + /// + public string? paymentMethodName { get; set; } + /// + ///Digital wallet used for the payment. + /// + public string? wallet { get; set; } + } + + /// + ///Return type for `carrierServiceCreate` mutation. + /// + public class CarrierServiceCreatePayload : GraphQLObject + { + /// + ///The created carrier service. + /// + public DeliveryCarrierService? carrierService { 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 `CarrierServiceCreate`. + /// + public class CarrierServiceCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CarrierServiceCreateUserError`. + /// + public enum CarrierServiceCreateUserErrorCode + { + /// + ///Carrier service creation failed. + /// + CARRIER_SERVICE_CREATE_FAILED, + } + + /// + ///Return type for `carrierServiceDelete` mutation. + /// + public class CarrierServiceDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted carrier service. + /// + public string? deletedId { 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 `CarrierServiceDelete`. + /// + public class CarrierServiceDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CarrierServiceDeleteUserError`. + /// + public enum CarrierServiceDeleteUserErrorCode + { + /// + ///Carrier service deletion failed. + /// + CARRIER_SERVICE_DELETE_FAILED, + } + + /// + ///The set of valid sort keys for the CarrierService query. + /// + public enum CarrierServiceSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Return type for `carrierServiceUpdate` mutation. + /// + public class CarrierServiceUpdatePayload : GraphQLObject + { + /// + ///The updated carrier service. + /// + public DeliveryCarrierService? carrierService { 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 `CarrierServiceUpdate`. + /// + public class CarrierServiceUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CarrierServiceUpdateUserError`. + /// + public enum CarrierServiceUpdateUserErrorCode + { + /// + ///Carrier service update failed. + /// + CARRIER_SERVICE_UPDATE_FAILED, + } + + /// + ///A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle). + /// + public class CartTransform : GraphQLObject, IHasMetafields, INode + { + /// + ///Whether a run failure will block cart and checkout operations. + /// + public bool? blockOnFailure { get; set; } + /// + ///The ID for the Cart Transform function. + /// + public string? functionId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///An auto-generated type for paginating through multiple CartTransforms. + /// + public class CartTransformConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CartTransformEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `cartTransformCreate` mutation. + /// + public class CartTransformCreatePayload : GraphQLObject + { + /// + ///The newly created cart transform function. + /// + public CartTransform? cartTransform { 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 `CartTransformCreate`. + /// + public class CartTransformCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CartTransformCreateUserError`. + /// + public enum CartTransformCreateUserErrorCode + { + /// + ///Failed to create cart transform due to invalid input. + /// + INPUT_INVALID, + /// + ///No Shopify Function found for provided function_id. + /// + FUNCTION_NOT_FOUND, + /// + ///A cart transform function already exists for the provided function_id. + /// + FUNCTION_ALREADY_REGISTERED, + /// + ///Function does not implement the required interface for this cart_transform function. + /// + FUNCTION_DOES_NOT_IMPLEMENT, + /// + ///Could not create or update metafields. + /// + INVALID_METAFIELDS, + } + + /// + ///Return type for `cartTransformDelete` mutation. + /// + public class CartTransformDeletePayload : GraphQLObject + { + /// + ///The globally-unique ID for the deleted cart transform. + /// + public string? deletedId { 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 `CartTransformDelete`. + /// + public class CartTransformDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CartTransformDeleteUserError`. + /// + public enum CartTransformDeleteUserErrorCode + { + /// + ///Could not find cart transform for provided id. + /// + NOT_FOUND, + /// + ///Unauthorized app scope. + /// + UNAUTHORIZED_APP_SCOPE, + } + + /// + ///An auto-generated type which holds one CartTransform and a cursor during pagination. + /// + public class CartTransformEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CartTransformEdge. + /// + public CartTransform? node { get; set; } + } + + /// + ///Represents the cart transform feature configuration for the shop. + /// + public class CartTransformEligibleOperations : GraphQLObject + { + /// + ///The shop is eligible for expand operations. + /// + public bool? expandOperation { get; set; } + /// + ///The shop is eligible for merge operations. + /// + public bool? mergeOperation { get; set; } + /// + ///The shop is eligible for update operations. + /// + public bool? updateOperation { get; set; } + } + + /// + ///Represents the cart transform feature configuration for the shop. + /// + public class CartTransformFeature : GraphQLObject + { + /// + ///The cart transform operations eligible for the shop. + /// + public CartTransformEligibleOperations? eligibleOperations { get; set; } + } + + /// + ///The rounding adjustment applied to total payment or refund received for an Order involving cash payments. + /// + public class CashRoundingAdjustment : GraphQLObject + { + /// + ///The rounding adjustment that can be applied to totalReceived for an Order involving cash payments in shop and presentment currencies. Could be a positive or negative value. Value is 0 if there's no rounding, or for non-cash payments. + /// + public MoneyBag? paymentSet { get; set; } + /// + ///The rounding adjustment that can be applied to totalRefunded for an Order involving cash payments in shop and presentment currencies. Could be a positive or negative value. Value is 0 if there's no rounding, or for non-cash refunds. + /// + public MoneyBag? refundSet { 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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CashTrackingAdjustmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CashTrackingAdjustment and a cursor during pagination. + /// + public class CashTrackingAdjustmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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 cash transactions made during this session. + /// + public OrderTransactionConnection? cashTransactions { 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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CashTrackingSessionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CashTrackingSession and a cursor during pagination. + /// + public class CashTrackingSessionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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 CashTrackingSessionTransactions query. + /// + public enum CashTrackingSessionTransactionsSortKeys + { + /// + ///Sort by the `processed_at` value. + /// + PROCESSED_AT, + /// + ///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, + } + + /// + ///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). + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppCatalog), typeDiscriminator: "AppCatalog")] + [JsonDerivedType(typeof(CompanyLocationCatalog), typeDiscriminator: "CompanyLocationCatalog")] + [JsonDerivedType(typeof(MarketCatalog), typeDiscriminator: "MarketCatalog")] + public interface ICatalog : IGraphQLObject, INode + { + /// + ///Most recent catalog operations. + /// + public IEnumerable? operations { get; } + /// + ///The price list associated with the catalog. + /// + public PriceList? priceList { get; } + /// + ///A group of products and collections that's published to a catalog. + /// + public Publication? publication { get; } + /// + ///The status of the catalog. + /// + public string? status { get; } + /// + ///The name of the catalog. + /// + public string? title { get; } + } + + /// + ///An auto-generated type for paginating through multiple Catalogs. + /// + public class CatalogConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CatalogEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `catalogContextUpdate` mutation. + /// + public class CatalogContextUpdatePayload : GraphQLObject + { + /// + ///The updated catalog. + /// + public ICatalog? catalog { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `catalogCreate` mutation. + /// + public class CatalogCreatePayload : GraphQLObject + { + /// + ///The newly created catalog. + /// + public ICatalog? catalog { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A catalog csv operation represents a CSV file import. + /// + public class CatalogCsvOperation : GraphQLObject, INode, IResourceOperation, IPublicationOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The count of processed rows, summing imported, failed, and skipped rows. + /// + public int? processedRowCount { get; set; } + /// + ///Represents a rows objects within this background operation. + /// + public RowCount? rowCount { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + } + + /// + ///Return type for `catalogDelete` mutation. + /// + public class CatalogDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted catalog. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Catalog and a cursor during pagination. + /// + public class CatalogEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CatalogEdge. + /// + public ICatalog? node { get; set; } + } + + /// + ///The set of valid sort keys for the Catalog query. + /// + public enum CatalogSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///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, + } + + /// + ///The state of a catalog. + /// + public enum CatalogStatus + { + /// + ///The catalog is active. + /// + ACTIVE, + /// + ///The catalog is archived. + /// + ARCHIVED, + /// + ///The catalog is in draft. + /// + DRAFT, + } + + /// + ///The associated catalog's type. + /// + public enum CatalogType + { + /// + ///Not associated to a catalog. + /// + NONE, + /// + ///Catalogs belonging to apps. + /// + APP, + /// + ///Catalogs belonging to company locations. + /// + COMPANY_LOCATION, + /// + ///Catalogs belonging to markets. + /// + MARKET, + } + + /// + ///Return type for `catalogUpdate` mutation. + /// + public class CatalogUpdatePayload : GraphQLObject + { + /// + ///The updated catalog. + /// + public ICatalog? catalog { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors encountered while managing a catalog. + /// + public class CatalogUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CatalogUserError`. + /// + public enum CatalogUserErrorCode + { + /// + ///An app catalog cannot be assigned to a price list. + /// + APP_CATALOG_PRICE_LIST_ASSIGNMENT, + /// + ///Catalog failed to save. + /// + CATALOG_FAILED_TO_SAVE, + /// + ///The catalog wasn't found. + /// + CATALOG_NOT_FOUND, + /// + ///A price list cannot be assigned to the primary market. + /// + PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET, + /// + ///Quantity rules can be associated only with company location catalogs. + /// + CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES, + /// + ///Quantity price breaks can be associated only with company location catalogs. + /// + CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_PRICE_BREAKS, + /// + ///The catalog can't be associated with more than one market. + /// + CANNOT_ADD_MORE_THAN_ONE_MARKET, + /// + ///A company location catalog outside of a supported plan can only have an archived status. + /// + COMPANY_LOCATION_CATALOG_STATUS_PLAN, + /// + ///Context driver already assigned to this catalog. + /// + CONTEXT_ALREADY_ASSIGNED_TO_CATALOG, + /// + ///Cannot save the catalog because the catalog limit for the context was reached. + /// + CONTEXT_CATALOG_LIMIT_REACHED, + /// + ///The company location could not be found. + /// + COMPANY_LOCATION_NOT_FOUND, + /// + ///The arguments `contextsToAdd` and `contextsToRemove` must match existing catalog context type. + /// + CONTEXT_DRIVER_MISMATCH, + /// + ///A country price list cannot be assigned to a catalog. + /// + COUNTRY_PRICE_LIST_ASSIGNMENT, + /// + ///The catalog context type is invalid. + /// + INVALID_CATALOG_CONTEXT_TYPE, + /// + ///A market catalog must have an active status. + /// + MARKET_CATALOG_STATUS, + /// + ///Market not found. + /// + MARKET_NOT_FOUND, + /// + ///The catalog's market and price list currencies do not match. + /// + MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH, + /// + ///Market already belongs to another catalog. + /// + MARKET_TAKEN, + /// + ///Must provide exactly one context type. + /// + MUST_PROVIDE_EXACTLY_ONE_CONTEXT_TYPE, + /// + ///Price list failed to save. + /// + PRICE_LIST_FAILED_TO_SAVE, + /// + ///Price list not found. + /// + PRICE_LIST_NOT_FOUND, + /// + ///The price list is currently being modified. Please try again later. + /// + PRICE_LIST_LOCKED, + /// + ///Publication not found. + /// + PUBLICATION_NOT_FOUND, + /// + ///Must have `contexts_to_add` or `contexts_to_remove` argument. + /// + REQUIRES_CONTEXTS_TO_ADD_OR_REMOVE, + /// + ///Can't perform this action on a catalog of this type. + /// + UNSUPPORTED_CATALOG_ACTION, + /// + ///Cannot create a catalog for an app. + /// + CANNOT_CREATE_APP_CATALOG, + /// + ///Cannot modify a catalog for an app. + /// + CANNOT_MODIFY_APP_CATALOG, + /// + ///Cannot delete a catalog for an app. + /// + CANNOT_DELETE_APP_CATALOG, + /// + ///Cannot create a catalog for a market. + /// + CANNOT_CREATE_MARKET_CATALOG, + /// + ///Cannot modify a catalog for a market. + /// + CANNOT_MODIFY_MARKET_CATALOG, + /// + ///Cannot delete a catalog for a market. + /// + CANNOT_DELETE_MARKET_CATALOG, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is blank. + /// + BLANK, + } + + /// + ///A channel represents an app where you sell a group of products and collections. + ///A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS. + /// + public class Channel : GraphQLObject, INode + { + /// + ///The underlying app used by the channel. + /// + public App? app { get; set; } + /// + ///The collection publications for the list of collections published to the channel. + /// + public ResourcePublicationConnection? collectionPublicationsV3 { get; set; } + /// + ///The list of collections published to the channel. + /// + public CollectionConnection? collections { get; set; } + + /// + ///The unique identifier for the channel. + /// + [Obsolete("Use `id` instead.")] + public string? handle { get; set; } + /// + ///Whether the collection is available to the channel. + /// + public bool? hasCollection { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the channel. + /// + public string? name { get; set; } + + /// + ///The menu items for the channel, which also appear as submenu items in the left navigation sidebar in the Shopify admin. + /// + [Obsolete("Use [AppInstallation.navigationItems](\n https://shopify.dev/api/admin-graphql/current/objects/AppInstallation#field-appinstallation-navigationitems) instead.")] + public IEnumerable? navigationItems { get; set; } + + /// + ///Home page for the channel. + /// + [Obsolete("Use [AppInstallation.launchUrl](\n https://shopify.dev/api/admin-graphql/current/objects/AppInstallation#field-appinstallation-launchurl) instead.")] + public string? overviewPath { get; set; } + + /// + ///The product publications for the products published to the channel. + /// + [Obsolete("Use `productPublicationsV3` instead.")] + public ProductPublicationConnection? productPublications { get; set; } + /// + ///The product publications for the list of products published to the channel. + /// + public ResourcePublicationConnection? productPublicationsV3 { get; set; } + /// + ///The list of products published to the channel. + /// + 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; } + } + + /// + ///An auto-generated type for paginating through multiple Channels. + /// + public class ChannelConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ChannelEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///A channel definition represents channels surfaces on the platform. + ///A channel definition can be a platform or a subsegment of it such as Facebook Home, Instagram Live, Instagram Shops, or WhatsApp chat. + /// + public class ChannelDefinition : GraphQLObject, INode + { + /// + ///Name of the channel that this sub channel belongs to. + /// + public string? channelName { get; set; } + /// + ///Unique string used as a public identifier for the channel definition. + /// + public string? handle { get; set; } + /// + ///The unique ID for the channel definition. + /// + public string? id { get; set; } + /// + ///Whether this channel definition represents a marketplace. + /// + public bool? isMarketplace { get; set; } + /// + ///Name of the sub channel (e.g. Online Store, Instagram Shopping, TikTok Live). + /// + public string? subChannelName { get; set; } + /// + ///Icon displayed when showing the channel in admin. + /// + public string? svgIcon { get; set; } + } + + /// + ///An auto-generated type which holds one Channel and a cursor during pagination. + /// + public class ChannelEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ChannelEdge. + /// + public Channel? node { get; set; } + } + + /// + ///Contains the information for a given sales channel. + /// + public class ChannelInformation : GraphQLObject, INode + { + /// + ///The app associated with the channel. + /// + public App? app { get; set; } + /// + ///The channel definition associated with the channel. + /// + public ChannelDefinition? channelDefinition { get; set; } + /// + ///The unique ID for the channel. + /// + public string? channelId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///The settings of checkout visual customizations. + /// + ///To learn more about updating checkout branding settings, refer to the + ///[checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert) mutation. + /// + public class CheckoutBranding : GraphQLObject + { + /// + ///The customizations that apply to specific components or areas of the user interface. + /// + public CheckoutBrandingCustomizations? customizations { get; set; } + /// + ///The design system allows you to set values that represent specific attributes + ///of your brand like color and font. These attributes are used throughout the user + ///interface. This brings consistency and allows you to easily make broad design changes. + /// + 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. + /// + public enum CheckoutBrandingBackgroundStyle + { + /// + ///The Solid background style. + /// + SOLID, + /// + ///The None background style. + /// + NONE, + } + + /// + ///Possible values for the border. + /// + public enum CheckoutBrandingBorder + { + /// + ///The None border. + /// + NONE, + /// + ///The Block End border. + /// + BLOCK_END, + /// + ///The Full border. + /// + 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 Large border width. + /// + LARGE, + } + + /// + ///The buttons customizations. + /// + public class CheckoutBrandingButton : GraphQLObject + { + /// + ///The background style used for buttons. + /// + public string? background { get; set; } + /// + ///The block padding used for buttons. + /// + public string? blockPadding { get; set; } + /// + ///The border used for buttons. + /// + public string? border { get; set; } + /// + ///The corner radius used for buttons. + /// + public string? cornerRadius { get; set; } + /// + ///The inline padding used for buttons. + /// + public string? inlinePadding { get; set; } + /// + ///The typography used for buttons. + /// + public CheckoutBrandingTypographyStyle? typography { get; set; } + } + + /// + ///Colors for buttons. + /// + public class CheckoutBrandingButtonColorRoles : GraphQLObject + { + /// + ///The color of accented objects (links and focused state). + /// + public string? accent { get; set; } + /// + ///The color of the background. + /// + public string? background { get; set; } + /// + ///The color of borders. + /// + public string? border { get; set; } + /// + ///The decorative color for highlighting specific parts of the user interface. + /// + public string? decorative { get; set; } + /// + ///The colors of the button on hover. + /// + public CheckoutBrandingColorRoles? hover { get; set; } + /// + ///The color of icons. + /// + public string? icon { get; set; } + /// + ///The color of text. + /// + public string? text { get; set; } + } + + /// + ///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 string? 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 string? 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. + /// + public class CheckoutBrandingCheckbox : GraphQLObject + { + /// + ///The corner radius used for checkboxes. + /// + public string? cornerRadius { get; set; } + } + + /// + ///The choice list customizations. + /// + public class CheckoutBrandingChoiceList : GraphQLObject + { + /// + ///The settings that apply to the 'group' variant of ChoiceList. + /// + public CheckoutBrandingChoiceListGroup? group { get; set; } + } + + /// + ///The settings that apply to the 'group' variant of ChoiceList. + /// + public class CheckoutBrandingChoiceListGroup : GraphQLObject + { + /// + ///The spacing between UI elements in the list. + /// + public string? spacing { get; set; } + } + + /// + ///A set of colors for customizing the overall look and feel of the checkout. + /// + public class CheckoutBrandingColorGlobal : GraphQLObject + { + /// + ///A color used for interaction, like links and focus states. + /// + public string? accent { get; set; } + /// + ///A color that's strongly associated with the merchant. Currently used for + ///primary buttons, for example **Pay now**, and secondary buttons, for example **Buy again**. + /// + public string? brand { get; set; } + /// + ///A semantic color used for components that communicate critical content. For example, a blocking error such as the requirement to enter a valid credit card number. + /// + public string? critical { get; set; } + /// + ///A color used to highlight certain areas of the user interface. For example, the [`Text`](https://shopify.dev/docs/api/checkout-ui-extensions/latest/components/titles-and-text/text#textprops-propertydetail-appearance) component. + /// + public string? decorative { get; set; } + /// + ///A semantic color used for components that communicate general, informative content. + /// + public string? info { get; set; } + /// + ///A semantic color used for components that communicate successful actions or a positive state. + /// + public string? success { get; set; } + /// + ///A semantic color used for components that display content that requires attention. For example, something that might be wrong, but not blocking. + /// + public string? warning { get; set; } + } + + /// + ///A group of colors used together on a surface. + /// + public class CheckoutBrandingColorRoles : GraphQLObject + { + /// + ///The color of accented objects (links and focused state). + /// + public string? accent { get; set; } + /// + ///The color of the background. + /// + public string? background { get; set; } + /// + ///The color of borders. + /// + public string? border { get; set; } + /// + ///The decorative color for highlighting specific parts of the user interface. + /// + public string? decorative { get; set; } + /// + ///The color of icons. + /// + public string? icon { get; set; } + /// + ///The color of text. + /// + public string? text { get; set; } + } + + /// + ///A base set of color customizations that's applied to an area of Checkout, from which every component + ///pulls its colors. + /// + public class CheckoutBrandingColorScheme : GraphQLObject + { + /// + ///The main colors of a scheme. Used for the surface background, text, links, and more. + /// + public CheckoutBrandingColorRoles? @base { get; set; } + /// + ///The colors of form controls, such as the [`TextField`](https://shopify.dev/docs/api/checkout-ui-extensions/latest/components/forms/textfield) and [`ChoiceList`](https://shopify.dev/docs/api/checkout-ui-extensions/latest/components/forms/choicelist) components. + /// + public CheckoutBrandingControlColorRoles? control { get; set; } + /// + ///The colors of the primary button. For example, the main payment, or **Pay now** button. + /// + public CheckoutBrandingButtonColorRoles? primaryButton { get; set; } + /// + ///The colors of the secondary button, which is used for secondary actions. For example, **Buy again**. + /// + public CheckoutBrandingButtonColorRoles? secondaryButton { get; set; } + } + + /// + ///The possible color schemes. + /// + public enum CheckoutBrandingColorSchemeSelection + { + /// + ///The TRANSPARENT color scheme selection. + /// + TRANSPARENT, + /// + ///The COLOR_SCHEME1 color scheme selection. + /// + COLOR_SCHEME1, + /// + ///The COLOR_SCHEME2 color scheme selection. + /// + COLOR_SCHEME2, + /// + ///The COLOR_SCHEME3 color scheme selection. + /// + COLOR_SCHEME3, + /// + ///The COLOR_SCHEME4 color scheme selection. + /// + COLOR_SCHEME4, + } + + /// + ///The color schemes. + /// + public class CheckoutBrandingColorSchemes : GraphQLObject + { + /// + ///The primary scheme. By default, it’s used for the main area of the interface. + /// + public CheckoutBrandingColorScheme? scheme1 { get; set; } + /// + ///The secondary scheme. By default, it’s used for secondary areas, like Checkout’s Order Summary. + /// + 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; } + } + + /// + ///The possible colors. + /// + public enum CheckoutBrandingColorSelection + { + /// + ///Transparent color selection. + /// + TRANSPARENT, + } + + /// + ///The color settings for global colors and color schemes. + /// + public class CheckoutBrandingColors : GraphQLObject + { + /// + ///A group of global colors for customizing the overall look and feel of the user interface. + /// + public CheckoutBrandingColorGlobal? global { get; set; } + /// + ///A set of color schemes which apply to different areas of the user interface. + /// + public CheckoutBrandingColorSchemes? schemes { get; set; } + } + + /// + ///The container's divider customizations. + /// + public class CheckoutBrandingContainerDivider : GraphQLObject + { + /// + ///The divider style. + /// + public string? borderStyle { get; set; } + /// + ///The divider width. + /// + public string? borderWidth { get; set; } + /// + ///The divider visibility. + /// + public string? visibility { get; set; } + } + + /// + ///The content container customizations. + /// + public class CheckoutBrandingContent : GraphQLObject + { + /// + ///The content container's divider style and visibility. + /// + public CheckoutBrandingContainerDivider? divider { get; set; } + } + + /// + ///The form controls customizations. + /// + public class CheckoutBrandingControl : GraphQLObject + { + /// + ///The border used for form controls. + /// + public string? border { get; set; } + /// + ///Set to TRANSPARENT to define transparent form controls. If null, form controls inherit colors from their scheme settings (for example, the main section inherits from `design_system.colors.schemes.scheme1.control` by default). Note that usage of the `customizations.control.color` setting to customize the form control color is deprecated. + /// + public string? color { get; set; } + /// + ///The corner radius used for form controls. + /// + public string? cornerRadius { get; set; } + /// + ///The label position used for form controls. + /// + public string? labelPosition { get; set; } + } + + /// + ///Colors for form controls. + /// + public class CheckoutBrandingControlColorRoles : GraphQLObject + { + /// + ///The color of accented objects (links and focused state). + /// + public string? accent { get; set; } + /// + ///The color of the background. + /// + public string? background { get; set; } + /// + ///The color of borders. + /// + public string? border { get; set; } + /// + ///The decorative color for highlighting specific parts of the user interface. + /// + public string? decorative { get; set; } + /// + ///The color of icons. + /// + public string? icon { get; set; } + /// + ///The colors of selected controls. + /// + public CheckoutBrandingColorRoles? selected { get; set; } + /// + ///The color of text. + /// + public string? text { get; set; } + } + + /// + ///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 0px corner radius (square corners). + /// + NONE, + /// + ///The corner radius with a pixel value defined by designSystem.cornerRadius.small. + /// + SMALL, + /// + ///The corner radius with a pixel value defined by designSystem.cornerRadius.base. + /// + BASE, + /// + ///The corner radius with a pixel value defined by designSystem.cornerRadius.large. + /// + LARGE, + } + + /// + ///Define the pixel size of corner radius options. + /// + public class CheckoutBrandingCornerRadiusVariables : GraphQLObject + { + /// + ///The value in pixels for base corner radii. Example: 5. + /// + public int? @base { get; set; } + /// + ///The value in pixels for large corner radii. Example: 10. + /// + public int? large { get; set; } + /// + ///The value in pixels for small corner radii. Example: 3. + /// + public int? small { get; set; } + } + + /// + ///A custom font. + /// + public class CheckoutBrandingCustomFont : GraphQLObject, ICheckoutBrandingFont + { + /// + ///Globally unique ID reference to the custom font file. + /// + public string? genericFileId { get; set; } + /// + ///The font sources. + /// + public string? sources { get; set; } + /// + ///The font weight. + /// + public int? weight { get; set; } + } + + /// + ///The customizations that apply to specific components or areas of the user interface. + /// + 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. + /// + public CheckoutBrandingCheckbox? checkbox { get; set; } + /// + ///The choice list customizations. + /// + public CheckoutBrandingChoiceList? choiceList { get; set; } + /// + ///The content container customizations. + /// + public CheckoutBrandingContent? content { get; set; } + /// + ///The form controls customizations. + /// + public CheckoutBrandingControl? control { get; set; } + /// + ///The customizations for the page, content, main, and order summary dividers. For example, by setting the borderStyle to `DOTTED`, you can make these dividers render as dotted lines. + /// + public CheckoutBrandingDividerStyle? divider { 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; } + /// + ///The header customizations. + /// + public CheckoutBrandingHeader? header { get; set; } + /// + ///The Heading Level 1 customizations. + /// + public CheckoutBrandingHeadingLevel? headingLevel1 { get; set; } + /// + ///The Heading Level 2 customizations. + /// + public CheckoutBrandingHeadingLevel? headingLevel2 { get; set; } + /// + ///The Heading Level 3 customizations. + /// + public CheckoutBrandingHeadingLevel? headingLevel3 { get; set; } + /// + ///The main area customizations. + /// + public CheckoutBrandingMain? main { get; set; } + /// + ///The merchandise thumbnails customizations. + /// + public CheckoutBrandingMerchandiseThumbnail? merchandiseThumbnail { get; set; } + /// + ///The order summary customizations. + /// + public CheckoutBrandingOrderSummary? orderSummary { get; set; } + /// + ///The primary buttons customizations. + /// + public CheckoutBrandingButton? primaryButton { get; set; } + /// + ///The secondary buttons customizations. + /// + public CheckoutBrandingButton? secondaryButton { get; set; } + /// + ///The selects customizations. + /// + public CheckoutBrandingSelect? select { get; set; } + /// + ///The text fields customizations. + /// + public CheckoutBrandingTextField? textField { get; set; } + } + + /// + ///The design system allows you to set values that represent specific attributes + ///of your brand like color and font. These attributes are used throughout the user + ///interface. This brings consistency and allows you to easily make broad design changes. + /// + public class CheckoutBrandingDesignSystem : GraphQLObject + { + /// + ///The color settings for global colors and color schemes. + /// + public CheckoutBrandingColors? colors { get; set; } + /// + ///The corner radius variables. + /// + public CheckoutBrandingCornerRadiusVariables? cornerRadius { get; set; } + /// + ///The typography. + /// + public CheckoutBrandingTypography? typography { get; set; } + } + + /// + ///The customizations for the page, content, main, and order summary dividers. + /// + public class CheckoutBrandingDividerStyle : GraphQLObject + { + /// + ///The border style for the divider. + /// + public string? borderStyle { get; set; } + /// + ///The border width for the divider. + /// + public string? borderWidth { get; set; } + } + + /// + ///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 string? cornerRadius { get; set; } + } + + /// + ///A font. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CheckoutBrandingCustomFont), typeDiscriminator: "CheckoutBrandingCustomFont")] + [JsonDerivedType(typeof(CheckoutBrandingShopifyFont), typeDiscriminator: "CheckoutBrandingShopifyFont")] + public interface ICheckoutBrandingFont : IGraphQLObject + { + public CheckoutBrandingCustomFont? AsCheckoutBrandingCustomFont() => this as CheckoutBrandingCustomFont; + public CheckoutBrandingShopifyFont? AsCheckoutBrandingShopifyFont() => this as CheckoutBrandingShopifyFont; + /// + ///The font sources. + /// + public string? sources { get; } + /// + ///The font weight. + /// + public int? weight { get; } + } + + /// + ///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 + { + /// + ///The base font. + /// + public ICheckoutBrandingFont? @base { get; set; } + /// + ///The bold font. + /// + public ICheckoutBrandingFont? bold { get; set; } + /// + ///The font loading strategy. + /// + public string? loadingStrategy { get; set; } + /// + ///The font group name. + /// + public string? name { get; set; } + } + + /// + ///The font loading strategy determines how a font face is displayed after it is loaded or failed to load. + ///For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display. + /// + public enum CheckoutBrandingFontLoadingStrategy + { + /// + ///The font display strategy is defined by the browser user agent. + /// + AUTO, + /// + ///Gives the font face a short block period and an infinite swap period. + /// + BLOCK, + /// + ///Gives the font face an extremely small block period and an infinite swap period. + /// + SWAP, + /// + ///Gives the font face an extremely small block period and a short swap period. + /// + FALLBACK, + /// + ///Gives the font face an extremely small block period and no swap period. + /// + OPTIONAL, + } + + /// + ///The font size. + /// + public class CheckoutBrandingFontSize : GraphQLObject + { + /// + ///The base font size. + /// + public decimal? @base { get; set; } + /// + ///The scale ratio used to derive all font sizes such as small and large. + /// + public decimal? ratio { get; set; } + } + + /// + ///A container for the footer section customizations. + /// + public class CheckoutBrandingFooter : GraphQLObject + { + /// + ///The footer alignment. + /// + public string? alignment { get; set; } + /// + ///The selected color scheme of the footer container. + /// + public string? colorScheme { get; set; } + /// + ///The footer content settings. + /// + public CheckoutBrandingFooterContent? content { get; set; } + /// + ///The divided setting. + /// + public bool? divided { get; set; } + /// + ///The padding of the footer container. + /// + public string? padding { get; set; } + /// + ///The footer position. + /// + public string? 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 string? 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 setting that overrides all other [corner radius](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius) + ///customizations. + /// + public string? cornerRadius { get; set; } + /// + ///The global typography customizations. + /// + public CheckoutBrandingTypographyStyleGlobal? typography { get; set; } + } + + /// + ///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 + { + /// + ///Set the global corner radius override to 0px (square corners). + /// + NONE, + } + + /// + ///The header customizations. + /// + public class CheckoutBrandingHeader : GraphQLObject + { + /// + ///The header alignment. + /// + public string? alignment { get; set; } + /// + ///The background image of the header. + /// + 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 string? colorScheme { get; set; } + /// + ///The divided setting. + /// + public bool? divided { get; set; } + /// + ///The store logo. + /// + public CheckoutBrandingLogo? logo { get; set; } + /// + ///The padding of the header container. + /// + public string? padding { get; set; } + /// + ///The header position. + /// + public string? position { get; set; } + } + + /// + ///The possible header alignments. + /// + public enum CheckoutBrandingHeaderAlignment + { + /// + ///Start alignment. + /// + START, + /// + ///Center alignment. + /// + CENTER, + /// + ///End alignment. + /// + 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 string? 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. + /// + public enum CheckoutBrandingHeaderPosition + { + /// + ///Inline position. + /// + INLINE, + /// + ///Secondary inline position. + /// + INLINE_SECONDARY, + /// + ///Start position. + /// + START, + } + + /// + ///The heading level customizations. + /// + public class CheckoutBrandingHeadingLevel : GraphQLObject + { + /// + ///The typography customizations used for headings. + /// + public CheckoutBrandingTypographyStyle? typography { get; set; } + } + + /// + ///A checkout branding image. + /// + public class CheckoutBrandingImage : GraphQLObject + { + /// + ///The image details. + /// + public Image? image { get; set; } + } + + /// + ///Possible values for the label position. + /// + public enum CheckoutBrandingLabelPosition + { + /// + ///The Inside label position. + /// + INSIDE, + /// + ///The Outside label position. + /// + OUTSIDE, + } + + /// + ///The store logo customizations. + /// + public class CheckoutBrandingLogo : GraphQLObject + { + /// + ///The logo image. + /// + public Image? image { get; set; } + /// + ///The maximum width of the logo. + /// + public int? maxWidth { get; set; } + /// + ///The visibility of the logo. + /// + public string? visibility { get; set; } + } + + /// + ///The main container customizations. + /// + public class CheckoutBrandingMain : GraphQLObject + { + /// + ///The background image of the main container. + /// + public CheckoutBrandingImage? backgroundImage { get; set; } + /// + ///The selected color scheme of the main container. + /// + public string? colorScheme { get; set; } + /// + ///The main container's divider style and visibility. + /// + public CheckoutBrandingContainerDivider? divider { 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 string? background { get; set; } + /// + ///The border for the main sections. + /// + public string? border { get; set; } + /// + ///The border style of the main sections. + /// + public string? borderStyle { get; set; } + /// + ///The border width of the main sections. + /// + public string? borderWidth { get; set; } + /// + ///The selected color scheme of the main sections. + /// + public string? colorScheme { get; set; } + /// + ///The corner radius of the main sections. + /// + public string? cornerRadius { get; set; } + /// + ///The padding of the main sections. + /// + public string? padding { get; set; } + /// + ///The shadow of the main sections. + /// + public string? shadow { get; set; } + } + + /// + ///The merchandise thumbnails customizations. + /// + public class CheckoutBrandingMerchandiseThumbnail : GraphQLObject + { + /// + ///The border used for merchandise thumbnails. + /// + public string? border { get; set; } + /// + ///The corner radius used for merchandise thumbnails. + /// + public string? cornerRadius { get; set; } + } + + /// + ///The order summary customizations. + /// + public class CheckoutBrandingOrderSummary : GraphQLObject + { + /// + ///The background image of the order summary container. + /// + public CheckoutBrandingImage? backgroundImage { get; set; } + /// + ///The selected color scheme of the order summary container. + /// + public string? colorScheme { get; set; } + /// + ///The order summary container's divider style and visibility. + /// + public CheckoutBrandingContainerDivider? divider { 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 string? background { get; set; } + /// + ///The border for the order summary sections. + /// + public string? border { get; set; } + /// + ///The border style of the order summary sections. + /// + public string? borderStyle { get; set; } + /// + ///The border width of the order summary sections. + /// + public string? borderWidth { get; set; } + /// + ///The selected color scheme of the order summary sections. + /// + public string? colorScheme { get; set; } + /// + ///The corner radius of the order summary sections. + /// + public string? cornerRadius { get; set; } + /// + ///The padding of the order summary sections. + /// + public string? padding { get; set; } + /// + ///The shadow of the order summary sections. + /// + public string? shadow { get; set; } + } + + /// + ///The selects customizations. + /// + public class CheckoutBrandingSelect : GraphQLObject + { + /// + ///The border used for selects. + /// + public string? border { get; set; } + /// + ///The typography customizations used for selects. + /// + 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. + /// + public class CheckoutBrandingShopifyFont : GraphQLObject, ICheckoutBrandingFont + { + /// + ///The font sources. + /// + public string? sources { get; set; } + /// + ///The font weight. + /// + public int? weight { get; set; } + } + + /// + ///Possible values for the simple border. + /// + public enum CheckoutBrandingSimpleBorder + { + /// + ///The None simple border. + /// + NONE, + /// + ///The Full simple border. + /// + FULL, + } + + /// + ///Possible values for the spacing. + /// + public enum CheckoutBrandingSpacing + { + /// + ///The None spacing. + /// + NONE, + /// + ///The Extra Tight spacing. + /// + EXTRA_TIGHT, + /// + ///The Tight spacing. + /// + TIGHT, + /// + ///The Base spacing. + /// + BASE, + /// + ///The Loose spacing. + /// + LOOSE, + /// + ///The Extra Loose spacing. + /// + EXTRA_LOOSE, + } + + /// + ///The spacing between UI elements. + /// + public enum CheckoutBrandingSpacingKeyword + { + /// + ///The None spacing. + /// + NONE, + /// + ///The Base spacing. + /// + BASE, + /// + ///The Small spacing. + /// + SMALL, + /// + ///The Small 100 spacing. + /// + SMALL_100, + /// + ///The Small 200 spacing. + /// + SMALL_200, + /// + ///The Small 300 spacing. + /// + SMALL_300, + /// + ///The Small 400 spacing. + /// + SMALL_400, + /// + ///The Small 500 spacing. + /// + SMALL_500, + /// + ///The Large spacing. + /// + LARGE, + /// + ///The Large 100 spacing. + /// + LARGE_100, + /// + ///The Large 200 spacing. + /// + LARGE_200, + /// + ///The Large 300 spacing. + /// + LARGE_300, + /// + ///The Large 400 spacing. + /// + LARGE_400, + /// + ///The Large 500 spacing. + /// + LARGE_500, + } + + /// + ///The text fields customizations. + /// + public class CheckoutBrandingTextField : GraphQLObject + { + /// + ///The border used for text fields. + /// + public string? border { get; set; } + /// + ///The typography customizations used for text fields. + /// + public CheckoutBrandingTypographyStyle? typography { get; set; } + } + + /// + ///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 + { + /// + ///A font group used for most components such as text, buttons and form controls. + /// + public CheckoutBrandingFontGroup? primary { get; set; } + /// + ///A font group used for heading components by default. + /// + public CheckoutBrandingFontGroup? secondary { get; set; } + /// + ///The font size design system (base size in pixels and scaling between different sizes). + /// + public CheckoutBrandingFontSize? size { get; set; } + } + + /// + ///The font selection. + /// + public enum CheckoutBrandingTypographyFont + { + /// + ///The primary font. + /// + PRIMARY, + /// + ///The secondary font. + /// + SECONDARY, + } + + /// + ///Possible values for the typography kerning. + /// + public enum CheckoutBrandingTypographyKerning + { + /// + ///Base or default kerning. + /// + BASE, + /// + ///Loose kerning, leaving more space than the default in between characters. + /// + LOOSE, + /// + ///Extra loose kerning, leaving even more space in between characters. + /// + EXTRA_LOOSE, + } + + /// + ///Possible values for the typography letter case. + /// + public enum CheckoutBrandingTypographyLetterCase + { + /// + ///All letters are is lower case. + /// + LOWER, + /// + ///No letter casing applied. + /// + NONE, + /// + ///Capitalize the first letter of each word. + /// + TITLE, + /// + ///All letters are uppercase. + /// + UPPER, + } + + /// + ///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. Example: 10px. + /// + EXTRA_SMALL, + /// + ///The small font size. Example: 12px. + /// + SMALL, + /// + ///The base font size. Example: 14px. + /// + BASE, + /// + ///The medium font size. Example: 16px. + /// + MEDIUM, + /// + ///The large font size. Example: 19px. + /// + LARGE, + /// + ///The extra large font size. Example: 21px. + /// + EXTRA_LARGE, + /// + ///The extra extra large font size. Example: 24px. + /// + EXTRA_EXTRA_LARGE, + } + + /// + ///The typography customizations. + /// + public class CheckoutBrandingTypographyStyle : GraphQLObject + { + /// + ///The font. + /// + public string? font { get; set; } + /// + ///The kerning. + /// + public string? kerning { get; set; } + /// + ///The letter case. + /// + public string? letterCase { get; set; } + /// + ///The font size. + /// + public string? size { get; set; } + /// + ///The font weight. + /// + public string? weight { get; set; } + } + + /// + ///The global typography customizations. + /// + public class CheckoutBrandingTypographyStyleGlobal : GraphQLObject + { + /// + ///The kerning. + /// + public string? kerning { get; set; } + /// + ///The letter case. + /// + public string? letterCase { get; set; } + } + + /// + ///Possible values for the font weight. + /// + public enum CheckoutBrandingTypographyWeight + { + /// + ///The base weight. + /// + BASE, + /// + ///The bold weight. + /// + BOLD, + } + + /// + ///Return type for `checkoutBrandingUpsert` mutation. + /// + public class CheckoutBrandingUpsertPayload : GraphQLObject + { + /// + ///Returns the new checkout branding settings. + /// + public CheckoutBranding? checkoutBranding { 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 `CheckoutBrandingUpsert`. + /// + public class CheckoutBrandingUpsertUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CheckoutBrandingUpsertUserError`. + /// + public enum CheckoutBrandingUpsertUserErrorCode + { + /// + ///Unexpected internal error happened. + /// + 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. + /// + public class CheckoutProfile : GraphQLObject, INode + { + /// + ///The date and time when the checkout profile was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The date and time when the checkout profile was last edited. + /// + public DateTime? editedAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the checkout profile is published or not. + /// + public bool? isPublished { get; set; } + /// + ///The profile name. + /// + public string? name { get; set; } + /// + ///Whether the checkout profile Thank You Page and Order Status Page are actively using extensibility or not. + /// + public bool? typOspPagesActive { get; set; } + /// + ///The date and time when the checkout profile was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CheckoutProfiles. + /// + public class CheckoutProfileConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CheckoutProfileEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CheckoutProfile and a cursor during pagination. + /// + public class CheckoutProfileEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CheckoutProfileEdge. + /// + public CheckoutProfile? node { get; set; } + } + + /// + ///The set of valid sort keys for the CheckoutProfile query. + /// + public enum CheckoutProfileSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `edited_at` value. + /// + EDITED_AT, + /// + ///Sort by the `is_published` value. + /// + IS_PUBLISHED, + /// + ///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, + } + + /// + ///The set of valid sort keys for the CodeDiscount query. + /// + public enum CodeDiscountSortKeys + { + /// + ///Sort by the `starts_at` value. + /// + STARTS_AT, + /// + ///Sort by the `ends_at` value. + /// + ENDS_AT, + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories. + /// + ///Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections. + /// + ///Collections can also be created for a custom group of products. These are called custom or manual collections. + /// + public class Collection : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, INode, IPublishable, IMetafieldReference, IMetafieldReferencer + { + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + 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. + /// + public string? description { get; set; } + /// + ///The description of the collection, including any HTML tags and formatting. This content is typically displayed to customers, such as on an online store, depending on the theme. + /// + public string? descriptionHtml { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///Information about the collection that's provided through resource feedback. + /// + public ResourceFeedback? feedback { get; set; } + /// + ///A unique string that identifies the collection. If a handle isn't specified when a collection is created, it's automatically generated from the collection's original title, and typically includes words from the title separated by hyphens. For example, a collection that was created with the title `Summer Catalog 2022` might have the handle `summer-catalog-2022`. + /// + ///If the title is changed, the handle doesn't automatically change. + /// + ///The handle can be used in themes by the Liquid templating language to refer to the collection, but using the ID is preferred because it never changes. + /// + public string? handle { get; set; } + /// + ///Whether the collection includes the specified product. + /// + public bool? hasProduct { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated with the collection. + /// + public Image? image { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 products that are included in the collection. + /// + public ProductConnection? products { get; set; } + /// + ///The number of products in the collection. + /// + public Count? productsCount { get; set; } + + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + [Obsolete("Use `resourcePublicationsCount` instead.")] + public int? publicationCount { get; set; } + + /// + ///The channels where the collection is published. + /// + [Obsolete("Use `resourcePublications` instead.")] + public CollectionPublicationConnection? publications { get; set; } + + /// + ///Whether the resource is published to a specific channel. + /// + [Obsolete("Use `publishedOnPublication` instead.")] + public bool? publishedOnChannel { get; set; } + + /// + ///Whether the resource is published to a + ///[channel](https://shopify.dev/docs/api/admin-graphql/latest/objects/Channel). + ///For example, the resource might be published to the online store channel. + /// + [Obsolete("Use `publishedOnCurrentPublication` instead.")] + public bool? publishedOnCurrentChannel { get; set; } + /// + ///Whether the resource is published to the app's + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + ///For example, the resource might be published to the app's online store channel. + /// + public bool? publishedOnCurrentPublication { get; set; } + /// + ///Whether the resource is published to a specified + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public bool? publishedOnPublication { get; set; } + /// + ///The list of resources that are published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationConnection? resourcePublications { get; set; } + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + public Count? resourcePublicationsCount { get; set; } + /// + ///The list of resources that are either published or staged to be published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationV2Connection? resourcePublicationsV2 { get; set; } + /// + ///For a smart (automated) collection, specifies the rules that determine whether a product is included. + /// + public CollectionRuleSet? ruleSet { get; set; } + /// + ///If the default SEO fields for page title and description have been modified, contains the modified information. + /// + public SEO? seo { get; set; } + /// + ///The order in which the products in the collection are displayed by default in the Shopify admin and in sales channels, such as an online store. + /// + public string? sortOrder { get; set; } + + /// + ///The Storefront GraphQL API ID of the `Collection`. + /// + ///As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead. + /// + [Obsolete("Use `id` instead.")] + public string? storefrontId { get; set; } + /// + ///The suffix of the Liquid template being used to show the collection in an online store. For example, if the value is `custom`, then the collection is using the `collection.custom.liquid` template. If the value is `null`, then the collection is using the default `collection.liquid` template. + /// + public string? templateSuffix { get; set; } + /// + ///The name of the collection. It's displayed in the Shopify admin and is typically displayed in sales channels, such as an online store. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + + /// + ///The list of channels that the resource is not published to. + /// + [Obsolete("Use `unpublishedPublications` instead.")] + public ChannelConnection? unpublishedChannels { get; set; } + /// + ///The list of [publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that the resource isn't published to. + /// + public PublicationConnection? unpublishedPublications { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the collection was last modified. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `collectionAddProducts` mutation. + /// + public class CollectionAddProductsPayload : GraphQLObject + { + /// + ///The updated collection. Returns `null` if an error is raised. + /// + public Collection? collection { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `collectionAddProductsV2` mutation. + /// + public class CollectionAddProductsV2Payload : GraphQLObject + { + /// + ///The asynchronous job adding the products. + /// + public Job? job { 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 `CollectionAddProductsV2`. + /// + public class CollectionAddProductsV2UserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CollectionAddProductsV2UserError`. + /// + public enum CollectionAddProductsV2UserErrorCode + { + /// + ///Can't manually add products to a smart collection. + /// + CANT_ADD_TO_SMART_COLLECTION, + /// + ///Collection doesn't exist. + /// + COLLECTION_DOES_NOT_EXIST, + } + + /// + ///An auto-generated type for paginating through multiple Collections. + /// + public class CollectionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CollectionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `collectionCreate` mutation. + /// + public class CollectionCreatePayload : GraphQLObject + { + /// + ///The collection that has been created. + /// + public Collection? collection { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `collectionDelete` mutation. + /// + public class CollectionDeletePayload : GraphQLObject + { + /// + ///The ID of the collection that was deleted. Returns `null` if the collection doesn't exist. + /// + public string? deletedCollectionId { get; set; } + /// + ///The shop associated with the collection. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Collection and a cursor during pagination. + /// + public class CollectionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CollectionEdge. + /// + public Collection? node { get; set; } + } + + /// + ///Represents the publications where a collection is published. + /// + public class CollectionPublication : GraphQLObject + { + /// + ///The channel where the collection will be published. + /// + [Obsolete("Use `publication` instead.")] + public Channel? channel { get; set; } + /// + ///The collection to be published on the publication. + /// + public Collection? collection { get; set; } + /// + ///Whether the publication is published or not. + /// + public bool? isPublished { get; set; } + /// + ///The publication where the collection will be published. + /// + public Publication? publication { get; set; } + /// + ///The date that the publication was or is going to be published. + /// + public DateTime? publishDate { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CollectionPublications. + /// + public class CollectionPublicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CollectionPublicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CollectionPublication and a cursor during pagination. + /// + public class CollectionPublicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CollectionPublicationEdge. + /// + public CollectionPublication? node { get; set; } + } + + /// + ///Return type for `collectionPublish` mutation. + /// + public class CollectionPublishPayload : GraphQLObject + { + /// + ///The published collection. + /// + public Collection? collection { get; set; } + /// + ///The channels where the collection has been published. + /// + public IEnumerable? collectionPublications { get; set; } + /// + ///The shop associated with the collection. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `collectionRemoveProducts` mutation. + /// + public class CollectionRemoveProductsPayload : GraphQLObject + { + /// + ///The asynchronous job removing 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 `collectionReorderProducts` mutation. + /// + public class CollectionReorderProductsPayload : GraphQLObject + { + /// + ///The asynchronous job reordering the products. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents at rule that's used to assign products to a collection. + /// + public class CollectionRule : GraphQLObject + { + /// + ///The attribute that the rule focuses on. For example, `title` or `product_type`. + /// + public string? column { get; set; } + /// + ///The value that the operator is applied to. For example, `Hats`. + /// + public string? condition { get; set; } + /// + ///The value that the operator is applied to. + /// + public ICollectionRuleConditionObject? conditionObject { get; set; } + /// + ///The type of operator that the rule is based on. For example, `equals`, `contains`, or `not_equals`. + /// + public string? relation { get; set; } + } + + /// + ///Specifies the taxonomy category to used for the condition. + /// + public class CollectionRuleCategoryCondition : GraphQLObject, ICollectionRuleConditionObject + { + /// + ///The taxonomy category used as condition. + /// + public TaxonomyCategory? value { get; set; } + } + + /// + ///Specifies the attribute of a product being used to populate the smart collection. + /// + public enum CollectionRuleColumn + { + /// + ///The [`tag`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-producttype) attribute. + /// + TAG, + /// + ///The [`title`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-title) attribute. + /// + TITLE, + /// + ///The [`type`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-producttype) attribute. + /// + TYPE, + /// + ///The [`product_taxonomy_node_id`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-productcategory) attribute. + /// + PRODUCT_TAXONOMY_NODE_ID, + /// + ///The [`product_category_id`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-category) attribute. + /// + PRODUCT_CATEGORY_ID, + /// + ///The [`vendor`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-vendor) attribute. + /// + VENDOR, + /// + ///The [`variant_price`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-price) attribute. + /// + VARIANT_PRICE, + /// + ///An attribute evaluated based on the `compare_at_price` attribute of the product's variants. + ///With `is_set` relation, the rule matches products with at least one variant with `compare_at_price` set. + ///With `is_not_set` relation, the rule matches matches products with at least one variant with `compare_at_price` not set. + /// + IS_PRICE_REDUCED, + /// + ///The [`variant_compare_at_price`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-compareatprice) attribute. + /// + VARIANT_COMPARE_AT_PRICE, + /// + ///The [`variant_weight`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-weight) attribute. + /// + VARIANT_WEIGHT, + /// + ///The [`variant_inventory`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-inventoryquantity) attribute. + /// + VARIANT_INVENTORY, + /// + ///The [`variant_title`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-title) attribute. + /// + VARIANT_TITLE, + /// + ///This category includes metafield definitions that have the `useAsCollectionCondition` flag set to true. + /// + PRODUCT_METAFIELD_DEFINITION, + /// + ///This category includes metafield definitions that have the `useAsCollectionCondition` flag set to true. + /// + VARIANT_METAFIELD_DEFINITION, + } + + /// + ///Specifies object for the condition of the rule. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CollectionRuleCategoryCondition), typeDiscriminator: "CollectionRuleCategoryCondition")] + [JsonDerivedType(typeof(CollectionRuleMetafieldCondition), typeDiscriminator: "CollectionRuleMetafieldCondition")] + [JsonDerivedType(typeof(CollectionRuleProductCategoryCondition), typeDiscriminator: "CollectionRuleProductCategoryCondition")] + [JsonDerivedType(typeof(CollectionRuleTextCondition), typeDiscriminator: "CollectionRuleTextCondition")] + public interface ICollectionRuleConditionObject : IGraphQLObject + { + public CollectionRuleCategoryCondition? AsCollectionRuleCategoryCondition() => this as CollectionRuleCategoryCondition; + public CollectionRuleMetafieldCondition? AsCollectionRuleMetafieldCondition() => this as CollectionRuleMetafieldCondition; + public CollectionRuleProductCategoryCondition? AsCollectionRuleProductCategoryCondition() => this as CollectionRuleProductCategoryCondition; + public CollectionRuleTextCondition? AsCollectionRuleTextCondition() => this as CollectionRuleTextCondition; + } + + /// + ///This object defines all columns and allowed relations that can be used in rules for smart collections to automatically include the matching products. + /// + public class CollectionRuleConditions : GraphQLObject + { + /// + ///Allowed relations of the rule. + /// + public IEnumerable? allowedRelations { get; set; } + /// + ///Most commonly used relation for this rule. + /// + public string? defaultRelation { get; set; } + /// + ///Additional attributes defining the rule. + /// + public ICollectionRuleConditionsRuleObject? ruleObject { get; set; } + /// + ///Type of the rule. + /// + public string? ruleType { get; set; } + } + + /// + ///Specifies object with additional rule attributes. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CollectionRuleMetafieldCondition), typeDiscriminator: "CollectionRuleMetafieldCondition")] + public interface ICollectionRuleConditionsRuleObject : IGraphQLObject + { + public CollectionRuleMetafieldCondition? AsCollectionRuleMetafieldCondition() => this as CollectionRuleMetafieldCondition; + /// + ///The metafield definition associated with the condition. + /// + public MetafieldDefinition? metafieldDefinition { get; set; } + } + + /// + ///Identifies a metafield definition used as a rule for the smart collection. + /// + public class CollectionRuleMetafieldCondition : GraphQLObject, ICollectionRuleConditionObject, ICollectionRuleConditionsRuleObject + { + /// + ///The metafield definition associated with the condition. + /// + public MetafieldDefinition? metafieldDefinition { get; set; } + } + + /// + ///Specifies the condition for a Product Category field. + /// + public class CollectionRuleProductCategoryCondition : GraphQLObject, ICollectionRuleConditionObject + { + /// + ///The value of the condition. + /// + public ProductTaxonomyNode? value { get; set; } + } + + /// + ///Specifies the relationship between the `column` and the `condition`. + /// + public enum CollectionRuleRelation + { + /// + ///The attribute contains the condition. + /// + CONTAINS, + /// + ///The attribute ends with the condition. + /// + ENDS_WITH, + /// + ///The attribute is equal to the condition. + /// + EQUALS, + /// + ///The attribute is greater than the condition. + /// + GREATER_THAN, + /// + ///The attribute is not set (equal to `null`). + /// + IS_NOT_SET, + /// + ///The attribute is set (not equal to `null`). + /// + IS_SET, + /// + ///The attribute is less than the condition. + /// + LESS_THAN, + /// + ///The attribute does not contain the condition. + /// + NOT_CONTAINS, + /// + ///The attribute does not equal the condition. + /// + NOT_EQUALS, + /// + ///The attribute starts with the condition. + /// + STARTS_WITH, + } + + /// + ///The set of rules that are used to determine which products are included in the collection. + /// + public class CollectionRuleSet : GraphQLObject + { + /// + ///Whether products must match any or all of the rules to be included in the collection. + ///If true, then products must match at least one of the rules to be included in the collection. + ///If false, then products must match all of the rules to be included in the collection. + /// + public bool? appliedDisjunctively { get; set; } + /// + ///The rules used to assign products to the collection. + /// + public IEnumerable? rules { get; set; } + } + + /// + ///Specifies the condition for a text field. + /// + public class CollectionRuleTextCondition : GraphQLObject, ICollectionRuleConditionObject + { + /// + ///The value of the condition. + /// + public string? value { get; set; } + } + + /// + ///The set of valid sort keys for the Collection query. + /// + public enum CollectionSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Specifies the sort order for the products in the collection. + /// + public enum CollectionSortOrder + { + /// + ///Alphabetically, in ascending order (A - Z). + /// + ALPHA_ASC, + /// + ///Alphabetically, in descending order (Z - A). + /// + ALPHA_DESC, + /// + ///By best-selling products. + /// + BEST_SELLING, + /// + ///By date created, in ascending order (oldest - newest). + /// + CREATED, + /// + ///By date created, in descending order (newest - oldest). + /// + CREATED_DESC, + /// + ///In the order set manually by the merchant. + /// + MANUAL, + /// + ///By price, in ascending order (lowest - highest). + /// + PRICE_ASC, + /// + ///By price, in descending order (highest - lowest). + /// + PRICE_DESC, + } + + /// + ///Return type for `collectionUnpublish` mutation. + /// + public class CollectionUnpublishPayload : GraphQLObject + { + /// + ///The collection that has been unpublished. + /// + public Collection? collection { get; set; } + /// + ///The shop associated with the collection. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `collectionUpdate` mutation. + /// + public class CollectionUpdatePayload : GraphQLObject + { + /// + ///The updated collection. + /// + public Collection? collection { get; set; } + /// + ///The asynchronous job updating the products based on the new rule set. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A combined listing of products. + /// + public class CombinedListing : GraphQLObject + { + /// + ///A list of child products in the combined listing. + /// + public CombinedListingChildConnection? combinedListingChildren { get; set; } + /// + ///The parent product. + /// + public Product? parentProduct { get; set; } + } + + /// + ///A child of a combined listing. + /// + public class CombinedListingChild : GraphQLObject + { + /// + ///The parent variant. + /// + public ProductVariant? parentVariant { get; set; } + /// + ///The child product. + /// + public Product? product { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CombinedListingChildren. + /// + public class CombinedListingChildConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CombinedListingChildEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CombinedListingChild and a cursor during pagination. + /// + public class CombinedListingChildEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CombinedListingChildEdge. + /// + public CombinedListingChild? node { get; set; } + } + + /// + ///Return type for `combinedListingUpdate` mutation. + /// + public class CombinedListingUpdatePayload : GraphQLObject + { + /// + ///The parent product. + /// + public Product? product { 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 `CombinedListingUpdate`. + /// + public class CombinedListingUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CombinedListingUpdateUserError`. + /// + public enum CombinedListingUpdateUserErrorCode + { + /// + ///Unable to add duplicated products. + /// + CANNOT_HAVE_DUPLICATED_PRODUCTS, + /// + ///Unable to add a product that is a parent. + /// + CANNOT_HAVE_PARENT_AS_CHILD, + /// + ///Option values cannot be repeated. + /// + CANNOT_HAVE_REPEATED_OPTION_VALUES, + /// + ///Unable to add products with repeated options. + /// + CANNOT_HAVE_REPEATED_OPTIONS, + /// + ///Unable to add options values that are already in use. + /// + CANT_ADD_OPTIONS_VALUES_IF_ALREADY_EXISTS, + /// + ///Combined listings feature is not enabled. + /// + COMBINED_LISTINGS_NOT_ENABLED, + /// + ///Cannot perform edit and remove on same products. + /// + EDIT_AND_REMOVE_ON_SAME_PRODUCTS, + /// + ///Unable to add products. + /// + FAILED_TO_ADD_PRODUCTS, + /// + ///Unable to remove products. + /// + FAILED_TO_REMOVE_PRODUCTS, + /// + ///Unable to update products. + /// + FAILED_TO_UPDATE_PRODUCTS, + /// + ///An option linked to a metafield cannot be linked to a different metafield. + /// + LINKED_METAFIELD_CANNOT_BE_CHANGED, + /// + ///Linked metafield value missing from `optionsAndValues` field. + /// + LINKED_METAFIELD_VALUE_MISSING, + /// + ///The same metafield cannot be linked to multiple options. + /// + LINKED_METAFIELDS_CANNOT_BE_REPEATED, + /// + ///Linked options are currently not supported for this shop. + /// + LINKED_OPTIONS_NOT_SUPPORTED_FOR_SHOP, + /// + ///Selected option values cannot be empty. + /// + MUST_HAVE_SELECTED_OPTION_VALUES, + /// + ///Unable to add products with blank option names. + /// + OPTION_NAME_CANNOT_BE_BLANK, + /// + ///Option does not exist. + /// + OPTION_NOT_FOUND, + /// + ///Unable to add products with different options. + /// + OPTIONS_MUST_BE_EQUAL_TO_THE_OTHER_COMPONENTS, + /// + ///Unable to update options with blank option values. + /// + OPTION_VALUES_CANNOT_BE_BLANK, + /// + ///Unable to update options with no option values. + /// + OPTION_VALUES_CANNOT_BE_EMPTY, + /// + ///Unable to update components for a product that isn't a combined listing. + /// + PARENT_PRODUCT_MUST_BE_A_COMBINED_LISTING, + /// + ///Unable to add a product that is already a child. + /// + PRODUCT_IS_ALREADY_A_CHILD, + /// + ///Failed to remove mebmership due to invalid input. + /// + PRODUCT_MEMBERSHIP_NOT_FOUND, + /// + ///Unable to add products that do not exist. + /// + PRODUCT_NOT_FOUND, + /// + ///The title cannot be longer than 255 characters. + /// + TITLE_TOO_LONG, + /// + ///You have reached the maximum number of variants across all products for an individual combined listing. + /// + TOO_MANY_VARIANTS, + /// + ///You have reached the maximum number of products that can be added to an individual combined listing. + /// + TOO_MANY_PRODUCTS, + /// + ///An unexpected error occurred. + /// + UNEXPECTED_ERROR, + } + + /// + ///The role of the combined listing. + /// + public enum CombinedListingsRole + { + /// + ///The product is the parent of a combined listing. + /// + PARENT, + /// + ///The product is the child of a combined listing. + /// + CHILD, + } + + /// + ///A comment on an article. + /// + public class Comment : GraphQLObject, IHasEvents, INode + { + /// + ///The article associated with the comment. + /// + public Article? article { get; set; } + /// + ///The comment’s author. + /// + public CommentAuthor? author { get; set; } + /// + ///The content of the comment. + /// + public string? body { get; set; } + /// + ///The content of the comment, complete with HTML formatting. + /// + public string? bodyHtml { get; set; } + /// + ///The date and time when the comment was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The IP address of the commenter. + /// + public string? ip { get; set; } + /// + ///Whether or not the comment is published. + /// + public bool? isPublished { get; set; } + /// + ///The date and time when the comment was published. + /// + public DateTime? publishedAt { get; set; } + /// + ///The status of the comment. + /// + public string? status { get; set; } + /// + ///The date and time when the comment was last updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The user agent of the commenter. + /// + public string? userAgent { get; set; } + } + + /// + ///Return type for `commentApprove` mutation. + /// + public class CommentApprovePayload : GraphQLObject + { + /// + ///The comment that was approved. + /// + public Comment? comment { 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 `CommentApprove`. + /// + public class CommentApproveUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CommentApproveUserError`. + /// + public enum CommentApproveUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///The author of a comment. + /// + public class CommentAuthor : GraphQLObject + { + /// + ///The author's email. + /// + public string? email { get; set; } + /// + ///The author’s name. + /// + public string? name { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Comments. + /// + public class CommentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CommentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `commentDelete` mutation. + /// + public class CommentDeletePayload : GraphQLObject + { + /// + ///The ID of the comment that was deleted. + /// + public string? deletedCommentId { 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 `CommentDelete`. + /// + public class CommentDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CommentDeleteUserError`. + /// + public enum CommentDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///An auto-generated type which holds one Comment and a cursor during pagination. + /// + public class CommentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CommentEdge. + /// + public Comment? node { get; set; } + } + + /// + ///Comment events are generated by staff members of a shop. + ///They are created when a staff member adds a comment to the timeline of an order, draft order, customer, or transfer. + /// + public class CommentEvent : GraphQLObject, IEvent, INode + { + /// + ///The action that occured. + /// + public string? action { get; set; } + /// + ///The name of the app that created the event. + /// + public string? appTitle { get; set; } + /// + ///The attachments associated with the comment event. + /// + public IEnumerable? attachments { get; set; } + /// + ///Whether the event was created by an app. + /// + public bool? attributeToApp { get; set; } + /// + ///Whether the event was caused by an admin user. + /// + public bool? attributeToUser { get; set; } + /// + ///The name of the user that authored the comment event. + /// + public StaffMember? author { get; set; } + /// + ///Whether the comment event can be deleted. If true, then the comment event can be deleted. + /// + public bool? canDelete { get; set; } + /// + ///Whether the comment event can be edited. If true, then the comment event can be edited. + /// + public bool? canEdit { get; set; } + /// + ///The date and time when the event was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Whether the event is critical. + /// + public bool? criticalAlert { get; set; } + /// + ///Whether the comment event has been edited. If true, then the comment event has been edited. + /// + public bool? edited { get; set; } + /// + ///The object reference associated with the comment event. For example, a product or discount). + /// + public ICommentEventEmbed? embed { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Human readable text that describes the event. + /// + public string? message { get; set; } + /// + ///The raw body of the comment event. + /// + public string? rawMessage { get; set; } + /// + ///The parent subject to which the comment event belongs. + /// + public ICommentEventSubject? subject { get; set; } + } + + /// + ///A file attachment associated to a comment event. + /// + public class CommentEventAttachment : GraphQLObject + { + /// + ///The file extension of the comment event attachment, indicating the file format. + /// + public string? fileExtension { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image attached to the comment event. + /// + public Image? image { get; set; } + /// + ///The filename of the comment event attachment. + /// + public string? name { get; set; } + /// + ///The size of the attachment. + /// + public int? size { get; set; } + /// + ///The URL of the attachment. + /// + public string? url { get; set; } + } + + /// + ///The main embed of a comment event. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + public interface ICommentEventEmbed : IGraphQLObject + { + public Customer? AsCustomer() => this as Customer; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Order? AsOrder() => this as Order; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + /// + ///The date and time when the customer was added to the store. + /// + public DateTime? createdAt { get; set; } + /// + ///A list of events associated with the customer. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time when the customer was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///The subject line of a comment event. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(PriceRule), typeDiscriminator: "PriceRule")] + public interface ICommentEventSubject : IGraphQLObject + { + public Company? AsCompany() => this as Company; + public CompanyLocation? AsCompanyLocation() => this as CompanyLocation; + public Customer? AsCustomer() => this as Customer; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Order? AsOrder() => this as Order; + public PriceRule? AsPriceRule() => this as PriceRule; + /// + ///Whether the timeline subject has a timeline comment. If true, then a timeline comment exists. + /// + public bool? hasTimelineComment { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + } + + /// + ///Return type for `commentNotSpam` mutation. + /// + public class CommentNotSpamPayload : GraphQLObject + { + /// + ///The comment that was marked as not spam. + /// + public Comment? comment { 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 `CommentNotSpam`. + /// + public class CommentNotSpamUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CommentNotSpamUserError`. + /// + public enum CommentNotSpamUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///Possible comment policies for a blog. + /// + public enum CommentPolicy + { + /// + ///Readers can post comments to blog articles without moderation. + /// + AUTO_PUBLISHED, + /// + ///Readers cannot post comments to blog articles. + /// + CLOSED, + /// + ///Readers can post comments to blog articles, but comments must be moderated before they appear. + /// + MODERATED, + } + + /// + ///The set of valid sort keys for the Comment query. + /// + public enum CommentSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Return type for `commentSpam` mutation. + /// + public class CommentSpamPayload : GraphQLObject + { + /// + ///The comment that was marked as spam. + /// + public Comment? comment { 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 `CommentSpam`. + /// + public class CommentSpamUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CommentSpamUserError`. + /// + public enum CommentSpamUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///The status of a comment. + /// + public enum CommentStatus + { + /// + ///The comment is marked as spam. + /// + SPAM, + /// + ///The comment has been removed. + /// + REMOVED, + /// + ///The comment is published. + /// + PUBLISHED, + /// + ///The comment is unapproved. + /// + UNAPPROVED, + /// + ///The comment is pending approval. + /// + PENDING, + } + + /// + ///Return type for `companiesDelete` mutation. + /// + public class CompaniesDeletePayload : GraphQLObject + { + /// + ///A list of IDs of the deleted companies. + /// + public IEnumerable? deletedCompanyIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents information about a company which is also a customer of the shop. + /// + public class Company : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INavigable, INode, IMetafieldReference, 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. + /// + public CompanyContactRoleConnection? contactRoles { get; set; } + /// + ///The list of contacts in the company. + /// + 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; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company became the customer. + /// + public DateTime? customerSince { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The role proposed by default for a contact at the company. + /// + public CompanyContactRole? defaultRole { get; set; } + /// + ///The list of the company's draft orders. + /// + public DraftOrderConnection? draftOrders { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A unique externally-supplied ID for the company. + /// + public string? externalId { get; set; } + /// + ///Whether the merchant added a timeline comment to the company. + /// + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The lifetime duration of the company, since it became a customer of the shop. Examples: `2 days`, `3 months`, `1 year`. + /// + public string? lifetimeDuration { 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; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The name of the company. + /// + public string? name { get; set; } + /// + ///A note about the company. + /// + public string? note { 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. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 total amount spent by this company, across all its locations. + /// + public MoneyV2? totalSpent { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was last modified. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Represents a billing or shipping address for a company location. + /// + public class CompanyAddress : GraphQLObject, INode + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the company. + /// + public string? companyName { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + /// + ///The two-letter code for the country of the address. + ///For example, US. + /// + public string? countryCode { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company address was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The first name of the recipient. + /// + public string? firstName { get; set; } + /// + ///The formatted version of the address. + /// + public IEnumerable? formattedAddress { get; set; } + /// + ///A comma-separated list of the values for city, province, and country. + /// + public string? formattedArea { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The last name of the recipient. + /// + public string? lastName { get; set; } + /// + ///A unique phone number for the customer. + ///Formatted using E.164 standard. For example, _+16135551111_. + /// + public string? phone { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The identity of the recipient e.g. 'Receiving Department'. + /// + public string? recipient { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company address was last updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + /// + ///The alphanumeric code for the region. + ///For example, ON. + /// + public string? zoneCode { get; set; } + } + + /// + ///Return type for `companyAddressDelete` mutation. + /// + public class CompanyAddressDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted address. + /// + public string? deletedAddressId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The valid values for the address type of a company. + /// + public enum CompanyAddressType + { + /// + ///The address is a billing address. + /// + BILLING, + /// + ///The address is a shipping address. + /// + SHIPPING, + } + + /// + ///Return type for `companyAssignCustomerAsContact` mutation. + /// + public class CompanyAssignCustomerAsContactPayload : GraphQLObject + { + /// + ///The created company contact. + /// + public CompanyContact? companyContact { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyAssignMainContact` mutation. + /// + public class CompanyAssignMainContactPayload : GraphQLObject + { + /// + ///The company for which the main contact is assigned. + /// + public Company? company { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Companies. + /// + public class CompanyConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///A person that acts on behalf of company associated to [a customer](https://shopify.dev/api/admin-graphql/latest/objects/customer). + /// + public class CompanyContact : GraphQLObject, INode + { + /// + ///The company to which the contact belongs. + /// + public Company? company { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company contact was created at Shopify. + /// + public DateTime? createdAt { get; set; } + /// + ///The customer associated to this contact. + /// + public Customer? customer { get; set; } + /// + ///The list of draft orders for the company contact. + /// + public DraftOrderConnection? draftOrders { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the contact is the main contact of the company. + /// + public bool? isMainContact { get; set; } + /// + ///The lifetime duration of the company contact, since its creation date on Shopify. Examples: `1 year`, `2 months`, `3 days`. + /// + public string? lifetimeDuration { get; set; } + /// + ///The company contact's locale (language). + /// + public string? locale { get; set; } + /// + ///The list of orders for the company contact. + /// + public OrderConnection? orders { get; set; } + /// + ///The list of roles assigned to this company contact. + /// + public CompanyContactRoleAssignmentConnection? roleAssignments { get; set; } + /// + ///The company contact's job title. + /// + public string? title { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company contact was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `companyContactAssignRole` mutation. + /// + public class CompanyContactAssignRolePayload : GraphQLObject + { + /// + ///The company contact role assignment. + /// + public CompanyContactRoleAssignment? companyContactRoleAssignment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyContactAssignRoles` mutation. + /// + public class CompanyContactAssignRolesPayload : GraphQLObject + { + /// + ///A list of newly created assignments of company contacts to a company location. + /// + public IEnumerable? roleAssignments { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CompanyContacts. + /// + public class CompanyContactConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyContactEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `companyContactCreate` mutation. + /// + public class CompanyContactCreatePayload : GraphQLObject + { + /// + ///The created company contact. + /// + public CompanyContact? companyContact { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyContactDelete` mutation. + /// + public class CompanyContactDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted company contact. + /// + public string? deletedCompanyContactId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one CompanyContact and a cursor during pagination. + /// + public class CompanyContactEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyContactEdge. + /// + public CompanyContact? node { get; set; } + } + + /// + ///Return type for `companyContactRemoveFromCompany` mutation. + /// + public class CompanyContactRemoveFromCompanyPayload : GraphQLObject + { + /// + ///The ID of the removed company contact. + /// + public string? removedCompanyContactId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyContactRevokeRole` mutation. + /// + public class CompanyContactRevokeRolePayload : GraphQLObject + { + /// + ///The role assignment that was revoked. + /// + public string? revokedCompanyContactRoleAssignmentId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyContactRevokeRoles` mutation. + /// + public class CompanyContactRevokeRolesPayload : GraphQLObject + { + /// + ///A list of role assignment IDs that were removed from the company contact. + /// + public IEnumerable? revokedRoleAssignmentIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The role for a [company contact](https://shopify.dev/api/admin-graphql/latest/objects/companycontact). + /// + public class CompanyContactRole : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of a role. + ///For example, `admin` or `buyer`. + /// + public string? name { get; set; } + /// + ///A note for the role. + /// + public string? note { get; set; } + } + + /// + ///The CompanyContactRoleAssignment describes the company and location associated to a company contact's role. + /// + public class CompanyContactRoleAssignment : GraphQLObject, INode + { + /// + ///The company this role assignment belongs to. + /// + public Company? company { get; set; } + /// + ///The company contact for whom this role is assigned. + /// + public CompanyContact? companyContact { get; set; } + /// + ///The company location to which the role is assigned. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the assignment record was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The role that's assigned to the company contact. + /// + public CompanyContactRole? role { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the assignment record was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CompanyContactRoleAssignments. + /// + public class CompanyContactRoleAssignmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyContactRoleAssignmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CompanyContactRoleAssignment and a cursor during pagination. + /// + public class CompanyContactRoleAssignmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyContactRoleAssignmentEdge. + /// + public CompanyContactRoleAssignment? node { get; set; } + } + + /// + ///The set of valid sort keys for the CompanyContactRoleAssignment query. + /// + public enum CompanyContactRoleAssignmentSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `location_name` value. + /// + LOCATION_NAME, + /// + ///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, + } + + /// + ///An auto-generated type for paginating through multiple CompanyContactRoles. + /// + public class CompanyContactRoleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyContactRoleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CompanyContactRole and a cursor during pagination. + /// + public class CompanyContactRoleEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyContactRoleEdge. + /// + public CompanyContactRole? node { get; set; } + } + + /// + ///The set of valid sort keys for the CompanyContactRole query. + /// + public enum CompanyContactRoleSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Return type for `companyContactSendWelcomeEmail` mutation. + /// + public class CompanyContactSendWelcomeEmailPayload : GraphQLObject + { + /// + ///The company contact to whom a welcome email was sent. + /// + public CompanyContact? companyContact { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the CompanyContact query. + /// + public enum CompanyContactSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `company_id` value. + /// + COMPANY_ID, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `email` value. + /// + EMAIL, + /// + ///Sort by the `name_email` value. + /// + NAME_EMAIL, + /// + ///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, + } + + /// + ///Return type for `companyContactUpdate` mutation. + /// + public class CompanyContactUpdatePayload : GraphQLObject + { + /// + ///The updated company contact. + /// + public CompanyContact? companyContact { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyContactsDelete` mutation. + /// + public class CompanyContactsDeletePayload : GraphQLObject + { + /// + ///The list of IDs of the deleted company contacts. + /// + public IEnumerable? deletedCompanyContactIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyCreate` mutation. + /// + public class CompanyCreatePayload : GraphQLObject + { + /// + ///The created company. + /// + public Company? company { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyDelete` mutation. + /// + public class CompanyDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted company. + /// + public string? deletedCompanyId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Company and a cursor during pagination. + /// + public class CompanyEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyEdge. + /// + public Company? node { get; set; } + } + + /// + ///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, IMetafieldReferencer + { + /// + ///The address used as billing address for the location. + /// + public CompanyAddress? billingAddress { get; set; } + /// + ///The configuration for the buyer's B2B checkout. + /// + public BuyerExperienceConfiguration? buyerExperienceConfiguration { get; set; } + /// + ///The list of catalogs associated with the company location. + /// + public CatalogConnection? catalogs { get; set; } + /// + ///The number of catalogs associated with the company location. Limited to a maximum of 10000. + /// + public Count? catalogsCount { get; set; } + /// + ///The company that the company location belongs to. + /// + public Company? company { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company location was created in Shopify. + /// + public DateTime? createdAt { get; set; } + /// + ///The location's currency based on the shipping address. If the shipping address is empty, then the value is the shop's primary market. + /// + public string? currency { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The list of draft orders for the company location. + /// + public DraftOrderConnection? draftOrders { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A unique externally-supplied ID for the company location. + /// + public string? externalId { get; set; } + /// + ///Whether the merchant added a timeline comment to the company location. + /// + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the company location is assigned a specific catalog. + /// + public bool? inCatalog { get; set; } + /// + ///The preferred locale of the company location. + /// + public string? locale { get; set; } + /// + ///The market that includes the location's shipping address. If the shipping address is empty, then the value is the shop's primary market. + /// + public Market? market { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The name of the company location. + /// + public string? name { get; set; } + /// + ///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; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 list of roles assigned to the company location. + /// + public CompanyContactRoleAssignmentConnection? roleAssignments { get; set; } + /// + ///The address used as shipping address for the location. + /// + public CompanyAddress? shippingAddress { get; set; } + /// + ///The list of staff members assigned to the company location. + /// + public CompanyLocationStaffMemberAssignmentConnection? staffMemberAssignments { get; set; } + /// + ///The list of tax exemptions applied to the location. + /// + public IEnumerable? taxExemptions { get; set; } + /// + ///The tax registration ID for the company location. + /// + public string? taxRegistrationId { get; set; } + /// + ///The total amount spent by the location. + /// + public MoneyV2? totalSpent { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company location was last modified. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `companyLocationAssignAddress` mutation. + /// + public class CompanyLocationAssignAddressPayload : GraphQLObject + { + /// + ///The list of updated addresses on the company location. + /// + public IEnumerable? addresses { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationAssignRoles` mutation. + /// + public class CompanyLocationAssignRolesPayload : GraphQLObject + { + /// + ///A list of newly created assignments of company contacts to a company location. + /// + public IEnumerable? roleAssignments { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationAssignStaffMembers` mutation. + /// + public class CompanyLocationAssignStaffMembersPayload : GraphQLObject + { + /// + ///The list of created staff member assignments. + /// + public IEnumerable? companyLocationStaffMemberAssignments { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationAssignTaxExemptions` mutation. + /// + public class CompanyLocationAssignTaxExemptionsPayload : GraphQLObject + { + /// + ///The updated company location. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A list of products with publishing and pricing information associated with company locations. + /// + public class CompanyLocationCatalog : GraphQLObject, ICatalog, INode + { + /// + ///The company locations associated with the catalog. + /// + public CompanyLocationConnection? companyLocations { get; set; } + /// + ///The number of company locations associated with the catalog. + /// + public Count? companyLocationsCount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Most recent catalog operations. + /// + public IEnumerable? operations { get; set; } + /// + ///The price list associated with the catalog. + /// + public PriceList? priceList { get; set; } + /// + ///A group of products and collections that's published to a catalog. + /// + public Publication? publication { get; set; } + /// + ///The status of the catalog. + /// + public string? status { get; set; } + /// + ///The name of the catalog. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CompanyLocations. + /// + public class CompanyLocationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyLocationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `companyLocationCreate` mutation. + /// + public class CompanyLocationCreatePayload : GraphQLObject + { + /// + ///The created company location. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationCreateTaxRegistration` mutation. + /// + public class CompanyLocationCreateTaxRegistrationPayload : GraphQLObject + { + /// + ///The company location with the created tax registration. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationDelete` mutation. + /// + public class CompanyLocationDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted company location. + /// + public string? deletedCompanyLocationId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one CompanyLocation and a cursor during pagination. + /// + public class CompanyLocationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyLocationEdge. + /// + public CompanyLocation? node { get; set; } + } + + /// + ///Return type for `companyLocationRemoveStaffMembers` mutation. + /// + public class CompanyLocationRemoveStaffMembersPayload : GraphQLObject + { + /// + ///The list of IDs of the deleted staff member assignment. + /// + public IEnumerable? deletedCompanyLocationStaffMemberAssignmentIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationRevokeRoles` mutation. + /// + public class CompanyLocationRevokeRolesPayload : GraphQLObject + { + /// + ///A list of role assignment IDs that were removed from the company location. + /// + public IEnumerable? revokedRoleAssignmentIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationRevokeTaxExemptions` mutation. + /// + public class CompanyLocationRevokeTaxExemptionsPayload : GraphQLObject + { + /// + ///The updated company location. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationRevokeTaxRegistration` mutation. + /// + public class CompanyLocationRevokeTaxRegistrationPayload : GraphQLObject + { + /// + ///The updated company location. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the CompanyLocation query. + /// + public enum CompanyLocationSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `company_id` value. + /// + COMPANY_ID, + /// + ///Sort by the `company_and_location_name` value. + /// + COMPANY_AND_LOCATION_NAME, + /// + ///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 representation of store's staff member who is assigned to a [company location](https://shopify.dev/api/admin-graphql/latest/objects/CompanyLocation) of the shop. The staff member's actions will be limited to objects associated with the assigned company location. + /// + public class CompanyLocationStaffMemberAssignment : GraphQLObject, INode + { + /// + ///The company location the staff member is assigned to. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Represents the data of a staff member who's assigned to a company location. + /// + public StaffMember? staffMember { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CompanyLocationStaffMemberAssignments. + /// + public class CompanyLocationStaffMemberAssignmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CompanyLocationStaffMemberAssignmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CompanyLocationStaffMemberAssignment and a cursor during pagination. + /// + public class CompanyLocationStaffMemberAssignmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CompanyLocationStaffMemberAssignmentEdge. + /// + public CompanyLocationStaffMemberAssignment? node { get; set; } + } + + /// + ///The set of valid sort keys for the CompanyLocationStaffMemberAssignment query. + /// + public enum CompanyLocationStaffMemberAssignmentSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Return type for `companyLocationUpdate` mutation. + /// + public class CompanyLocationUpdatePayload : GraphQLObject + { + /// + ///The updated company location. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyLocationsDelete` mutation. + /// + public class CompanyLocationsDeletePayload : GraphQLObject + { + /// + ///A list of IDs of the deleted company locations. + /// + public IEnumerable? deletedCompanyLocationIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `companyRevokeMainContact` mutation. + /// + public class CompanyRevokeMainContactPayload : GraphQLObject + { + /// + ///The company from which the main contact is revoked. + /// + public Company? company { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the Company query. + /// + public enum CompanySortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `since_date` value. + /// + SINCE_DATE, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `order_count` value. + /// + ORDER_COUNT, + /// + ///Sort by the `total_spent` value. + /// + TOTAL_SPENT, + /// + ///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, + } + + /// + ///Return type for `companyUpdate` mutation. + /// + public class CompanyUpdatePayload : GraphQLObject + { + /// + ///The updated company. + /// + public Company? company { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Details for count of elements. + /// + public class Count : GraphQLObject + { + /// + ///The count of elements. + /// + public int? count { get; set; } + /// + ///The count's precision, or the exactness of the value. + /// + public string? 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. + /// + public class CountriesInShippingZones : GraphQLObject + { + /// + ///The list of all the countries from all the combined shipping zones. + /// + public IEnumerable? countryCodes { get; set; } + /// + ///Whether 'Rest of World' has been defined in any of the shipping zones. + /// + public bool? includeRestOfWorld { get; set; } + } + + /// + ///The code designating a country/region, which generally follows ISO 3166-1 alpha-2 guidelines. + ///If a territory doesn't have a country code value in the `CountryCode` enum, then it might be considered a subdivision + ///of another country. For example, the territories associated with Spain are represented by the country code `ES`, + ///and the territories associated with the United States of America are represented by the country code `US`. + /// + public enum CountryCode + { + /// + ///Afghanistan. + /// + AF, + /// + ///Åland Islands. + /// + AX, + /// + ///Albania. + /// + AL, + /// + ///Algeria. + /// + DZ, + /// + ///Andorra. + /// + AD, + /// + ///Angola. + /// + AO, + /// + ///Anguilla. + /// + AI, + /// + ///Antigua & Barbuda. + /// + AG, + /// + ///Argentina. + /// + AR, + /// + ///Armenia. + /// + AM, + /// + ///Aruba. + /// + AW, + /// + ///Ascension Island. + /// + AC, + /// + ///Australia. + /// + AU, + /// + ///Austria. + /// + AT, + /// + ///Azerbaijan. + /// + AZ, + /// + ///Bahamas. + /// + BS, + /// + ///Bahrain. + /// + BH, + /// + ///Bangladesh. + /// + BD, + /// + ///Barbados. + /// + BB, + /// + ///Belarus. + /// + BY, + /// + ///Belgium. + /// + BE, + /// + ///Belize. + /// + BZ, + /// + ///Benin. + /// + BJ, + /// + ///Bermuda. + /// + BM, + /// + ///Bhutan. + /// + BT, + /// + ///Bolivia. + /// + BO, + /// + ///Bosnia & Herzegovina. + /// + BA, + /// + ///Botswana. + /// + BW, + /// + ///Bouvet Island. + /// + BV, + /// + ///Brazil. + /// + BR, + /// + ///British Indian Ocean Territory. + /// + IO, + /// + ///Brunei. + /// + BN, + /// + ///Bulgaria. + /// + BG, + /// + ///Burkina Faso. + /// + BF, + /// + ///Burundi. + /// + BI, + /// + ///Cambodia. + /// + KH, + /// + ///Canada. + /// + CA, + /// + ///Cape Verde. + /// + CV, + /// + ///Caribbean Netherlands. + /// + BQ, + /// + ///Cayman Islands. + /// + KY, + /// + ///Central African Republic. + /// + CF, + /// + ///Chad. + /// + TD, + /// + ///Chile. + /// + CL, + /// + ///China. + /// + CN, + /// + ///Christmas Island. + /// + CX, + /// + ///Cocos (Keeling) Islands. + /// + CC, + /// + ///Colombia. + /// + CO, + /// + ///Comoros. + /// + KM, + /// + ///Congo - Brazzaville. + /// + CG, + /// + ///Congo - Kinshasa. + /// + CD, + /// + ///Cook Islands. + /// + CK, + /// + ///Costa Rica. + /// + CR, + /// + ///Croatia. + /// + HR, + /// + ///Cuba. + /// + CU, + /// + ///Curaçao. + /// + CW, + /// + ///Cyprus. + /// + CY, + /// + ///Czechia. + /// + CZ, + /// + ///Côte d’Ivoire. + /// + CI, + /// + ///Denmark. + /// + DK, + /// + ///Djibouti. + /// + DJ, + /// + ///Dominica. + /// + DM, + /// + ///Dominican Republic. + /// + DO, + /// + ///Ecuador. + /// + EC, + /// + ///Egypt. + /// + EG, + /// + ///El Salvador. + /// + SV, + /// + ///Equatorial Guinea. + /// + GQ, + /// + ///Eritrea. + /// + ER, + /// + ///Estonia. + /// + EE, + /// + ///Eswatini. + /// + SZ, + /// + ///Ethiopia. + /// + ET, + /// + ///Falkland Islands. + /// + FK, + /// + ///Faroe Islands. + /// + FO, + /// + ///Fiji. + /// + FJ, + /// + ///Finland. + /// + FI, + /// + ///France. + /// + FR, + /// + ///French Guiana. + /// + GF, + /// + ///French Polynesia. + /// + PF, + /// + ///French Southern Territories. + /// + TF, + /// + ///Gabon. + /// + GA, + /// + ///Gambia. + /// + GM, + /// + ///Georgia. + /// + GE, + /// + ///Germany. + /// + DE, + /// + ///Ghana. + /// + GH, + /// + ///Gibraltar. + /// + GI, + /// + ///Greece. + /// + GR, + /// + ///Greenland. + /// + GL, + /// + ///Grenada. + /// + GD, + /// + ///Guadeloupe. + /// + GP, + /// + ///Guatemala. + /// + GT, + /// + ///Guernsey. + /// + GG, + /// + ///Guinea. + /// + GN, + /// + ///Guinea-Bissau. + /// + GW, + /// + ///Guyana. + /// + GY, + /// + ///Haiti. + /// + HT, + /// + ///Heard & McDonald Islands. + /// + HM, + /// + ///Vatican City. + /// + VA, + /// + ///Honduras. + /// + HN, + /// + ///Hong Kong SAR. + /// + HK, + /// + ///Hungary. + /// + HU, + /// + ///Iceland. + /// + IS, + /// + ///India. + /// + IN, + /// + ///Indonesia. + /// + ID, + /// + ///Iran. + /// + IR, + /// + ///Iraq. + /// + IQ, + /// + ///Ireland. + /// + IE, + /// + ///Isle of Man. + /// + IM, + /// + ///Israel. + /// + IL, + /// + ///Italy. + /// + IT, + /// + ///Jamaica. + /// + JM, + /// + ///Japan. + /// + JP, + /// + ///Jersey. + /// + JE, + /// + ///Jordan. + /// + JO, + /// + ///Kazakhstan. + /// + KZ, + /// + ///Kenya. + /// + KE, + /// + ///Kiribati. + /// + KI, + /// + ///North Korea. + /// + KP, + /// + ///Kosovo. + /// + XK, + /// + ///Kuwait. + /// + KW, + /// + ///Kyrgyzstan. + /// + KG, + /// + ///Laos. + /// + LA, + /// + ///Latvia. + /// + LV, + /// + ///Lebanon. + /// + LB, + /// + ///Lesotho. + /// + LS, + /// + ///Liberia. + /// + LR, + /// + ///Libya. + /// + LY, + /// + ///Liechtenstein. + /// + LI, + /// + ///Lithuania. + /// + LT, + /// + ///Luxembourg. + /// + LU, + /// + ///Macao SAR. + /// + MO, + /// + ///Madagascar. + /// + MG, + /// + ///Malawi. + /// + MW, + /// + ///Malaysia. + /// + MY, + /// + ///Maldives. + /// + MV, + /// + ///Mali. + /// + ML, + /// + ///Malta. + /// + MT, + /// + ///Martinique. + /// + MQ, + /// + ///Mauritania. + /// + MR, + /// + ///Mauritius. + /// + MU, + /// + ///Mayotte. + /// + YT, + /// + ///Mexico. + /// + MX, + /// + ///Moldova. + /// + MD, + /// + ///Monaco. + /// + MC, + /// + ///Mongolia. + /// + MN, + /// + ///Montenegro. + /// + ME, + /// + ///Montserrat. + /// + MS, + /// + ///Morocco. + /// + MA, + /// + ///Mozambique. + /// + MZ, + /// + ///Myanmar (Burma). + /// + MM, + /// + ///Namibia. + /// + NA, + /// + ///Nauru. + /// + NR, + /// + ///Nepal. + /// + NP, + /// + ///Netherlands. + /// + NL, + /// + ///Netherlands Antilles. + /// + AN, + /// + ///New Caledonia. + /// + NC, + /// + ///New Zealand. + /// + NZ, + /// + ///Nicaragua. + /// + NI, + /// + ///Niger. + /// + NE, + /// + ///Nigeria. + /// + NG, + /// + ///Niue. + /// + NU, + /// + ///Norfolk Island. + /// + NF, + /// + ///North Macedonia. + /// + MK, + /// + ///Norway. + /// + NO, + /// + ///Oman. + /// + OM, + /// + ///Pakistan. + /// + PK, + /// + ///Palestinian Territories. + /// + PS, + /// + ///Panama. + /// + PA, + /// + ///Papua New Guinea. + /// + PG, + /// + ///Paraguay. + /// + PY, + /// + ///Peru. + /// + PE, + /// + ///Philippines. + /// + PH, + /// + ///Pitcairn Islands. + /// + PN, + /// + ///Poland. + /// + PL, + /// + ///Portugal. + /// + PT, + /// + ///Qatar. + /// + QA, + /// + ///Cameroon. + /// + CM, + /// + ///Réunion. + /// + RE, + /// + ///Romania. + /// + RO, + /// + ///Russia. + /// + RU, + /// + ///Rwanda. + /// + RW, + /// + ///St. Barthélemy. + /// + BL, + /// + ///St. Helena. + /// + SH, + /// + ///St. Kitts & Nevis. + /// + KN, + /// + ///St. Lucia. + /// + LC, + /// + ///St. Martin. + /// + MF, + /// + ///St. Pierre & Miquelon. + /// + PM, + /// + ///Samoa. + /// + WS, + /// + ///San Marino. + /// + SM, + /// + ///São Tomé & Príncipe. + /// + ST, + /// + ///Saudi Arabia. + /// + SA, + /// + ///Senegal. + /// + SN, + /// + ///Serbia. + /// + RS, + /// + ///Seychelles. + /// + SC, + /// + ///Sierra Leone. + /// + SL, + /// + ///Singapore. + /// + SG, + /// + ///Sint Maarten. + /// + SX, + /// + ///Slovakia. + /// + SK, + /// + ///Slovenia. + /// + SI, + /// + ///Solomon Islands. + /// + SB, + /// + ///Somalia. + /// + SO, + /// + ///South Africa. + /// + ZA, + /// + ///South Georgia & South Sandwich Islands. + /// + GS, + /// + ///South Korea. + /// + KR, + /// + ///South Sudan. + /// + SS, + /// + ///Spain. + /// + ES, + /// + ///Sri Lanka. + /// + LK, + /// + ///St. Vincent & Grenadines. + /// + VC, + /// + ///Sudan. + /// + SD, + /// + ///Suriname. + /// + SR, + /// + ///Svalbard & Jan Mayen. + /// + SJ, + /// + ///Sweden. + /// + SE, + /// + ///Switzerland. + /// + CH, + /// + ///Syria. + /// + SY, + /// + ///Taiwan. + /// + TW, + /// + ///Tajikistan. + /// + TJ, + /// + ///Tanzania. + /// + TZ, + /// + ///Thailand. + /// + TH, + /// + ///Timor-Leste. + /// + TL, + /// + ///Togo. + /// + TG, + /// + ///Tokelau. + /// + TK, + /// + ///Tonga. + /// + TO, + /// + ///Trinidad & Tobago. + /// + TT, + /// + ///Tristan da Cunha. + /// + TA, + /// + ///Tunisia. + /// + TN, + /// + ///Türkiye. + /// + TR, + /// + ///Turkmenistan. + /// + TM, + /// + ///Turks & Caicos Islands. + /// + TC, + /// + ///Tuvalu. + /// + TV, + /// + ///Uganda. + /// + UG, + /// + ///Ukraine. + /// + UA, + /// + ///United Arab Emirates. + /// + AE, + /// + ///United Kingdom. + /// + GB, + /// + ///United States. + /// + US, + /// + ///U.S. Outlying Islands. + /// + UM, + /// + ///Uruguay. + /// + UY, + /// + ///Uzbekistan. + /// + UZ, + /// + ///Vanuatu. + /// + VU, + /// + ///Venezuela. + /// + VE, + /// + ///Vietnam. + /// + VN, + /// + ///British Virgin Islands. + /// + VG, + /// + ///Wallis & Futuna. + /// + WF, + /// + ///Western Sahara. + /// + EH, + /// + ///Yemen. + /// + YE, + /// + ///Zambia. + /// + ZM, + /// + ///Zimbabwe. + /// + ZW, + /// + ///Unknown Region. + /// + ZZ, + } + + /// + ///The country-specific harmonized system code and ISO country code for an inventory item. + /// + public class CountryHarmonizedSystemCode : GraphQLObject + { + /// + ///The ISO 3166-1 alpha-2 country code for the country that issued the specified harmonized system code. + /// + public string? countryCode { get; set; } + /// + ///The country-specific harmonized system code. These are usually longer than 6 digits. + /// + public string? harmonizedSystemCode { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CountryHarmonizedSystemCodes. + /// + public class CountryHarmonizedSystemCodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CountryHarmonizedSystemCodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CountryHarmonizedSystemCode and a cursor during pagination. + /// + public class CountryHarmonizedSystemCodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CountryHarmonizedSystemCodeEdge. + /// + public CountryHarmonizedSystemCode? node { get; set; } + } + + /// + ///The part of the image that should remain after cropping. + /// + public enum CropRegion + { + /// + ///Keep the center of the image. + /// + CENTER, + /// + ///Keep the top of the image. + /// + TOP, + /// + ///Keep the bottom of the image. + /// + BOTTOM, + /// + ///Keep the left of the image. + /// + LEFT, + /// + ///Keep the right of the image. + /// + RIGHT, + } + + /// + ///The three-letter currency codes that represent the world currencies used in stores. These include standard ISO 4217 codes, legacy codes, + ///and non-standard codes. + /// + public enum CurrencyCode + { + /// + ///United States Dollars (USD). + /// + USD, + /// + ///Euro (EUR). + /// + EUR, + /// + ///United Kingdom Pounds (GBP). + /// + GBP, + /// + ///Canadian Dollars (CAD). + /// + CAD, + /// + ///Afghan Afghani (AFN). + /// + AFN, + /// + ///Albanian Lek (ALL). + /// + ALL, + /// + ///Algerian Dinar (DZD). + /// + DZD, + /// + ///Angolan Kwanza (AOA). + /// + AOA, + /// + ///Argentine Pesos (ARS). + /// + ARS, + /// + ///Armenian Dram (AMD). + /// + AMD, + /// + ///Aruban Florin (AWG). + /// + AWG, + /// + ///Australian Dollars (AUD). + /// + AUD, + /// + ///Barbadian Dollar (BBD). + /// + BBD, + /// + ///Azerbaijani Manat (AZN). + /// + AZN, + /// + ///Bangladesh Taka (BDT). + /// + BDT, + /// + ///Bahamian Dollar (BSD). + /// + BSD, + /// + ///Bahraini Dinar (BHD). + /// + BHD, + /// + ///Burundian Franc (BIF). + /// + BIF, + /// + ///Belarusian Ruble (BYN). + /// + BYN, + /// + ///Belize Dollar (BZD). + /// + BZD, + /// + ///Bermudian Dollar (BMD). + /// + BMD, + /// + ///Bhutanese Ngultrum (BTN). + /// + BTN, + /// + ///Bosnia and Herzegovina Convertible Mark (BAM). + /// + BAM, + /// + ///Brazilian Real (BRL). + /// + BRL, + /// + ///Bolivian Boliviano (BOB). + /// + BOB, + /// + ///Botswana Pula (BWP). + /// + BWP, + /// + ///Brunei Dollar (BND). + /// + BND, + /// + ///Bulgarian Lev (BGN). + /// + BGN, + /// + ///Burmese Kyat (MMK). + /// + MMK, + /// + ///Cambodian Riel. + /// + KHR, + /// + ///Cape Verdean escudo (CVE). + /// + CVE, + /// + ///Cayman Dollars (KYD). + /// + KYD, + /// + ///Central African CFA Franc (XAF). + /// + XAF, + /// + ///Chilean Peso (CLP). + /// + CLP, + /// + ///Chinese Yuan Renminbi (CNY). + /// + CNY, + /// + ///Colombian Peso (COP). + /// + COP, + /// + ///Comorian Franc (KMF). + /// + KMF, + /// + ///Congolese franc (CDF). + /// + CDF, + /// + ///Costa Rican Colones (CRC). + /// + CRC, + /// + ///Croatian Kuna (HRK). + /// + HRK, + /// + ///Czech Koruny (CZK). + /// + CZK, + /// + ///Danish Kroner (DKK). + /// + DKK, + /// + ///Djiboutian Franc (DJF). + /// + DJF, + /// + ///Dominican Peso (DOP). + /// + DOP, + /// + ///East Caribbean Dollar (XCD). + /// + XCD, + /// + ///Egyptian Pound (EGP). + /// + EGP, + /// + ///Eritrean Nakfa (ERN). + /// + ERN, + /// + ///Ethiopian Birr (ETB). + /// + ETB, + /// + ///Falkland Islands Pounds (FKP). + /// + FKP, + /// + ///CFP Franc (XPF). + /// + XPF, + /// + ///Fijian Dollars (FJD). + /// + FJD, + /// + ///Gibraltar Pounds (GIP). + /// + GIP, + /// + ///Gambian Dalasi (GMD). + /// + GMD, + /// + ///Ghanaian Cedi (GHS). + /// + GHS, + /// + ///Guatemalan Quetzal (GTQ). + /// + GTQ, + /// + ///Guyanese Dollar (GYD). + /// + GYD, + /// + ///Georgian Lari (GEL). + /// + GEL, + /// + ///Guinean Franc (GNF). + /// + GNF, + /// + ///Haitian Gourde (HTG). + /// + HTG, + /// + ///Honduran Lempira (HNL). + /// + HNL, + /// + ///Hong Kong Dollars (HKD). + /// + HKD, + /// + ///Hungarian Forint (HUF). + /// + HUF, + /// + ///Icelandic Kronur (ISK). + /// + ISK, + /// + ///Indian Rupees (INR). + /// + INR, + /// + ///Indonesian Rupiah (IDR). + /// + IDR, + /// + ///Israeli New Shekel (NIS). + /// + ILS, + /// + ///Iranian Rial (IRR). + /// + IRR, + /// + ///Iraqi Dinar (IQD). + /// + IQD, + /// + ///Jamaican Dollars (JMD). + /// + JMD, + /// + ///Japanese Yen (JPY). + /// + JPY, + /// + ///Jersey Pound. + /// + JEP, + /// + ///Jordanian Dinar (JOD). + /// + JOD, + /// + ///Kazakhstani Tenge (KZT). + /// + KZT, + /// + ///Kenyan Shilling (KES). + /// + KES, + /// + ///Kiribati Dollar (KID). + /// + KID, + /// + ///Kuwaiti Dinar (KWD). + /// + KWD, + /// + ///Kyrgyzstani Som (KGS). + /// + KGS, + /// + ///Laotian Kip (LAK). + /// + LAK, + /// + ///Latvian Lati (LVL). + /// + LVL, + /// + ///Lebanese Pounds (LBP). + /// + LBP, + /// + ///Lesotho Loti (LSL). + /// + LSL, + /// + ///Liberian Dollar (LRD). + /// + LRD, + /// + ///Libyan Dinar (LYD). + /// + LYD, + /// + ///Lithuanian Litai (LTL). + /// + LTL, + /// + ///Malagasy Ariary (MGA). + /// + MGA, + /// + ///Macedonia Denar (MKD). + /// + MKD, + /// + ///Macanese Pataca (MOP). + /// + MOP, + /// + ///Malawian Kwacha (MWK). + /// + MWK, + /// + ///Maldivian Rufiyaa (MVR). + /// + MVR, + /// + ///Mauritanian Ouguiya (MRU). + /// + MRU, + /// + ///Mexican Pesos (MXN). + /// + MXN, + /// + ///Malaysian Ringgits (MYR). + /// + MYR, + /// + ///Mauritian Rupee (MUR). + /// + MUR, + /// + ///Moldovan Leu (MDL). + /// + MDL, + /// + ///Moroccan Dirham. + /// + MAD, + /// + ///Mongolian Tugrik. + /// + MNT, + /// + ///Mozambican Metical. + /// + MZN, + /// + ///Namibian Dollar. + /// + NAD, + /// + ///Nepalese Rupee (NPR). + /// + NPR, + /// + ///Netherlands Antillean Guilder. + /// + ANG, + /// + ///New Zealand Dollars (NZD). + /// + NZD, + /// + ///Nicaraguan Córdoba (NIO). + /// + NIO, + /// + ///Nigerian Naira (NGN). + /// + NGN, + /// + ///Norwegian Kroner (NOK). + /// + NOK, + /// + ///Omani Rial (OMR). + /// + OMR, + /// + ///Panamian Balboa (PAB). + /// + PAB, + /// + ///Pakistani Rupee (PKR). + /// + PKR, + /// + ///Papua New Guinean Kina (PGK). + /// + PGK, + /// + ///Paraguayan Guarani (PYG). + /// + PYG, + /// + ///Peruvian Nuevo Sol (PEN). + /// + PEN, + /// + ///Philippine Peso (PHP). + /// + PHP, + /// + ///Polish Zlotych (PLN). + /// + PLN, + /// + ///Qatari Rial (QAR). + /// + QAR, + /// + ///Romanian Lei (RON). + /// + RON, + /// + ///Russian Rubles (RUB). + /// + RUB, + /// + ///Rwandan Franc (RWF). + /// + RWF, + /// + ///Samoan Tala (WST). + /// + WST, + /// + ///Saint Helena Pounds (SHP). + /// + SHP, + /// + ///Saudi Riyal (SAR). + /// + SAR, + /// + ///Serbian dinar (RSD). + /// + RSD, + /// + ///Seychellois Rupee (SCR). + /// + SCR, + /// + ///Sierra Leonean Leone (SLL). + /// + SLL, + /// + ///Singapore Dollars (SGD). + /// + SGD, + /// + ///Sudanese Pound (SDG). + /// + SDG, + /// + ///Somali Shilling (SOS). + /// + SOS, + /// + ///Syrian Pound (SYP). + /// + SYP, + /// + ///South African Rand (ZAR). + /// + ZAR, + /// + ///South Korean Won (KRW). + /// + KRW, + /// + ///South Sudanese Pound (SSP). + /// + SSP, + /// + ///Solomon Islands Dollar (SBD). + /// + SBD, + /// + ///Sri Lankan Rupees (LKR). + /// + LKR, + /// + ///Surinamese Dollar (SRD). + /// + SRD, + /// + ///Swazi Lilangeni (SZL). + /// + SZL, + /// + ///Swedish Kronor (SEK). + /// + SEK, + /// + ///Swiss Francs (CHF). + /// + CHF, + /// + ///Taiwan Dollars (TWD). + /// + TWD, + /// + ///Thai baht (THB). + /// + THB, + /// + ///Tajikistani Somoni (TJS). + /// + TJS, + /// + ///Tanzanian Shilling (TZS). + /// + TZS, + /// + ///Tongan Pa'anga (TOP). + /// + TOP, + /// + ///Trinidad and Tobago Dollars (TTD). + /// + TTD, + /// + ///Tunisian Dinar (TND). + /// + TND, + /// + ///Turkish Lira (TRY). + /// + TRY, + /// + ///Turkmenistani Manat (TMT). + /// + TMT, + /// + ///Ugandan Shilling (UGX). + /// + UGX, + /// + ///Ukrainian Hryvnia (UAH). + /// + UAH, + /// + ///United Arab Emirates Dirham (AED). + /// + AED, + /// + ///Uruguayan Pesos (UYU). + /// + UYU, + /// + ///Uzbekistan som (UZS). + /// + UZS, + /// + ///Vanuatu Vatu (VUV). + /// + VUV, + /// + ///Venezuelan Bolivares Soberanos (VES). + /// + VES, + /// + ///Vietnamese đồng (VND). + /// + VND, + /// + ///West African CFA franc (XOF). + /// + XOF, + /// + ///Yemeni Rial (YER). + /// + YER, + /// + ///Zambian Kwacha (ZMW). + /// + ZMW, + /// + ///Belarusian Ruble (BYR). + /// + [Obsolete("`BYR` is deprecated. Use `BYN` available from version `2021-01` onwards instead.")] + BYR, + /// + ///Sao Tome And Principe Dobra (STD). + /// + [Obsolete("`STD` is deprecated. Use `STN` available from version `2022-07` onwards instead.")] + STD, + /// + ///Sao Tome And Principe Dobra (STN). + /// + STN, + /// + ///Venezuelan Bolivares (VED). + /// + VED, + /// + ///Venezuelan Bolivares (VEF). + /// + [Obsolete("`VEF` is deprecated. Use `VES` available from version `2020-10` onwards instead.")] + VEF, + /// + ///Unrecognized currency. + /// + XXX, + } + + /// + ///Currency formats configured for the merchant. These formats are available to use within Liquid. + /// + public class CurrencyFormats : GraphQLObject + { + /// + ///Money without currency in HTML. + /// + public string? moneyFormat { get; set; } + /// + ///Money without currency in emails. + /// + public string? moneyInEmailsFormat { get; set; } + /// + ///Money with currency in HTML. + /// + public string? moneyWithCurrencyFormat { get; set; } + /// + ///Money with currency in emails. + /// + public string? moneyWithCurrencyInEmailsFormat { get; set; } + } + + /// + ///A setting for a presentment currency. + /// + public class CurrencySetting : GraphQLObject + { + /// + ///The currency's ISO code. + /// + public string? currencyCode { get; set; } + /// + ///The full name of the currency. + /// + public string? currencyName { get; set; } + /// + ///Whether the currency is enabled or not. An enabled currency setting is visible to buyers and allows orders to be generated with that currency as presentment. + /// + public bool? enabled { get; set; } + /// + ///The date and time when the active exchange rate for the currency was last modified. It can be the automatic rate's creation date, or the manual rate's last updated at date if active. + /// + public DateTime? rateUpdatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CurrencySettings. + /// + public class CurrencySettingConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CurrencySettingEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CurrencySetting and a cursor during pagination. + /// + public class CurrencySettingEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CurrencySettingEdge. + /// + public CurrencySetting? node { get; set; } + } + + /// + ///Represents information about a customer of the shop, such as the customer's contact details, their order + ///history, and whether they've agreed to receive marketing material by email. + /// + ///**Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data. + /// + public class Customer : GraphQLObject, ICommentEventSubject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasStoreCreditAccounts, ILegacyInteroperability, INode, ICommentEventEmbed, IMetafieldReference, IMetafieldReferencer, IPurchasingEntity + { + /// + ///A list of addresses associated with the customer. + /// + public IEnumerable? addresses { get; set; } + /// + ///The addresses associated with the customer. + /// + public MailingAddressConnection? addressesV2 { get; set; } + /// + ///The total amount that the customer has spent on orders in their lifetime. + /// + public MoneyV2? amountSpent { get; set; } + /// + ///Whether the merchant can delete the customer from their store. + /// + ///A customer can be deleted from a store only if they haven't yet made an order. After a customer makes an + ///order, they can't be deleted from a store. + /// + public bool? canDelete { get; set; } + /// + ///A list of the customer's company contact profiles. + /// + public IEnumerable? companyContactProfiles { get; set; } + /// + ///The date and time when the customer was added to the store. + /// + public DateTime? createdAt { get; set; } + /// + ///Whether the customer has opted out of having their data sold. + /// + public bool? dataSaleOptOut { get; set; } + /// + ///The default address associated with the customer. + /// + public MailingAddress? defaultAddress { get; set; } + /// + ///The full name of the customer, based on the values for first_name and last_name. If the first_name and + ///last_name are not available, then this falls back to the customer's email address, and if that is not available, the customer's phone number. + /// + public string? displayName { get; set; } + /// + ///The customer's email address. + /// + public string? email { get; set; } + /// + ///The current email marketing state for the customer. + ///If the customer doesn't have an email address, then this property is `null`. + /// + public CustomerEmailMarketingConsentState? emailMarketingConsent { get; set; } + /// + ///A list of events associated with the customer. + /// + public EventConnection? events { get; set; } + /// + ///The customer's first name. + /// + public string? firstName { get; set; } + + /// + ///Whether the merchant has added timeline comments about the customer on the customer's page. + /// + [Obsolete("To query for comments on the timeline, use the events connection and a `query` argument containing `verb:comment`, or look for a `CommentEvent` in the `__typename` of events.")] + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated with the customer. + /// + public Image? image { get; set; } + /// + ///The customer's last name. + /// + public string? lastName { get; set; } + /// + ///The customer's last order. + /// + public Order? lastOrder { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The amount of time since the customer was first added to the store. + /// + ///Example: 'about 12 years'. + /// + public string? lifetimeDuration { get; set; } + /// + ///The customer's locale. + /// + public string? locale { get; set; } + /// + ///The market that includes the customer’s default address. + /// + public Market? market { get; set; } + /// + ///Whether the customer can be merged with another customer. + /// + public CustomerMergeable? mergeable { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///A unique identifier for the customer that's used with Multipass login. + /// + public string? multipassIdentifier { get; set; } + /// + ///A note about the customer. + /// + public string? note { get; set; } + /// + ///The number of orders that the customer has made at the store in their lifetime. + /// + public ulong? numberOfOrders { get; set; } + /// + ///A list of the customer's orders. + /// + public OrderConnection? orders { get; set; } + /// + ///A list of the customer's payment methods. + /// + public CustomerPaymentMethodConnection? paymentMethods { get; set; } + /// + ///The customer's phone number. + /// + public string? phone { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + /// + ///Possible subscriber states of a customer defined by their subscription contracts. + /// + public string? productSubscriberStatus { get; set; } + /// + ///The current SMS marketing state for the customer's phone number. + /// + ///If the customer does not have a phone number, then this property is `null`. + /// + public CustomerSmsMarketingConsentState? smsMarketingConsent { get; set; } + /// + ///The state of the customer's account with the shop. + /// + ///Please note that this only meaningful when Classic Customer Accounts is active. + /// + public string? state { get; set; } + /// + ///The statistics for a given customer. + /// + public CustomerStatistics? statistics { get; set; } + /// + ///Returns a list of store credit accounts that belong to the owner resource. + /// + public StoreCreditAccountConnection? storeCreditAccounts { get; set; } + /// + ///A list of the customer's subscription contracts. + /// + public SubscriptionContractConnection? subscriptionContracts { get; set; } + /// + ///A comma separated list of tags that have been added to the customer. + /// + public IEnumerable? tags { get; set; } + /// + ///Whether the customer is exempt from being charged taxes on their orders. + /// + public bool? taxExempt { get; set; } + /// + ///The list of tax exemptions applied to the customer. + /// + public IEnumerable? taxExemptions { get; set; } + /// + ///The URL to unsubscribe the customer from the mailing list. + /// + public string? unsubscribeUrl { get; set; } + /// + ///The date and time when the customer was last updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///Whether the email address is formatted correctly. + /// + ///Returns `true` when the email is formatted correctly and + ///belongs to an existing domain. This doesn't guarantee that + ///the email address actually exists. + /// + public bool? validEmailAddress { get; set; } + /// + ///Whether the customer has verified their email address. Defaults to `true` if the customer is created through the Shopify admin or API. + /// + public bool? verifiedEmail { get; set; } + } + + /// + ///An app extension page for the customer account navigation menu. + /// + public class CustomerAccountAppExtensionPage : GraphQLObject, ICustomerAccountPage, INavigable, INode + { + /// + ///The UUID of the app extension. + /// + public string? appExtensionUuid { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///A unique, human-friendly string for the customer account page. + /// + public string? handle { get; set; } + /// + ///The unique ID for the customer account page. + /// + public string? id { get; set; } + /// + ///The title of the customer account page. + /// + public string? title { get; set; } + } + + /// + ///A native page for the customer account navigation menu. + /// + public class CustomerAccountNativePage : GraphQLObject, ICustomerAccountPage, INavigable, INode + { + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///A unique, human-friendly string for the customer account page. + /// + public string? handle { get; set; } + /// + ///The unique ID for the customer account page. + /// + public string? id { get; set; } + /// + ///The type of customer account native page. + /// + public string? pageType { get; set; } + /// + ///The title of the customer account page. + /// + public string? title { get; set; } + } + + /// + ///The type of customer account native page. + /// + public enum CustomerAccountNativePagePageType + { + /// + ///An orders page type. + /// + NATIVE_ORDERS, + /// + ///A settings page type. + /// + NATIVE_SETTINGS, + /// + ///A profile page type. + /// + NATIVE_PROFILE, + /// + ///An unknown page type. Represents new page types that may be added in future versions. + /// + UNKNOWN, + } + + /// + ///A customer account page. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CustomerAccountAppExtensionPage), typeDiscriminator: "CustomerAccountAppExtensionPage")] + [JsonDerivedType(typeof(CustomerAccountNativePage), typeDiscriminator: "CustomerAccountNativePage")] + public interface ICustomerAccountPage : IGraphQLObject, INavigable, INode + { + /// + ///A unique, human-friendly string for the customer account page. + /// + public string? handle { get; } + /// + ///The title of the customer account page. + /// + public string? title { get; } + } + + /// + ///An auto-generated type for paginating through multiple CustomerAccountPages. + /// + public class CustomerAccountPageConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CustomerAccountPageEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CustomerAccountPage and a cursor during pagination. + /// + public class CustomerAccountPageEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerAccountPageEdge. + /// + public ICustomerAccountPage? node { get; set; } + } + + /// + ///Information about the shop's customer accounts. + /// + public class CustomerAccountsV2 : GraphQLObject + { + /// + ///Indicates which version of customer accounts the merchant is using in online store and checkout. + /// + public string? customerAccountsVersion { get; set; } + /// + ///Login links are shown in online store and checkout. + /// + public bool? loginLinksVisibleOnStorefrontAndCheckout { get; set; } + /// + ///Customers are required to log in to their account before checkout. + /// + public bool? loginRequiredAtCheckout { get; set; } + /// + ///The root url for the customer accounts pages. + /// + public string? url { get; set; } + } + + /// + ///The login redirection target for customer accounts. + /// + public enum CustomerAccountsVersion + { + /// + ///The customer is redirected to the classic customer accounts login page. + /// + CLASSIC, + /// + ///The customer is redirected to the new customer accounts login page. + /// + NEW_CUSTOMER_ACCOUNTS, + } + + /// + ///Return type for `customerAddTaxExemptions` mutation. + /// + public class CustomerAddTaxExemptionsPayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `CustomerCancelDataErasureUserError`. + /// + public enum CustomerCancelDataErasureErrorCode + { + /// + ///Customer does not exist. + /// + DOES_NOT_EXIST, + /// + ///Failed to cancel customer data erasure. + /// + FAILED_TO_CANCEL, + /// + ///Customer's data is not scheduled for erasure. + /// + NOT_BEING_ERASED, + } + + /// + ///Return type for `customerCancelDataErasure` mutation. + /// + public class CustomerCancelDataErasurePayload : GraphQLObject + { + /// + ///The ID of the customer whose pending data erasure has been cancelled. + /// + public string? customerId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs when cancelling a customer data erasure request. + /// + public class CustomerCancelDataErasureUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///An auto-generated type for paginating through multiple Customers. + /// + public class CustomerConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CustomerEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The source that collected the customer's consent to receive marketing materials. + /// + public enum CustomerConsentCollectedFrom + { + /// + ///The customer consent was collected by Shopify. + /// + SHOPIFY, + /// + ///The customer consent was collected outside of Shopify. + /// + OTHER, + } + + /// + ///Return type for `customerCreate` mutation. + /// + public class CustomerCreatePayload : GraphQLObject + { + /// + ///The created customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a card instrument for customer payment method. + /// + public class CustomerCreditCard : GraphQLObject, ICustomerPaymentInstrument + { + /// + ///The billing address of the card. + /// + public CustomerCreditCardBillingAddress? billingAddress { get; set; } + /// + ///The brand of the card. + /// + public string? brand { get; set; } + /// + ///Whether the card is about to expire. + /// + public bool? expiresSoon { get; set; } + /// + ///The expiry month of the card. + /// + public int? expiryMonth { get; set; } + /// + ///The expiry year of the card. + /// + public int? expiryYear { get; set; } + /// + ///The card's BIN number. + /// + public string? firstDigits { get; set; } + /// + ///The payment method can be revoked if there are no active subscription contracts. + /// + public bool? isRevocable { get; set; } + /// + ///The last 4 digits of the card. + /// + public string? lastDigits { get; set; } + /// + ///The masked card number with only the last 4 digits displayed. + /// + public string? maskedNumber { get; set; } + /// + ///The name of the card holder. + /// + public string? name { get; set; } + /// + ///The source of the card if coming from a wallet such as Apple Pay. + /// + public string? source { get; set; } + /// + ///The last 4 digits of the Device Account Number. + /// + public string? virtualLastDigits { get; set; } + } + + /// + ///The billing address of a credit card payment instrument. + /// + public class CustomerCreditCardBillingAddress : GraphQLObject + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + /// + ///The two-letter code for the country of the address. + ///For example, US. + /// + public string? countryCode { get; set; } + /// + ///The first name in the billing address. + /// + public string? firstName { get; set; } + /// + ///The last name in the billing address. + /// + public string? lastName { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The alphanumeric code for the region. + ///For example, ON. + /// + public string? provinceCode { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///Return type for `customerDelete` mutation. + /// + public class CustomerDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted customer. + /// + public string? deletedCustomerId { get; set; } + /// + ///The shop of the deleted customer. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Customer and a cursor during pagination. + /// + public class CustomerEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerEdge. + /// + public Customer? node { get; set; } + } + + /// + ///Represents an email address. + /// + public class CustomerEmailAddress : GraphQLObject + { + /// + ///The customer's default email address. + /// + public string? emailAddress { get; set; } + /// + ///Whether the customer has subscribed to email marketing. + /// + public string? marketingState { get; set; } + /// + ///The URL to unsubscribe a member from all mailing lists. + /// + public string? marketingUnsubscribeUrl { get; set; } + /// + ///Whether the customer has opted in to having their opened emails tracked. + /// + public string? openTrackingLevel { get; set; } + /// + ///The URL that can be used to opt a customer in or out of email open tracking. + /// + public string? openTrackingUrl { get; set; } + } + + /// + ///Possible marketing states for the customer’s email address. + /// + public enum CustomerEmailAddressMarketingState + { + /// + ///The customer’s email address marketing state is invalid. + /// + INVALID, + /// + ///The customer is not subscribed to email marketing. + /// + NOT_SUBSCRIBED, + /// + ///The customer is in the process of subscribing to email marketing. + /// + PENDING, + /// + ///The customer is subscribed to email marketing. + /// + SUBSCRIBED, + /// + ///The customer is not subscribed to email marketing but was previously subscribed. + /// + UNSUBSCRIBED, + } + + /// + ///The different levels related to whether a customer has opted in to having their opened emails tracked. + /// + public enum CustomerEmailAddressOpenTrackingLevel + { + /// + ///The customer has not specified whether they want to opt in or out of having their open emails tracked. + /// + UNKNOWN, + /// + ///The customer has opted in to having their open emails tracked. + /// + OPTED_IN, + /// + ///The customer has opted out of having their open emails tracked. + /// + OPTED_OUT, + } + + /// + ///The record of when a customer consented to receive marketing material by email. + /// + public class CustomerEmailMarketingConsentState : GraphQLObject + { + /// + ///The date and time at which the customer consented to receive marketing material by email. + ///The customer's consent state reflects the consent record with the most recent `consent_updated_at` date. + ///If no date is provided, then the date and time at which the consent information was sent is used. + /// + public DateTime? consentUpdatedAt { get; set; } + /// + ///The marketing subscription opt-in level, as described by the M3AAWG best practices guidelines, + ///that the customer gave when they consented to receive marketing material by email. + /// + public string? marketingOptInLevel { get; set; } + /// + ///The current email marketing state for the customer. + /// + public string? marketingState { get; set; } + } + + /// + ///Return type for `customerEmailMarketingConsentUpdate` mutation. + /// + public class CustomerEmailMarketingConsentUpdatePayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { 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 `CustomerEmailMarketingConsentUpdate`. + /// + public class CustomerEmailMarketingConsentUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerEmailMarketingConsentUpdateUserError`. + /// + public enum CustomerEmailMarketingConsentUpdateUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///Missing a required argument. + /// + MISSING_ARGUMENT, + } + + /// + ///The possible email marketing states for a customer. + /// + public enum CustomerEmailMarketingState + { + /// + ///The customer isn't subscribed to email marketing. + /// + NOT_SUBSCRIBED, + /// + ///The customer is in the process of subscribing to email marketing. + /// + PENDING, + /// + ///The customer is subscribed to email marketing. + /// + SUBSCRIBED, + /// + ///The customer isn't currently subscribed to email marketing but was previously subscribed. + /// + UNSUBSCRIBED, + /// + ///The customer's personal data is erased. This value is internally-set and read-only. + /// + REDACTED, + /// + ///The customer’s email address marketing state is invalid. + /// + INVALID, + } + + /// + ///Return type for `customerGenerateAccountActivationUrl` mutation. + /// + public class CustomerGenerateAccountActivationUrlPayload : GraphQLObject + { + /// + ///The generated account activation URL. + /// + public string? accountActivationUrl { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a customer's visiting activities on a shop's online store. + /// + public class CustomerJourney : GraphQLObject + { + /// + ///The position of the current order within the customer's order history. + /// + public int? customerOrderIndex { get; set; } + /// + ///The amount of days between first session and order creation date. First session represents first session since the last order, or first session within the 30 day attribution window, if more than 30 days has passed since the last order. + /// + public int? daysToConversion { get; set; } + /// + ///The customer's first session going into the shop. + /// + public CustomerVisit? firstVisit { get; set; } + /// + ///The last session before an order is made. + /// + public CustomerVisit? lastVisit { get; set; } + /// + ///Events preceding a customer order, such as shop sessions. + /// + public IEnumerable? moments { get; set; } + } + + /// + ///Represents a customer's visiting activities on a shop's online store. + /// + public class CustomerJourneySummary : GraphQLObject + { + /// + ///The position of the current order within the customer's order history. Test orders aren't included. + /// + public int? customerOrderIndex { get; set; } + /// + ///The number of days between the first session and the order creation date. The first session represents the first session since the last order, or the first session within the 30 day attribution window, if more than 30 days have passed since the last order. + /// + public int? daysToConversion { get; set; } + /// + ///The customer's first session going into the shop. + /// + public CustomerVisit? firstVisit { get; set; } + /// + ///The last session before an order is made. + /// + public CustomerVisit? lastVisit { get; set; } + /// + ///The events preceding a customer's order, such as shop sessions. + /// + public CustomerMomentConnection? moments { get; set; } + /// + ///The total number of customer moments associated with this order. Returns null if the order is still in the process of being attributed. + /// + public Count? momentsCount { get; set; } + /// + ///Whether the attributed sessions for the order have been created yet. + /// + public bool? ready { get; set; } + } + + /// + ///The possible values for the marketing subscription opt-in level enabled at the time the customer consented to receive marketing information. + /// + ///The levels are defined by [the M3AAWG best practices guideline + /// document](https://www.m3aawg.org/sites/maawg/files/news/M3AAWG_Senders_BCP_Ver3-2015-02.pdf). + /// + public enum CustomerMarketingOptInLevel + { + /// + ///After providing their information, the customer receives marketing information without any + ///intermediate steps. + /// + SINGLE_OPT_IN, + /// + ///After providing their information, the customer receives a confirmation and is required to + ///perform a intermediate step before receiving marketing information. + /// + CONFIRMED_OPT_IN, + /// + ///The customer receives marketing information but how they were opted in is unknown. + /// + UNKNOWN, + } + + /// + ///The error blocking a customer merge. + /// + public class CustomerMergeError : GraphQLObject + { + /// + ///The list of fields preventing the customer from being merged. + /// + public IEnumerable? errorFields { get; set; } + /// + ///The customer merge error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `CustomerMergeUserError`. + /// + public enum CustomerMergeErrorCode + { + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///The customer cannot be merged. + /// + INVALID_CUSTOMER, + /// + ///The customer ID is invalid. + /// + INVALID_CUSTOMER_ID, + /// + ///The customer cannot be merged because it has associated gift cards. + /// + CUSTOMER_HAS_GIFT_CARDS, + /// + ///The customer is missing the attribute requested for override. + /// + MISSING_OVERRIDE_ATTRIBUTE, + /// + ///The override attribute is invalid. + /// + OVERRIDE_ATTRIBUTE_INVALID, + } + + /// + ///The types of the hard blockers preventing a customer from being merged to another customer. + /// + public enum CustomerMergeErrorFieldType + { + /// + ///The customer does not exist. + /// + DELETED_AT, + /// + ///The customer has a pending or completed redaction. + /// + REDACTED_AT, + /// + ///The customer has a subscription history. + /// + SUBSCRIPTIONS, + /// + ///The customer has a merge in progress. + /// + MERGE_IN_PROGRESS, + /// + ///The customer has gift cards. + /// + GIFT_CARDS, + /// + ///The customer has store credit. + /// + STORE_CREDIT, + /// + ///The customer is a company contact. + /// + COMPANY_CONTACT, + /// + ///The customer has payment methods. + /// + CUSTOMER_PAYMENT_METHODS, + /// + ///The customer has a pending data request. + /// + PENDING_DATA_REQUEST, + /// + ///The customer has a multipass identifier. + /// + MULTIPASS_IDENTIFIER, + } + + /// + ///Return type for `customerMerge` mutation. + /// + public class CustomerMergePayload : GraphQLObject + { + /// + ///The asynchronous job for merging the customers. + /// + public Job? job { get; set; } + /// + ///The ID of the customer resulting from the merge. + /// + public string? resultingCustomerId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A preview of the results of a customer merge request. + /// + public class CustomerMergePreview : GraphQLObject + { + /// + ///The fields that can be used to override the default fields. + /// + public CustomerMergePreviewAlternateFields? alternateFields { get; set; } + /// + ///The fields that will block the merge if the two customers are merged. + /// + public CustomerMergePreviewBlockingFields? blockingFields { get; set; } + /// + ///The errors blocking the customer merge. + /// + public IEnumerable? customerMergeErrors { get; set; } + /// + ///The fields that will be kept if the two customers are merged. + /// + public CustomerMergePreviewDefaultFields? defaultFields { get; set; } + /// + ///The resulting customer ID if the two customers are merged. + /// + public string? resultingCustomerId { get; set; } + } + + /// + ///The fields that can be used to override the default fields. + /// + public class CustomerMergePreviewAlternateFields : GraphQLObject + { + /// + ///The default address of a customer. + /// + public MailingAddress? defaultAddress { get; set; } + /// + ///The email state of a customer. + /// + public CustomerEmailAddress? email { get; set; } + /// + ///The first name of a customer. + /// + public string? firstName { get; set; } + /// + ///The last name of a customer. + /// + public string? lastName { get; set; } + /// + ///The phone number state of a customer. + /// + public CustomerPhoneNumber? phoneNumber { get; set; } + } + + /// + ///The blocking fields of a customer merge preview. These fields will block customer merge unless edited. + /// + public class CustomerMergePreviewBlockingFields : GraphQLObject + { + /// + ///The merged note resulting from a customer merge. The merged note is over the 5000 character limit and will block customer merge. + /// + public string? note { get; set; } + /// + ///The merged tags resulting from a customer merge. The merged tags are over the 250 limit and will block customer merge. + /// + public IEnumerable? tags { get; set; } + } + + /// + ///The fields that will be kept as part of a customer merge preview. + /// + public class CustomerMergePreviewDefaultFields : GraphQLObject + { + /// + ///The merged addresses resulting from a customer merge. + /// + public MailingAddressConnection? addresses { get; set; } + /// + ///The default address resulting from a customer merge. + /// + public MailingAddress? defaultAddress { get; set; } + /// + ///The total number of customer-specific discounts resulting from a customer merge. + /// + public ulong? discountNodeCount { get; set; } + /// + ///The merged customer-specific discounts resulting from a customer merge. + /// + public DiscountNodeConnection? discountNodes { get; set; } + /// + ///The full name of the customer, based on the values for `first_name` and `last_name`. If `first_name` and `last_name` aren't available, then this field falls back to the customer's email address. If the customer's email isn't available, then this field falls back to the customer's phone number. + /// + public string? displayName { get; set; } + /// + ///The total number of merged draft orders. + /// + public ulong? draftOrderCount { get; set; } + /// + ///The merged draft orders resulting from a customer merge. + /// + public DraftOrderConnection? draftOrders { get; set; } + /// + ///The email state of a customer. + /// + public CustomerEmailAddress? email { get; set; } + /// + ///The first name resulting from a customer merge. + /// + public string? firstName { get; set; } + /// + ///The total number of merged gift cards. + /// + public ulong? giftCardCount { get; set; } + /// + ///The merged gift cards resulting from a customer merge. + /// + public GiftCardConnection? giftCards { get; set; } + /// + ///The last name resulting from a customer merge. + /// + public string? lastName { get; set; } + /// + ///The total number of merged metafields. + /// + public ulong? metafieldCount { get; set; } + /// + ///The merged note resulting from a customer merge. + /// + public string? note { get; set; } + /// + ///The total number of merged orders. + /// + public ulong? orderCount { get; set; } + /// + ///The merged orders resulting from a customer merge. + /// + public OrderConnection? orders { get; set; } + /// + ///The phone number state of a customer. + /// + public CustomerPhoneNumber? phoneNumber { get; set; } + /// + ///The merged tags resulting from a customer merge. + /// + public IEnumerable? tags { get; set; } + } + + /// + ///A merge request for merging two customers. + /// + public class CustomerMergeRequest : GraphQLObject + { + /// + ///The merge errors that occurred during the customer merge request. + /// + public IEnumerable? customerMergeErrors { get; set; } + /// + ///The UUID of the merge job. + /// + public string? jobId { get; set; } + /// + ///The ID of the customer resulting from the merge. + /// + public string? resultingCustomerId { get; set; } + /// + ///The status of the customer merge request. + /// + public string? status { get; set; } + } + + /// + ///The status of the customer merge request. + /// + public enum CustomerMergeRequestStatus + { + /// + ///The customer merge request has been requested. + /// + REQUESTED, + /// + ///The customer merge request is currently in progress. + /// + IN_PROGRESS, + /// + ///The customer merge request has been completed. + /// + COMPLETED, + /// + ///The customer merge request has failed. + /// + FAILED, + } + + /// + ///An error that occurs while merging two customers. + /// + public class CustomerMergeUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///An object that represents whether a customer can be merged with another customer. + /// + public class CustomerMergeable : GraphQLObject + { + /// + ///The list of fields preventing the customer from being merged. + /// + public IEnumerable? errorFields { get; set; } + /// + ///Whether the customer can be merged with another customer. + /// + public bool? isMergeable { get; set; } + /// + ///The merge request if one is currently in progress. + /// + public CustomerMergeRequest? mergeInProgress { get; set; } + /// + ///The reason why the customer can't be merged with another customer. + /// + public string? reason { get; set; } + } + + /// + ///Represents a session preceding an order, often used for building a timeline of events leading to an order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CustomerVisit), typeDiscriminator: "CustomerVisit")] + public interface ICustomerMoment : IGraphQLObject + { + public CustomerVisit? AsCustomerVisit() => this as CustomerVisit; + /// + ///The date and time when the customer's session occurred. + /// + public DateTime? occurredAt { get; } + } + + /// + ///An auto-generated type for paginating through multiple CustomerMoments. + /// + public class CustomerMomentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CustomerMomentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CustomerMoment and a cursor during pagination. + /// + public class CustomerMomentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerMomentEdge. + /// + public ICustomerMoment? node { get; set; } + } + + /// + ///All possible instruments for CustomerPaymentMethods. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CustomerCreditCard), typeDiscriminator: "CustomerCreditCard")] + [JsonDerivedType(typeof(CustomerPaypalBillingAgreement), typeDiscriminator: "CustomerPaypalBillingAgreement")] + [JsonDerivedType(typeof(CustomerShopPayAgreement), typeDiscriminator: "CustomerShopPayAgreement")] + public interface ICustomerPaymentInstrument : IGraphQLObject + { + public CustomerCreditCard? AsCustomerCreditCard() => this as CustomerCreditCard; + public CustomerPaypalBillingAgreement? AsCustomerPaypalBillingAgreement() => this as CustomerPaypalBillingAgreement; + public CustomerShopPayAgreement? AsCustomerShopPayAgreement() => this as CustomerShopPayAgreement; + /// + ///The payment method can be revoked if there are no active subscription contracts. + /// + public bool? isRevocable { get; set; } + } + + /// + ///The billing address of a payment instrument. + /// + public class CustomerPaymentInstrumentBillingAddress : GraphQLObject + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + /// + ///The two-letter code for the country of the address. + ///For example, US. + /// + public string? countryCode { get; set; } + /// + ///The name of the buyer of the address. + /// + public string? name { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The alphanumeric code for the region. + ///For example, ON. + /// + public string? provinceCode { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///A customer's payment method. + /// + public class CustomerPaymentMethod : GraphQLObject, INode + { + /// + ///The customer to whom the payment method belongs. + /// + public Customer? customer { get; set; } + /// + ///The ID of this payment method. + /// + public string? id { get; set; } + /// + ///The instrument for this payment method. + /// + public ICustomerPaymentInstrument? instrument { get; set; } + /// + ///The time that the payment method was revoked. + /// + public DateTime? revokedAt { get; set; } + /// + ///The revocation reason for this payment method. + /// + public string? revokedReason { get; set; } + /// + ///List Subscription Contracts. + /// + public SubscriptionContractConnection? subscriptionContracts { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CustomerPaymentMethods. + /// + public class CustomerPaymentMethodConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CustomerPaymentMethodEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `customerPaymentMethodCreateFromDuplicationData` mutation. + /// + public class CustomerPaymentMethodCreateFromDuplicationDataPayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { 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 `CustomerPaymentMethodCreateFromDuplicationData`. + /// + public class CustomerPaymentMethodCreateFromDuplicationDataUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerPaymentMethodCreateFromDuplicationDataUserError`. + /// + public enum CustomerPaymentMethodCreateFromDuplicationDataUserErrorCode + { + /// + ///Too many requests. + /// + TOO_MANY_REQUESTS, + /// + ///Customer doesn't exist. + /// + CUSTOMER_DOES_NOT_EXIST, + /// + ///Invalid encrypted duplication data. + /// + INVALID_ENCRYPTED_DUPLICATION_DATA, + } + + /// + ///Return type for `customerPaymentMethodCreditCardCreate` mutation. + /// + public class CustomerPaymentMethodCreditCardCreatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///If the card verification result is processing. When this is true, customer_payment_method will be null. + /// + public bool? processing { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerPaymentMethodCreditCardUpdate` mutation. + /// + public class CustomerPaymentMethodCreditCardUpdatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///If the card verification result is processing. When this is true, customer_payment_method will be null. + /// + public bool? processing { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one CustomerPaymentMethod and a cursor during pagination. + /// + public class CustomerPaymentMethodEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerPaymentMethodEdge. + /// + public CustomerPaymentMethod? node { get; set; } + } + + /// + ///Return type for `customerPaymentMethodGetDuplicationData` mutation. + /// + public class CustomerPaymentMethodGetDuplicationDataPayload : GraphQLObject + { + /// + ///The encrypted data from the payment method to be duplicated. + /// + public string? encryptedDuplicationData { 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 `CustomerPaymentMethodGetDuplicationData`. + /// + public class CustomerPaymentMethodGetDuplicationDataUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerPaymentMethodGetDuplicationDataUserError`. + /// + public enum CustomerPaymentMethodGetDuplicationDataUserErrorCode + { + /// + ///Payment method doesn't exist. + /// + PAYMENT_METHOD_DOES_NOT_EXIST, + /// + ///Invalid payment instrument. + /// + INVALID_INSTRUMENT, + /// + ///Too many requests. + /// + TOO_MANY_REQUESTS, + /// + ///Customer doesn't exist. + /// + CUSTOMER_DOES_NOT_EXIST, + /// + ///Target shop cannot be the same as the source. + /// + SAME_SHOP, + /// + ///Must be targeted to another shop in the same organization. + /// + INVALID_ORGANIZATION_SHOP, + } + + /// + ///Return type for `customerPaymentMethodGetUpdateUrl` mutation. + /// + public class CustomerPaymentMethodGetUpdateUrlPayload : GraphQLObject + { + /// + ///The URL to redirect the customer to update the payment method. + /// + public string? updatePaymentMethodUrl { 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 `CustomerPaymentMethodGetUpdateUrl`. + /// + public class CustomerPaymentMethodGetUpdateUrlUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerPaymentMethodGetUpdateUrlUserError`. + /// + public enum CustomerPaymentMethodGetUpdateUrlUserErrorCode + { + /// + ///Payment method doesn't exist. + /// + PAYMENT_METHOD_DOES_NOT_EXIST, + /// + ///Invalid payment instrument. + /// + INVALID_INSTRUMENT, + /// + ///Too many requests. + /// + TOO_MANY_REQUESTS, + /// + ///Customer doesn't exist. + /// + CUSTOMER_DOES_NOT_EXIST, + } + + /// + ///Return type for `customerPaymentMethodPaypalBillingAgreementCreate` mutation. + /// + public class CustomerPaymentMethodPaypalBillingAgreementCreatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerPaymentMethodPaypalBillingAgreementUpdate` mutation. + /// + public class CustomerPaymentMethodPaypalBillingAgreementUpdatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerPaymentMethodRemoteCreate` mutation. + /// + public class CustomerPaymentMethodRemoteCreatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerPaymentMethodRemoteCreditCardCreate` mutation. + /// + public class CustomerPaymentMethodRemoteCreditCardCreatePayload : GraphQLObject + { + /// + ///The customer payment method. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error in the input of a mutation. + /// + public class CustomerPaymentMethodRemoteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerPaymentMethodRemoteUserError`. + /// + public enum CustomerPaymentMethodRemoteUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///Exactly one remote reference is required. + /// + EXACTLY_ONE_REMOTE_REFERENCE_REQUIRED, + /// + ///Authorize.net is not enabled for subscriptions. + /// + AUTHORIZE_NET_NOT_ENABLED_FOR_SUBSCRIPTIONS, + /// + ///Braintree is not enabled for subscriptions. + /// + BRAINTREE_NOT_ENABLED_FOR_SUBSCRIPTIONS, + } + + /// + ///The revocation reason types for a customer payment method. + /// + public enum CustomerPaymentMethodRevocationReason + { + /// + ///The Authorize.net payment gateway is not enabled. + /// + AUTHORIZE_NET_GATEWAY_NOT_ENABLED, + /// + ///Authorize.net did not return any payment methods. Make sure that the correct Authorize.net account is linked. + /// + AUTHORIZE_NET_RETURNED_NO_PAYMENT_METHOD, + /// + ///The credit card failed to update. + /// + FAILED_TO_UPDATE_CREDIT_CARD, + /// + ///Failed to contact the Stripe API. + /// + STRIPE_API_AUTHENTICATION_ERROR, + /// + ///Invalid request. Failed to retrieve payment method from Stripe. + /// + STRIPE_API_INVALID_REQUEST_ERROR, + /// + ///The Stripe payment gateway is not enabled. + /// + STRIPE_GATEWAY_NOT_ENABLED, + /// + ///Stripe did not return any payment methods. Make sure that the correct Stripe account is linked. + /// + STRIPE_RETURNED_NO_PAYMENT_METHOD, + /// + ///The Stripe payment method type should be card. + /// + STRIPE_PAYMENT_METHOD_NOT_CARD, + /// + ///Failed to contact Braintree API. + /// + BRAINTREE_API_AUTHENTICATION_ERROR, + /// + ///The Braintree payment gateway is not enabled. + /// + BRAINTREE_GATEWAY_NOT_ENABLED, + /// + ///Braintree returned no payment methods. Make sure the correct Braintree account is linked. + /// + BRAINTREE_RETURNED_NO_PAYMENT_METHOD, + /// + ///The Braintree payment method type should be a credit card or Apple Pay card. + /// + BRAINTREE_PAYMENT_METHOD_NOT_CARD, + /// + ///The payment method was manually revoked. + /// + MANUALLY_REVOKED, + /// + ///The billing address failed to retrieve. + /// + FAILED_TO_RETRIEVE_BILLING_ADDRESS, + /// + ///The payment method was replaced with an existing payment method. The associated contracts have been migrated to the other payment method. + /// + MERGED, + } + + /// + ///Return type for `customerPaymentMethodRevoke` mutation. + /// + public class CustomerPaymentMethodRevokePayload : GraphQLObject + { + /// + ///The ID of the revoked customer payment method. + /// + public string? revokedCustomerPaymentMethodId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerPaymentMethodSendUpdateEmail` mutation. + /// + public class CustomerPaymentMethodSendUpdateEmailPayload : GraphQLObject + { + /// + ///The customer to whom an update payment method email was sent. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error in the input of a mutation. + /// + public class CustomerPaymentMethodUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerPaymentMethodUserError`. + /// + public enum CustomerPaymentMethodUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is already taken. + /// + TAKEN, + } + + /// + ///Represents a PayPal instrument for customer payment method. + /// + public class CustomerPaypalBillingAgreement : GraphQLObject, ICustomerPaymentInstrument + { + /// + ///The billing address of this payment method. + /// + public CustomerPaymentInstrumentBillingAddress? billingAddress { get; set; } + /// + ///Whether the PayPal billing agreement is inactive. + /// + public bool? inactive { get; set; } + /// + ///Whether the payment method can be revoked.The payment method can be revoked if there are no active subscription contracts. + /// + public bool? isRevocable { get; set; } + /// + ///The customers's PayPal account email address. + /// + public string? paypalAccountEmail { get; set; } + } + + /// + ///A phone number. + /// + public class CustomerPhoneNumber : GraphQLObject + { + /// + ///Whether the customer has subscribed to SMS marketing material. + /// + public string? marketingState { get; set; } + /// + ///A customer's phone number. + /// + public string? phoneNumber { get; set; } + } + + /// + ///The valid tiers for the predicted spend of a customer with a shop. + /// + public enum CustomerPredictedSpendTier + { + /// + ///The customer's spending is predicted to be in the top spending range for the shop in the following year. + /// + HIGH, + /// + ///The customer's spending is predicted to be in the normal spending range for the shop in the following year. + /// + MEDIUM, + /// + ///The customer's spending is predicted to be zero, or in the lowest spending range for the shop in the following year. + /// + LOW, + } + + /// + ///The possible product subscription states for a customer, as defined by the customer's subscription contracts. + /// + public enum CustomerProductSubscriberStatus + { + /// + ///The customer has at least one active subscription contract. + /// + ACTIVE, + /// + ///The customer's last subscription contract was cancelled and there are no other active or paused + ///subscription contracts. + /// + CANCELLED, + /// + ///The customer's last subscription contract expired and there are no other active or paused + ///subscription contracts. + /// + EXPIRED, + /// + ///The customer's last subscription contract failed and there are no other active or paused + ///subscription contracts. + /// + FAILED, + /// + ///The customer has never had a subscription contract. + /// + NEVER_SUBSCRIBED, + /// + ///The customer has at least one paused subscription contract and there are no other active + ///subscription contracts. + /// + PAUSED, + } + + /// + ///Return type for `customerRemoveTaxExemptions` mutation. + /// + public class CustomerRemoveTaxExemptionsPayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerReplaceTaxExemptions` mutation. + /// + public class CustomerReplaceTaxExemptionsPayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `CustomerRequestDataErasureUserError`. + /// + public enum CustomerRequestDataErasureErrorCode + { + /// + ///Customer does not exist. + /// + DOES_NOT_EXIST, + /// + ///Failed to request customer data erasure. + /// + FAILED_TO_REQUEST, + } + + /// + ///Return type for `customerRequestDataErasure` mutation. + /// + public class CustomerRequestDataErasurePayload : GraphQLObject + { + /// + ///The ID of the customer that will be erased. + /// + public string? customerId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs when requesting a customer data erasure. + /// + public class CustomerRequestDataErasureUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///The set of valid sort keys for the CustomerSavedSearch query. + /// + public enum CustomerSavedSearchSortKeys + { + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///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, + } + + /// + ///The member of a segment. + /// + public class CustomerSegmentMember : GraphQLObject, IHasMetafields + { + /// + ///The total amount of money that the member has spent on orders. + /// + public MoneyV2? amountSpent { get; set; } + /// + ///The member's default address. + /// + public MailingAddress? defaultAddress { get; set; } + /// + ///The member's default email address. + /// + public CustomerEmailAddress? defaultEmailAddress { get; set; } + /// + ///The member's default phone number. + /// + public CustomerPhoneNumber? defaultPhoneNumber { get; set; } + /// + ///The full name of the member, which is based on the values of the `first_name` and `last_name` fields. If the member's first name and last name aren't available, then the customer's email address is used. If the customer's email address isn't available, then the customer's phone number is used. + /// + public string? displayName { get; set; } + /// + ///The member's first name. + /// + public string? firstName { get; set; } + /// + ///The member’s ID. + /// + public string? id { get; set; } + /// + ///The member's last name. + /// + public string? lastName { get; set; } + /// + ///The ID of the member's most recent order. + /// + public string? lastOrderId { get; set; } + /// + ///Whether the customer can be merged with another customer. + /// + public CustomerMergeable? mergeable { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///A note about the member. + /// + public string? note { get; set; } + /// + ///The total number of orders that the member has made. + /// + public ulong? numberOfOrders { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 connection type for the `CustomerSegmentMembers` object. + /// + public class CustomerSegmentMemberConnection : GraphQLObject, IConnectionWithEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + /// + ///The statistics for a given segment. + /// + public SegmentStatistics? statistics { get; set; } + /// + ///The total number of members in a given segment. + /// + public int? totalCount { get; set; } + } + + /// + ///An auto-generated type which holds one CustomerSegmentMember and a cursor during pagination. + /// + public class CustomerSegmentMemberEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerSegmentMemberEdge. + /// + public CustomerSegmentMember? node { get; set; } + } + + /// + ///A job to determine a list of members, such as customers, that are associated with an individual segment. + /// + public class CustomerSegmentMembersQuery : GraphQLObject, IJobResult, INode + { + /// + ///The current total number of members in a given segment. + /// + public int? currentCount { get; set; } + /// + ///This indicates if the job is still queued or has been run. + /// + public bool? done { get; set; } + /// + ///A globally-unique ID that's returned when running an asynchronous mutation. + /// + public string? id { get; set; } + } + + /// + ///Return type for `customerSegmentMembersQueryCreate` mutation. + /// + public class CustomerSegmentMembersQueryCreatePayload : GraphQLObject + { + /// + ///The newly created customer segment members query. + /// + public CustomerSegmentMembersQuery? customerSegmentMembersQuery { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a customer segment members query custom error. + /// + public class CustomerSegmentMembersQueryUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerSegmentMembersQueryUserError`. + /// + public enum CustomerSegmentMembersQueryUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Return type for `customerSendAccountInviteEmail` mutation. + /// + public class CustomerSendAccountInviteEmailPayload : GraphQLObject + { + /// + ///The customer to whom an account invite email was sent. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors for customerSendAccountInviteEmail mutation. + /// + public class CustomerSendAccountInviteEmailUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerSendAccountInviteEmailUserError`. + /// + public enum CustomerSendAccountInviteEmailUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Represents a Shop Pay card instrument for customer payment method. + /// + public class CustomerShopPayAgreement : GraphQLObject, ICustomerPaymentInstrument + { + /// + ///The billing address of the card. + /// + public CustomerCreditCardBillingAddress? billingAddress { get; set; } + /// + ///Whether the card is about to expire. + /// + public bool? expiresSoon { get; set; } + /// + ///The expiry month of the card. + /// + public int? expiryMonth { get; set; } + /// + ///The expiry year of the card. + /// + public int? expiryYear { get; set; } + /// + ///Whether the Shop Pay billing agreement is inactive. + /// + public bool? inactive { get; set; } + /// + ///The payment method can be revoked if there are no active subscription contracts. + /// + public bool? isRevocable { get; set; } + /// + ///The last 4 digits of the card. + /// + public string? lastDigits { get; set; } + /// + ///The masked card number with only the last 4 digits displayed. + /// + public string? maskedNumber { get; set; } + /// + ///The name of the card holder. + /// + public string? name { get; set; } + } + + /// + ///An error that occurs during execution of an SMS marketing consent mutation. + /// + public class CustomerSmsMarketingConsentError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `CustomerSmsMarketingConsentError`. + /// + public enum CustomerSmsMarketingConsentErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///Missing a required argument. + /// + MISSING_ARGUMENT, + } + + /// + ///The record of when a customer consented to receive marketing material by SMS. + /// + ///The customer's consent state reflects the record with the most recent date when consent was updated. + /// + public class CustomerSmsMarketingConsentState : GraphQLObject + { + /// + ///The source from which the SMS marketing information for the customer was collected. + /// + public string? consentCollectedFrom { get; set; } + /// + ///The date and time when the customer consented to receive marketing material by SMS. + ///If no date is provided, then the date and time when the consent information was sent is used. + /// + public DateTime? consentUpdatedAt { get; set; } + /// + ///The marketing subscription opt-in level that was set when the customer consented to receive marketing information. + /// + public string? marketingOptInLevel { get; set; } + /// + ///The current SMS marketing state for the customer. + /// + public string? marketingState { get; set; } + } + + /// + ///Return type for `customerSmsMarketingConsentUpdate` mutation. + /// + public class CustomerSmsMarketingConsentUpdatePayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The valid SMS marketing states for a customer’s phone number. + /// + public enum CustomerSmsMarketingState + { + /// + ///The customer hasn't subscribed to SMS marketing. + /// + NOT_SUBSCRIBED, + /// + ///The customer is in the process of subscribing to SMS marketing. + /// + PENDING, + /// + ///The customer is subscribed to SMS marketing. + /// + SUBSCRIBED, + /// + ///The customer isn't currently subscribed to SMS marketing but was previously subscribed. + /// + UNSUBSCRIBED, + /// + ///The customer's personal data is erased. This value is internally-set and read-only. + /// + REDACTED, + } + + /// + ///The set of valid sort keys for the Customer query. + /// + public enum CustomerSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `location` value. + /// + LOCATION, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///The valid values for the state of a customer's account with a shop. + /// + public enum CustomerState + { + /// + ///The customer declined the email invite to create an account. + /// + DECLINED, + /// + ///The customer doesn't have an active account. Customer accounts can be disabled from the Shopify admin at any time. + /// + DISABLED, + /// + ///The customer has created an account. + /// + ENABLED, + /// + ///The customer has received an email invite to create an account. + /// + INVITED, + } + + /// + ///A customer's computed statistics. + /// + public class CustomerStatistics : GraphQLObject + { + /// + ///The predicted spend tier of a customer with a shop. + /// + public string? predictedSpendTier { get; set; } + } + + /// + ///Return type for `customerUpdateDefaultAddress` mutation. + /// + public class CustomerUpdateDefaultAddressPayload : GraphQLObject + { + /// + ///The customer whose address was updated. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `customerUpdate` mutation. + /// + public class CustomerUpdatePayload : GraphQLObject + { + /// + ///The updated customer. + /// + public Customer? customer { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a customer's session visiting a shop's online store, including information about the marketing activity attributed to starting the session. + /// + public class CustomerVisit : GraphQLObject, ICustomerMoment, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///URL of the first page the customer landed on for the session. + /// + public string? landingPage { get; set; } + /// + ///Landing page information with URL linked in HTML. For example, the first page the customer visited was store.myshopify.com/products/1. + /// + public string? landingPageHtml { get; set; } + /// + ///Represent actions taken by an app, on behalf of a merchant, + ///to market Shopify resources such as products, collections, and discounts. + /// + public MarketingEvent? marketingEvent { get; set; } + /// + ///The date and time when the customer's session occurred. + /// + public DateTime? occurredAt { get; set; } + /// + ///Marketing referral code from the link that the customer clicked to visit the store. + ///Supports the following URL attributes: _ref_, _source_, or _r_. + ///For example, if the URL is myshopifystore.com/products/slide?ref=j2tj1tn2, then this value is j2tj1tn2. + /// + public string? referralCode { get; set; } + /// + ///Referral information with URLs linked in HTML. + /// + public string? referralInfoHtml { get; set; } + /// + ///Webpage where the customer clicked a link that sent them to the online store. + ///For example, _https://randomblog.com/page1_ or _android-app://com.google.android.gm_. + /// + public string? referrerUrl { get; set; } + /// + ///Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, + ///a website domain, QR code, or unknown. + /// + public string? source { get; set; } + /// + ///Describes the source explicitly for first or last session. + /// + public string? sourceDescription { get; set; } + /// + ///Type of marketing tactic. + /// + public string? sourceType { get; set; } + /// + ///A set of UTM parameters gathered from the URL parameters of the referrer. + /// + public UTMParameters? utmParameters { get; set; } + } + + /// + ///This type returns the information about the product and product variant from a customer visit. + /// + public class CustomerVisitProductInfo : GraphQLObject + { + /// + ///The product information. If `null`, then the product was deleted from the store. + /// + public Product? product { get; set; } + /// + ///The quantity of the product that the customer requested. + /// + public int? quantity { get; set; } + /// + ///The product variant information, if the product variant exists. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple CustomerVisitProductInfos. + /// + public class CustomerVisitProductInfoConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in CustomerVisitProductInfoEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one CustomerVisitProductInfo and a cursor during pagination. + /// + public class CustomerVisitProductInfoEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of CustomerVisitProductInfoEdge. + /// + public CustomerVisitProductInfo? node { get; set; } + } + + /// + ///Return type for `dataSaleOptOut` mutation. + /// + public class DataSaleOptOutPayload : GraphQLObject + { + /// + ///The ID of the customer whose email address has been opted out of data sale. + /// + public string? customerId { 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 `DataSaleOptOut`. + /// + public class DataSaleOptOutUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DataSaleOptOutUserError`. + /// + public enum DataSaleOptOutUserErrorCode + { + /// + ///Data sale opt out failed. + /// + FAILED, + } + + /// + ///Days of the week from Monday to Sunday. + /// + public enum DayOfTheWeek + { + /// + ///Monday. + /// + MONDAY, + /// + ///Tuesday. + /// + TUESDAY, + /// + ///Wednesday. + /// + WEDNESDAY, + /// + ///Thursday. + /// + THURSDAY, + /// + ///Friday. + /// + FRIDAY, + /// + ///Saturday. + /// + SATURDAY, + /// + ///Sunday. + /// + SUNDAY, + } + + /// + ///A token that delegates a set of scopes from the original permission. + /// + ///To learn more about creating delegate access tokens, refer to + ///[Delegate OAuth access tokens to subsystems](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/use-delegate-tokens). + /// + public class DelegateAccessToken : GraphQLObject + { + /// + ///The list of permissions associated with the token. + /// + public IEnumerable? accessScopes { get; set; } + /// + ///The issued delegate access token. + /// + public string? accessToken { get; set; } + /// + ///The date and time when the delegate access token was created. + /// + public DateTime? createdAt { get; set; } + } + + /// + ///Return type for `delegateAccessTokenCreate` mutation. + /// + public class DelegateAccessTokenCreatePayload : GraphQLObject + { + /// + ///The delegate access token. + /// + public DelegateAccessToken? delegateAccessToken { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { 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 `DelegateAccessTokenCreate`. + /// + public class DelegateAccessTokenCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DelegateAccessTokenCreateUserError`. + /// + public enum DelegateAccessTokenCreateUserErrorCode + { + /// + ///The access scope can't be empty. + /// + EMPTY_ACCESS_SCOPE, + /// + ///The parent access token can't be a delegate token. + /// + DELEGATE_ACCESS_TOKEN, + /// + ///The expires_in value must be greater than 0. + /// + NEGATIVE_EXPIRES_IN, + /// + ///The delegate token can't expire after the parent token. + /// + EXPIRES_AFTER_PARENT, + /// + ///The parent access token can't have a refresh token. + /// + REFRESH_TOKEN, + /// + ///Persistence failed. + /// + PERSISTENCE_FAILED, + /// + ///Unknown scopes. + /// + UNKNOWN_SCOPES, + } + + /// + ///Return type for `delegateAccessTokenDestroy` mutation. + /// + public class DelegateAccessTokenDestroyPayload : GraphQLObject + { + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The status of the delegate access token destroy operation. Returns true if successful. + /// + public bool? status { 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 `DelegateAccessTokenDestroy`. + /// + public class DelegateAccessTokenDestroyUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DelegateAccessTokenDestroyUserError`. + /// + public enum DelegateAccessTokenDestroyUserErrorCode + { + /// + ///Persistence failed. + /// + PERSISTENCE_FAILED, + /// + ///Access token not found. + /// + ACCESS_TOKEN_NOT_FOUND, + /// + ///Cannot delete parent access token. + /// + CAN_ONLY_DELETE_DELEGATE_TOKENS, + /// + ///Access denied. + /// + ACCESS_DENIED, + } + + /// + ///Deletion events chronicle the destruction of resources (e.g. products and collections). + ///Once deleted, the deletion event is the only trace of the original's existence, + ///as the resource itself has been removed and can no longer be accessed. + /// + public class DeletionEvent : GraphQLObject + { + /// + ///The date and time when the deletion event for the related resource was generated. + /// + public DateTime? occurredAt { get; set; } + /// + ///The ID of the resource that was deleted. + /// + public string? subjectId { get; set; } + /// + ///The type of resource that was deleted. + /// + public string? subjectType { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeletionEvents. + /// + public class DeletionEventConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeletionEventEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DeletionEvent and a cursor during pagination. + /// + public class DeletionEventEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeletionEventEdge. + /// + public DeletionEvent? node { get; set; } + } + + /// + ///The set of valid sort keys for the DeletionEvent query. + /// + public enum DeletionEventSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///The supported subject types of deletion events. + /// + public enum DeletionEventSubjectType + { + COLLECTION, + PRODUCT, + } + + /// + ///A shipping service and a list of countries that the service is available for. + /// + public class DeliveryAvailableService : GraphQLObject + { + /// + ///The countries the service provider ships to. + /// + public DeliveryCountryCodesOrRestOfWorld? countries { get; set; } + /// + ///The name of the service. + /// + public string? name { get; set; } + } + + /// + ///Represents a branded promise presented to buyers. + /// + public class DeliveryBrandedPromise : GraphQLObject + { + /// + ///The handle of the branded promise. For example: `shop_promise`. + /// + public string? handle { get; set; } + /// + ///The name of the branded promise. For example: `Shop Promise`. + /// + public string? name { get; set; } + } + + /// + ///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. | + /// + ///### Special conditions + /// + ///* To indicate that this carrier service cannot handle this shipping request, return an empty array and any successful (20x) HTTP code. + ///* To force backup rates instead, return a 40x or 50x HTTP code with any content. A good choice is the regular 404 Not Found code. + ///* Redirects (30x codes) will only be followed for the same domain as the original callback URL. Attempting to redirect to a different domain will trigger backup rates. + ///* There is no retry mechanism. The response must be successful on the first try, within the time budget listed below. Timeouts or errors will trigger backup rates. + /// + ///## 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 + { + /// + ///Whether the carrier service is active. + /// + public bool? active { get; set; } + /// + ///The list of services offered for given destinations. + /// + public IEnumerable? availableServicesForCountries { get; set; } + /// + ///The URL endpoint that Shopify needs to retrieve shipping rates. + /// + public string? callbackUrl { get; set; } + /// + ///The properly formatted name of the shipping service provider, ready to display. + /// + public string? formattedName { get; set; } + /// + ///The logo of the service provider. + /// + public Image? icon { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the shipping service provider. + /// + public string? name { get; set; } + /// + ///Whether merchants are able to send dummy data to your service through the Shopify admin to see shipping rate examples. + /// + public bool? supportsServiceDiscovery { get; set; } + } + + /// + ///A carrier service and the associated list of shop locations. + /// + public class DeliveryCarrierServiceAndLocations : GraphQLObject + { + /// + ///The carrier service. + /// + public DeliveryCarrierService? carrierService { get; set; } + /// + ///The list of locations that support this carrier service. + /// + public IEnumerable? locations { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryCarrierServices. + /// + public class DeliveryCarrierServiceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryCarrierServiceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryCarrierService and a cursor during pagination. + /// + public class DeliveryCarrierServiceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryCarrierServiceEdge. + /// + public DeliveryCarrierService? node { get; set; } + } + + /// + ///A condition that must pass for a delivery method definition to be applied to an order. + /// + public class DeliveryCondition : GraphQLObject, INode + { + /// + ///The value (weight or price) that the condition field is compared to. + /// + public IDeliveryConditionCriteria? conditionCriteria { get; set; } + /// + ///The field to compare the criterion value against, using the operator. + /// + public string? field { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The operator to compare the field and criterion value. + /// + public string? @operator { get; set; } + } + + /// + ///The value (weight or price) that the condition field is compared to. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(MoneyV2), typeDiscriminator: "MoneyV2")] + [JsonDerivedType(typeof(Weight), typeDiscriminator: "Weight")] + public interface IDeliveryConditionCriteria : IGraphQLObject + { + public MoneyV2? AsMoneyV2() => this as MoneyV2; + public Weight? AsWeight() => this as Weight; + } + + /// + ///The field type that the condition will be applied to. + /// + public enum DeliveryConditionField + { + /// + ///The condition will check against the total weight of the order. + /// + TOTAL_WEIGHT, + /// + ///The condition will check against the total price of the order. + /// + TOTAL_PRICE, + } + + /// + ///The operator to use to determine if the condition passes. + /// + public enum DeliveryConditionOperator + { + /// + ///The condition will check whether the field is greater than or equal to the criterion. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The condition will check if the field is less than or equal to the criterion. + /// + LESS_THAN_OR_EQUAL_TO, + } + + /// + ///A country that is used to define a shipping zone. + /// + public class DeliveryCountry : GraphQLObject, INode + { + /// + ///A two-letter country code in ISO 3166-1 alpha-2 standard. + ///It also includes a flag indicating whether the country should be + ///a part of the 'Rest Of World' shipping zone. + /// + public DeliveryCountryCodeOrRestOfWorld? code { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The full name of the country. + /// + public string? name { get; set; } + /// + ///The list of regions associated with this country. + /// + public IEnumerable? provinces { get; set; } + /// + ///The translated name of the country. The translation returned is based on the system's locale. + /// + public string? translatedName { get; set; } + } + + /// + ///The country details and the associated shipping zone. + /// + public class DeliveryCountryAndZone : GraphQLObject + { + /// + ///The country details. + /// + public DeliveryCountry? country { get; set; } + /// + ///The name of the shipping zone. + /// + public string? zone { get; set; } + } + + /// + ///The country code and whether the country is a part of the 'Rest Of World' shipping zone. + /// + public class DeliveryCountryCodeOrRestOfWorld : GraphQLObject + { + /// + ///The country code in the ISO 3166-1 alpha-2 format. + /// + public string? countryCode { get; set; } + /// + ///Whether the country is a part of the 'Rest of World' shipping zone. + /// + public bool? restOfWorld { get; set; } + } + + /// + ///The list of country codes and information whether the countries + ///are a part of the 'Rest Of World' shipping zone. + /// + public class DeliveryCountryCodesOrRestOfWorld : GraphQLObject + { + /// + ///List of applicable country codes in the ISO 3166-1 alpha-2 format. + /// + public IEnumerable? countryCodes { get; set; } + /// + ///Whether the countries are a part of the 'Rest of World' shipping zone. + /// + public bool? restOfWorld { get; set; } + } + + /// + ///A delivery customization. + /// + public class DeliveryCustomization : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The enabled status of the delivery customization. + /// + public bool? enabled { get; set; } + /// + ///The error history on the most recent version of the delivery customization. + /// + public FunctionsErrorHistory? errorHistory { get; set; } + /// + ///The ID of the Shopify Function implementing the delivery customization. + /// + public string? functionId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 Shopify Function implementing the delivery customization. + /// + public ShopifyFunction? shopifyFunction { get; set; } + /// + ///The title of the delivery customization. + /// + public string? title { get; set; } + } + + /// + ///Return type for `deliveryCustomizationActivation` mutation. + /// + public class DeliveryCustomizationActivationPayload : GraphQLObject + { + /// + ///The IDs of the updated delivery customizations. + /// + public IEnumerable? ids { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryCustomizations. + /// + public class DeliveryCustomizationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryCustomizationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `deliveryCustomizationCreate` mutation. + /// + public class DeliveryCustomizationCreatePayload : GraphQLObject + { + /// + ///Returns the created delivery customization. + /// + public DeliveryCustomization? deliveryCustomization { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `deliveryCustomizationDelete` mutation. + /// + public class DeliveryCustomizationDeletePayload : GraphQLObject + { + /// + ///Returns the deleted delivery customization ID. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryCustomization and a cursor during pagination. + /// + public class DeliveryCustomizationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryCustomizationEdge. + /// + public DeliveryCustomization? node { get; set; } + } + + /// + ///An error that occurs during the execution of a delivery customization mutation. + /// + public class DeliveryCustomizationError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DeliveryCustomizationError`. + /// + public enum DeliveryCustomizationErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Function not found. + /// + FUNCTION_NOT_FOUND, + /// + ///Delivery customization not found. + /// + DELIVERY_CUSTOMIZATION_NOT_FOUND, + /// + ///Shop must be on a Shopify Plus plan to activate delivery customizations from a custom app. + /// + DELIVERY_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE, + /// + ///Unauthorized app scope. + /// + UNAUTHORIZED_APP_SCOPE, + /// + ///Maximum delivery customizations are already enabled. + /// + MAXIMUM_ACTIVE_DELIVERY_CUSTOMIZATIONS, + /// + ///Shop must be on a Shopify Plus plan to activate functions from a custom app. + /// + CUSTOM_APP_FUNCTION_NOT_ELIGIBLE, + /// + ///Function does not implement the required interface for this delivery customization. + /// + FUNCTION_DOES_NOT_IMPLEMENT, + /// + ///Function is pending deletion. + /// + FUNCTION_PENDING_DELETION, + /// + ///Function ID cannot be changed. + /// + FUNCTION_ID_CANNOT_BE_CHANGED, + /// + ///Required input field must be present. + /// + REQUIRED_INPUT_FIELD, + /// + ///Could not create or update metafields. + /// + INVALID_METAFIELDS, + } + + /// + ///Return type for `deliveryCustomizationUpdate` mutation. + /// + public class DeliveryCustomizationUpdatePayload : GraphQLObject + { + /// + ///Returns the updated delivery customization. + /// + public DeliveryCustomization? deliveryCustomization { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Whether the shop is blocked from converting to full multi-location delivery profiles mode. If the shop is blocked, then the blocking reasons are also returned. + /// + public class DeliveryLegacyModeBlocked : GraphQLObject + { + /// + ///Whether the shop can convert to full multi-location delivery profiles mode. + /// + public bool? blocked { get; set; } + /// + ///The reasons why the shop is blocked from converting to full multi-location delivery profiles mode. + /// + public IEnumerable? reasons { get; set; } + } + + /// + ///Reasons the shop is blocked from converting to full multi-location delivery profiles mode. + /// + public enum DeliveryLegacyModeBlockedReason + { + /// + ///Multi-Location mode is disabled. The shop can't convert to full multi-location delivery profiles mode. + /// + [Obsolete("All shops are now using multi-location mode.")] + MULTI_LOCATION_DISABLED, + /// + ///There are no locations for this store that can fulfill online orders. + /// + NO_LOCATIONS_FULFILLING_ONLINE_ORDERS, + } + + /// + ///Local pickup settings associated with a location. + /// + public class DeliveryLocalPickupSettings : GraphQLObject + { + /// + ///Additional instructions or information related to the local pickup. + /// + public string? instructions { get; set; } + /// + ///The estimated pickup time to show customers at checkout. + /// + public string? pickupTime { get; set; } + } + + /// + ///Possible pickup time values that a location enabled for local pickup can have. + /// + public enum DeliveryLocalPickupTime + { + /// + ///Usually ready in 1 hour. + /// + ONE_HOUR, + /// + ///Usually ready in 2 hours. + /// + TWO_HOURS, + /// + ///Usually ready in 4 hours. + /// + FOUR_HOURS, + /// + ///Usually ready in 24 hours. + /// + TWENTY_FOUR_HOURS, + /// + ///Usually ready in 2-4 days. + /// + TWO_TO_FOUR_DAYS, + /// + ///Usually ready in 5+ days. + /// + FIVE_OR_MORE_DAYS, + } + + /// + ///A location group is a collection of locations. They share zones and delivery methods across delivery + ///profiles. + /// + public class DeliveryLocationGroup : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A list of all locations that are part of this location group. + /// + public LocationConnection? locations { get; set; } + /// + ///A count of all locations that are part of this location group. + /// + public Count? locationsCount { get; set; } + } + + /// + ///Links a location group with a zone and the associated method definitions. + /// + public class DeliveryLocationGroupZone : GraphQLObject + { + /// + ///The number of method definitions for the zone. + /// + public DeliveryMethodDefinitionCounts? methodDefinitionCounts { get; set; } + /// + ///The method definitions associated to a zone and location group. + /// + public DeliveryMethodDefinitionConnection? methodDefinitions { get; set; } + /// + ///The zone associated to a location group. + /// + public DeliveryZone? zone { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryLocationGroupZones. + /// + public class DeliveryLocationGroupZoneConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryLocationGroupZoneEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryLocationGroupZone and a cursor during pagination. + /// + public class DeliveryLocationGroupZoneEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryLocationGroupZoneEdge. + /// + public DeliveryLocationGroupZone? node { get; set; } + } + + /// + ///Represents an error that happened when changing local pickup settings for a location. + /// + public class DeliveryLocationLocalPickupSettingsError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DeliveryLocationLocalPickupSettingsError`. + /// + public enum DeliveryLocationLocalPickupSettingsErrorCode + { + /// + ///Provided locationId is not for an active location belonging to this store. + /// + ACTIVE_LOCATION_NOT_FOUND, + /// + ///An error occurred while changing the local pickup settings. + /// + GENERIC_ERROR, + } + + /// + ///The delivery method used by a fulfillment order. + /// + 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. + /// + public DeliveryBrandedPromise? brandedPromise { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The latest delivery date and time when the fulfillment is expected to arrive at the buyer's location. + /// + public DateTime? maxDeliveryDateTime { get; set; } + /// + ///The type of the delivery method. + /// + public string? methodType { get; set; } + /// + ///The earliest delivery date and time when the fulfillment is expected to arrive at the buyer's location. + /// + public DateTime? minDeliveryDateTime { get; set; } + /// + ///The name of the delivery option that was presented to the buyer during checkout. + /// + public string? presentedName { get; set; } + /// + ///A reference to the shipping method. + /// + public string? serviceCode { get; set; } + /// + ///Source reference is promise provider specific data associated with delivery promise. + /// + public string? sourceReference { 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. + /// + public class DeliveryMethodDefinition : GraphQLObject, INode + { + /// + ///Whether this method definition is active. + /// + public bool? active { get; set; } + /// + ///The description of the method definition. Only available on shipping rates that are custom. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The method conditions that must pass for this method definition to be applied to an order. + /// + public IEnumerable? methodConditions { get; set; } + /// + ///The name of the method definition. + /// + public string? name { get; set; } + /// + ///The provided rate for this method definition, from a rate definition or participant. + /// + public IDeliveryRateProvider? rateProvider { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryMethodDefinitions. + /// + public class DeliveryMethodDefinitionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryMethodDefinitionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The number of method definitions for a zone, separated into merchant-owned and participant definitions. + /// + public class DeliveryMethodDefinitionCounts : GraphQLObject + { + /// + ///The number of participant method definitions for the specified zone. + /// + public int? participantDefinitionsCount { get; set; } + /// + ///The number of merchant-defined method definitions for the specified zone. + /// + public int? rateDefinitionsCount { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryMethodDefinition and a cursor during pagination. + /// + public class DeliveryMethodDefinitionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryMethodDefinitionEdge. + /// + public DeliveryMethodDefinition? node { get; set; } + } + + /// + ///The different types of method definitions to filter by. + /// + public enum DeliveryMethodDefinitionType + { + /// + ///A static merchant-defined rate. + /// + MERCHANT, + /// + ///A dynamic participant rate. + /// + PARTICIPANT, + } + + /// + ///Possible method types that a delivery method can have. + /// + public enum DeliveryMethodType + { + /// + ///The order is shipped. + /// + SHIPPING, + /// + ///The order is picked up by the customer. + /// + PICK_UP, + /// + ///Non-physical items, no delivery needed. + /// + NONE, + /// + ///In-store sale, no delivery needed. + /// + RETAIL, + /// + ///The order is delivered using a local delivery service. + /// + LOCAL, + /// + ///The order is delivered to a pickup point. + /// + PICKUP_POINT, + } + + /// + ///A participant defines carrier-calculated rates for shipping services + ///with a possible merchant-defined fixed fee or a percentage-of-rate fee. + /// + public class DeliveryParticipant : GraphQLObject, INode, IDeliveryRateProvider + { + /// + ///Whether to display new shipping services automatically to the customer when the service becomes available. + /// + public bool? adaptToNewServicesFlag { get; set; } + /// + ///The carrier used for this participant. + /// + public DeliveryCarrierService? carrierService { get; set; } + /// + ///The merchant-defined fixed fee for this participant. + /// + public MoneyV2? fixedFee { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The carrier-specific services offered by the participant, and whether each service is active. + /// + public IEnumerable? participantServices { get; set; } + /// + ///The merchant-defined percentage-of-rate fee for this participant. + /// + public decimal? percentageOfRateFee { get; set; } + } + + /// + ///A mail service provided by the participant. + /// + public class DeliveryParticipantService : GraphQLObject + { + /// + ///Whether the service is active. + /// + public bool? active { get; set; } + /// + ///The name of the service. + /// + public string? name { get; set; } + } + + /// + ///How many product variants are in a profile. This count is capped at 500. + /// + public class DeliveryProductVariantsCount : GraphQLObject + { + /// + ///Whether the count has reached the cap of 500. + /// + public bool? capped { get; set; } + /// + ///The product variant count. + /// + public int? count { get; set; } + } + + /// + ///A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones. Learn more about [building with delivery profiles](https://shopify.dev/apps/build/purchase-options/deferred/delivery-and-deferment/build-delivery-profiles). + /// + public class DeliveryProfile : GraphQLObject, INode + { + /// + ///The number of active shipping rates for the profile. + /// + public int? activeMethodDefinitionsCount { get; set; } + /// + ///Whether this is the default profile. + /// + public bool? @default { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether this shop has enabled legacy compatibility mode for delivery profiles. + /// + public bool? legacyMode { get; set; } + /// + ///The number of locations without rates defined. + /// + public int? locationsWithoutRatesCount { get; set; } + /// + ///The name of the delivery profile. + /// + public string? name { get; set; } + /// + ///The number of active origin locations for the profile. + /// + public int? originLocationCount { get; set; } + /// + ///How many product variants are in this profile. + /// + 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. + /// + public DeliveryProfileItemConnection? profileItems { get; set; } + /// + ///The location groups and associated zones using this profile. + /// + public IEnumerable? profileLocationGroups { get; set; } + /// + ///Selling plan groups associated with the specified delivery profile. + /// + public SellingPlanGroupConnection? sellingPlanGroups { get; set; } + /// + ///List of locations that haven't been assigned to a location group for this profile. + /// + public IEnumerable? unassignedLocations { get; set; } + /// + ///List of locations that have not been assigned to a location group for this profile. + /// + public LocationConnection? unassignedLocationsPaginated { get; set; } + /// + ///The number of countries with active rates to deliver to. + /// + public int? zoneCountryCount { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryProfiles. + /// + public class DeliveryProfileConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryProfileEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `deliveryProfileCreate` mutation. + /// + public class DeliveryProfileCreatePayload : GraphQLObject + { + /// + ///The delivery profile that was created. + /// + public DeliveryProfile? profile { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryProfile and a cursor during pagination. + /// + public class DeliveryProfileEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryProfileEdge. + /// + public DeliveryProfile? node { get; set; } + } + + /// + ///A product and the subset of associated variants that are part of this delivery profile. + /// + public class DeliveryProfileItem : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A product associated with this profile. + /// + public Product? product { get; set; } + /// + ///The product variants associated with this delivery profile. + /// + public ProductVariantConnection? variants { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DeliveryProfileItems. + /// + public class DeliveryProfileItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DeliveryProfileItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DeliveryProfileItem and a cursor during pagination. + /// + public class DeliveryProfileItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DeliveryProfileItemEdge. + /// + public DeliveryProfileItem? node { get; set; } + } + + /// + ///Links a location group with zones. Both are associated to a delivery profile. + /// + public class DeliveryProfileLocationGroup : GraphQLObject + { + /// + ///The countries already selected in any zone for the specified location group. + /// + public IEnumerable? countriesInAnyZone { get; set; } + /// + ///The collection of locations that make up the specified location group. + /// + public DeliveryLocationGroup? locationGroup { get; set; } + /// + ///The applicable zones associated to the specified location group. + /// + public DeliveryLocationGroupZoneConnection? locationGroupZones { get; set; } + } + + /// + ///Return type for `deliveryProfileRemove` mutation. + /// + public class DeliveryProfileRemovePayload : GraphQLObject + { + /// + ///The delivery profile deletion job triggered by the mutation. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `deliveryProfileUpdate` mutation. + /// + public class DeliveryProfileUpdatePayload : GraphQLObject + { + /// + ///The delivery profile that was updated. + /// + public DeliveryProfile? profile { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A delivery promise provider. Currently restricted to select approved delivery promise partners. + /// + public class DeliveryPromiseProvider : GraphQLObject, INode + { + /// + ///Whether the delivery promise provider is active. Defaults to `true` when creating a provider. + /// + public bool? active { get; set; } + /// + ///The number of seconds to add to the current time as a buffer when looking up delivery promises. Represents how long the shop requires before releasing an order to the fulfillment provider. + /// + public int? fulfillmentDelay { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The location associated with this delivery promise provider. + /// + public Location? location { get; set; } + /// + ///The time zone to be used for interpreting day of week and cutoff times in delivery schedules when looking up delivery promises. + /// + public string? timeZone { get; set; } + } + + /// + ///Return type for `deliveryPromiseProviderUpsert` mutation. + /// + public class DeliveryPromiseProviderUpsertPayload : GraphQLObject + { + /// + ///The created or updated delivery promise provider. + /// + public DeliveryPromiseProvider? deliveryPromiseProvider { 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 `DeliveryPromiseProviderUpsert`. + /// + public class DeliveryPromiseProviderUpsertUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DeliveryPromiseProviderUpsertUserError`. + /// + public enum DeliveryPromiseProviderUpsertUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The location doesn't belong to the app. + /// + MUST_BELONG_TO_APP, + /// + ///The time zone is invalid. + /// + INVALID_TIME_ZONE, + } + + /// + ///A region that is used to define a shipping zone. + /// + public class DeliveryProvince : GraphQLObject, INode + { + /// + ///The code of the region. + /// + public string? code { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The full name of the region. + /// + public string? name { get; set; } + /// + ///The translated name of the region. The translation returned is based on the system's locale. + /// + public string? translatedName { get; set; } + } + + /// + ///The merchant-defined rate of the [DeliveryMethodDefinition](https://shopify.dev/api/admin-graphql/latest/objects/DeliveryMethodDefinition). + /// + public class DeliveryRateDefinition : GraphQLObject, INode, IDeliveryRateProvider + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The price of this rate. + /// + public MoneyV2? price { get; set; } + } + + /// + ///A rate provided by a merchant-defined rate or a participant. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DeliveryParticipant), typeDiscriminator: "DeliveryParticipant")] + [JsonDerivedType(typeof(DeliveryRateDefinition), typeDiscriminator: "DeliveryRateDefinition")] + public interface IDeliveryRateProvider : IGraphQLObject + { + public DeliveryParticipant? AsDeliveryParticipant() => this as DeliveryParticipant; + public DeliveryRateDefinition? AsDeliveryRateDefinition() => this as DeliveryRateDefinition; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///The `DeliverySetting` object enables you to manage shop-wide shipping settings. + ///You can enable legacy compatibility mode for the multi-location delivery profiles feature + ///if the legacy mode isn't blocked. + /// + public class DeliverySetting : GraphQLObject + { + /// + ///Whether the shop is blocked from converting to full multi-location delivery profiles mode. If the shop is blocked, then the blocking reasons are also returned. + /// + public DeliveryLegacyModeBlocked? legacyModeBlocked { get; set; } + /// + ///Enables legacy compatability mode for the multi-location delivery profiles feature. + /// + public bool? legacyModeProfiles { get; set; } + } + + /// + ///Return type for `deliverySettingUpdate` mutation. + /// + public class DeliverySettingUpdatePayload : GraphQLObject + { + /// + ///The updated delivery shop level settings. + /// + public DeliverySetting? setting { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `deliveryShippingOriginAssign` mutation. + /// + public class DeliveryShippingOriginAssignPayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A zone is a group of countries that have the same shipping rates. Customers can order products from a store only if they choose a shipping destination that's included in one of the store's zones. + /// + public class DeliveryZone : GraphQLObject, INode + { + /// + ///The list of countries within the zone. + /// + public IEnumerable? countries { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the zone. + /// + public string? name { get; set; } + } + + /// + ///Configuration of the deposit. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DepositPercentage), typeDiscriminator: "DepositPercentage")] + public interface IDepositConfiguration : IGraphQLObject + { + public DepositPercentage? AsDepositPercentage() => this as DepositPercentage; + /// + ///The percentage value of the deposit. + /// + public decimal? percentage { get; set; } + } + + /// + ///A percentage deposit. + /// + public class DepositPercentage : GraphQLObject, IDepositConfiguration + { + /// + ///The percentage value of the deposit. + /// + public decimal? percentage { get; set; } + } + + /// + ///Digital wallet, such as Apple Pay, which can be used for accelerated checkouts. + /// + public enum DigitalWallet + { + /// + ///Apple Pay. + /// + APPLE_PAY, + /// + ///Android Pay. + /// + ANDROID_PAY, + /// + ///Google Pay. + /// + GOOGLE_PAY, + /// + ///Shopify Pay. + /// + SHOPIFY_PAY, + } + + /// + ///A discount. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountAutomaticApp), typeDiscriminator: "DiscountAutomaticApp")] + [JsonDerivedType(typeof(DiscountAutomaticBasic), typeDiscriminator: "DiscountAutomaticBasic")] + [JsonDerivedType(typeof(DiscountAutomaticBxgy), typeDiscriminator: "DiscountAutomaticBxgy")] + [JsonDerivedType(typeof(DiscountAutomaticFreeShipping), typeDiscriminator: "DiscountAutomaticFreeShipping")] + [JsonDerivedType(typeof(DiscountCodeApp), typeDiscriminator: "DiscountCodeApp")] + [JsonDerivedType(typeof(DiscountCodeBasic), typeDiscriminator: "DiscountCodeBasic")] + [JsonDerivedType(typeof(DiscountCodeBxgy), typeDiscriminator: "DiscountCodeBxgy")] + [JsonDerivedType(typeof(DiscountCodeFreeShipping), typeDiscriminator: "DiscountCodeFreeShipping")] + public interface IDiscount : IGraphQLObject + { + public DiscountAutomaticApp? AsDiscountAutomaticApp() => this as DiscountAutomaticApp; + public DiscountAutomaticBasic? AsDiscountAutomaticBasic() => this as DiscountAutomaticBasic; + public DiscountAutomaticBxgy? AsDiscountAutomaticBxgy() => this as DiscountAutomaticBxgy; + public DiscountAutomaticFreeShipping? AsDiscountAutomaticFreeShipping() => this as DiscountAutomaticFreeShipping; + public DiscountCodeApp? AsDiscountCodeApp() => this as DiscountCodeApp; + public DiscountCodeBasic? AsDiscountCodeBasic() => this as DiscountCodeBasic; + public DiscountCodeBxgy? AsDiscountCodeBxgy() => this as DiscountCodeBxgy; + public DiscountCodeFreeShipping? AsDiscountCodeFreeShipping() => this as DiscountCodeFreeShipping; + /// + ///The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An amount that's allocated to a line based on an associated discount application. + /// + public class DiscountAllocation : GraphQLObject + { + /// + ///The money amount that's allocated to a line based on the associated discount application. + /// + [Obsolete("Use `allocatedAmountSet` instead.")] + public MoneyV2? allocatedAmount { get; set; } + /// + ///The money amount that's allocated to a line based on the associated discount application in shop and presentment currencies. + /// + public MoneyBag? allocatedAmountSet { get; set; } + /// + ///The discount application that the allocated amount originated from. + /// + public IDiscountApplication? discountApplication { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountAllocations. + /// + public class DiscountAllocationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountAllocationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountAllocation and a cursor during pagination. + /// + public class DiscountAllocationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountAllocationEdge. + /// + public DiscountAllocation? node { get; set; } + } + + /// + ///The fixed amount value of a discount, and whether the amount is applied to each entitled item or spread evenly across the entitled items. + /// + public class DiscountAmount : GraphQLObject, IDiscountCustomerGetsValue, IDiscountEffect + { + /// + ///The value of the discount. + /// + public MoneyV2? amount { get; set; } + /// + ///If true, then the discount is applied to each of the entitled items. If false, then the amount is split across all of the entitled items. + /// + public bool? appliesOnEachItem { get; set; } + } + + /// + ///Discount applications capture the intentions of a discount source at + ///the time of application on an order's line items or shipping lines. + /// + ///Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AutomaticDiscountApplication), typeDiscriminator: "AutomaticDiscountApplication")] + [JsonDerivedType(typeof(DiscountCodeApplication), typeDiscriminator: "DiscountCodeApplication")] + [JsonDerivedType(typeof(ManualDiscountApplication), typeDiscriminator: "ManualDiscountApplication")] + [JsonDerivedType(typeof(ScriptDiscountApplication), typeDiscriminator: "ScriptDiscountApplication")] + public interface IDiscountApplication : IGraphQLObject + { + public AutomaticDiscountApplication? AsAutomaticDiscountApplication() => this as AutomaticDiscountApplication; + public DiscountCodeApplication? AsDiscountCodeApplication() => this as DiscountCodeApplication; + public ManualDiscountApplication? AsManualDiscountApplication() => this as ManualDiscountApplication; + public ScriptDiscountApplication? AsScriptDiscountApplication() => this as ScriptDiscountApplication; + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; } + /// + ///An ordered index that can be used to identify the discount application and indicate the precedence + ///of the discount application for calculations. + /// + public int? index { get; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; } + } + + /// + ///The method by which the discount's value is allocated onto its entitled lines. + /// + public enum DiscountApplicationAllocationMethod + { + /// + ///The value is spread across all entitled lines. + /// + ACROSS, + /// + ///The value is applied onto every entitled line. + /// + EACH, + /// + ///The value is specifically applied onto a particular line. + /// + [Obsolete("Use ACROSS instead.")] + ONE, + } + + /// + ///An auto-generated type for paginating through multiple DiscountApplications. + /// + public class DiscountApplicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountApplicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountApplication and a cursor during pagination. + /// + public class DiscountApplicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountApplicationEdge. + /// + public IDiscountApplication? node { get; set; } + } + + /// + ///The level at which the discount's value is applied. + /// + public enum DiscountApplicationLevel + { + /// + ///The discount is applied at the order level. + ///Order level discounts are not factored into the discountedUnitPriceSet on line items. + /// + ORDER, + /// + ///The discount is applied at the line level. + ///Line level discounts are factored into the discountedUnitPriceSet on line items. + /// + LINE, + } + + /// + ///The lines on the order to which the discount is applied, of the type defined by + ///the discount application's `targetType`. For example, the value `ENTITLED`, combined with a `targetType` of + ///`LINE_ITEM`, applies the discount on all line items that are entitled to the discount. + ///The value `ALL`, combined with a `targetType` of `SHIPPING_LINE`, applies the discount on all shipping lines. + /// + public enum DiscountApplicationTargetSelection + { + /// + ///The discount is allocated onto all the lines. + /// + ALL, + /// + ///The discount is allocated onto only the lines that it's entitled for. + /// + ENTITLED, + /// + ///The discount is allocated onto explicitly chosen lines. + /// + EXPLICIT, + } + + /// + ///The type of line (i.e. line item or shipping line) on an order that the discount is applicable towards. + /// + public enum DiscountApplicationTargetType + { + /// + ///The discount applies onto line items. + /// + LINE_ITEM, + /// + ///The discount applies onto shipping lines. + /// + SHIPPING_LINE, + } + + /// + ///The type of discount associated to the automatic discount. For example, the automatic discount might offer a basic discount using a fixed percentage, or a fixed amount, on specific products from the order. The automatic discount may also be a BXGY discount, which offers customer discounts on select products if they add a specific product to their order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountAutomaticApp), typeDiscriminator: "DiscountAutomaticApp")] + [JsonDerivedType(typeof(DiscountAutomaticBasic), typeDiscriminator: "DiscountAutomaticBasic")] + [JsonDerivedType(typeof(DiscountAutomaticBxgy), typeDiscriminator: "DiscountAutomaticBxgy")] + [JsonDerivedType(typeof(DiscountAutomaticFreeShipping), typeDiscriminator: "DiscountAutomaticFreeShipping")] + public interface IDiscountAutomatic : IGraphQLObject + { + public DiscountAutomaticApp? AsDiscountAutomaticApp() => this as DiscountAutomaticApp; + public DiscountAutomaticBasic? AsDiscountAutomaticBasic() => this as DiscountAutomaticBasic; + public DiscountAutomaticBxgy? AsDiscountAutomaticBxgy() => this as DiscountAutomaticBxgy; + public DiscountAutomaticFreeShipping? AsDiscountAutomaticFreeShipping() => this as DiscountAutomaticFreeShipping; + /// + ///The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `discountAutomaticActivate` mutation. + /// + public class DiscountAutomaticActivatePayload : GraphQLObject + { + /// + ///The activated automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An automatic app discount. + /// + public class DiscountAutomaticApp : GraphQLObject, IDiscount, IDiscountAutomatic + { + /// + ///The app discount type providing the discount type. + /// + public AppDiscountType? appDiscountType { get; set; } + /// + ///Whether the discount applies on subscription items. + /// + public bool? appliesOnSubscription { get; set; } + /// + ///The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The ID for the discount. + /// + public string? discountId { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The error history on the most recent version of the app discount. + /// + public FunctionsErrorHistory? errorHistory { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). 0 will apply infinitely whereas 1 will only apply to the first checkout. + /// + public int? recurringCycleLimit { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `discountAutomaticAppCreate` mutation. + /// + public class DiscountAutomaticAppCreatePayload : GraphQLObject + { + /// + ///The created app discount. + /// + public DiscountAutomaticApp? automaticAppDiscount { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticAppUpdate` mutation. + /// + public class DiscountAutomaticAppUpdatePayload : GraphQLObject + { + /// + ///The updated automatic app discount. + /// + public DiscountAutomaticApp? automaticAppDiscount { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An automatic discount that offers customers a percentage discount, or fixed amount discount, on specific products, collections, or the entire order. + /// + public class DiscountAutomaticBasic : GraphQLObject, IDiscount, IDiscountAutomatic + { + /// + ///The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The qualifying items in an order, the quantity of each one, and the total value of the discount. + /// + public DiscountCustomerGets? customerGets { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The minimum subtotal or quantity that's required for the discount to be applied. + /// + public IDiscountMinimumRequirement? minimumRequirement { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). + /// + public int? recurringCycleLimit { get; set; } + /// + ///A short summary of the discount. + /// + public string? shortSummary { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + + /// + ///The number of times that the discount has been used. + /// + [Obsolete("Use `asyncUsageCount` instead.")] + public int? usageCount { get; set; } + } + + /// + ///Return type for `discountAutomaticBasicCreate` mutation. + /// + public class DiscountAutomaticBasicCreatePayload : GraphQLObject + { + /// + ///The created automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticBasicUpdate` mutation. + /// + public class DiscountAutomaticBasicUpdatePayload : GraphQLObject + { + /// + ///The updated automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticBulkDelete` mutation. + /// + public class DiscountAutomaticBulkDeletePayload : GraphQLObject + { + /// + ///The asynchronous job removing the automatic discounts. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An automatic discount that offers customers a Buy X, Get Y (BXGY) discount. + /// + public class DiscountAutomaticBxgy : GraphQLObject, IHasEvents, INode, IDiscount, IDiscountAutomatic + { + /// + ///The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount. + /// + public DiscountCustomerBuys? customerBuys { get; set; } + /// + ///The qualifying items in an order, the quantity of each one, and the total value of the discount. + /// + public DiscountCustomerGets? customerGets { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + + /// + ///A legacy unique ID for the discount. + /// + [Obsolete("Use DiscountAutomaticNode.id instead.")] + public string? id { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + + /// + ///The number of times that the discount has been used. + /// + [Obsolete("Use `asyncUsageCount` instead.")] + public int? usageCount { get; set; } + /// + ///The maximum number of times that the discount can be applied to an order. + /// + public int? usesPerOrderLimit { get; set; } + } + + /// + ///Return type for `discountAutomaticBxgyCreate` mutation. + /// + public class DiscountAutomaticBxgyCreatePayload : GraphQLObject + { + /// + ///The created automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticBxgyUpdate` mutation. + /// + public class DiscountAutomaticBxgyUpdatePayload : GraphQLObject + { + /// + ///The updated automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountAutomatics. + /// + public class DiscountAutomaticConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountAutomaticEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `discountAutomaticDeactivate` mutation. + /// + public class DiscountAutomaticDeactivatePayload : GraphQLObject + { + /// + ///The deactivated automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticDelete` mutation. + /// + public class DiscountAutomaticDeletePayload : GraphQLObject + { + /// + ///The deleted automatic discount ID. + /// + public string? deletedAutomaticDiscountId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountAutomatic and a cursor during pagination. + /// + public class DiscountAutomaticEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountAutomaticEdge. + /// + public IDiscountAutomatic? node { get; set; } + } + + /// + ///An automatic discount that offers customers free shipping on their order. + /// + public class DiscountAutomaticFreeShipping : GraphQLObject, IDiscount, IDiscountAutomatic + { + /// + ///Whether the discount applies on regular one-time-purchase shipping lines. + /// + public bool? appliesOnOneTimePurchase { get; set; } + /// + ///Whether the discount applies on subscription shipping lines. + /// + public bool? appliesOnSubscription { get; set; } + /// + ///The number of times that the discount has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A shipping destination that qualifies for the discount. + /// + public IDiscountShippingDestinationSelection? destinationSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///The maximum shipping price amount accepted to qualify for the discount. + /// + public MoneyV2? maximumShippingPrice { get; set; } + /// + ///The minimum subtotal or quantity that's required for the discount to be applied. + /// + public IDiscountMinimumRequirement? minimumRequirement { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). + /// + public int? recurringCycleLimit { get; set; } + /// + ///A short summary of the discount. + /// + public string? shortSummary { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `discountAutomaticFreeShippingCreate` mutation. + /// + public class DiscountAutomaticFreeShippingCreatePayload : GraphQLObject + { + /// + ///The created automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountAutomaticFreeShippingUpdate` mutation. + /// + public class DiscountAutomaticFreeShippingUpdatePayload : GraphQLObject + { + /// + ///The updated automatic discount. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A node containing an automatic discount and its related events. + /// + public class DiscountAutomaticNode : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The automatic discount object. + /// + public IDiscountAutomatic? automaticDiscount { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountAutomaticNodes. + /// + public class DiscountAutomaticNodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountAutomaticNodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountAutomaticNode and a cursor during pagination. + /// + public class DiscountAutomaticNodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountAutomaticNodeEdge. + /// + public DiscountAutomaticNode? node { get; set; } + } + + /// + ///The class of the discount for combining purposes. + /// + public enum DiscountClass + { + /// + ///Combined as a product discount. + /// + PRODUCT, + /// + ///Combined as an order discount. + /// + ORDER, + /// + ///Combined as a shipping discount. + /// + SHIPPING, + } + + /// + ///The type of discount associated with the discount code. For example, the discount code might offer a basic discount of a fixed percentage, or a fixed amount, on specific products or the order. Alternatively, the discount might offer the customer free shipping on their order. A third option is a Buy X, Get Y (BXGY) discount, which offers a customer discounts on select products if they add a specific product to their order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountCodeApp), typeDiscriminator: "DiscountCodeApp")] + [JsonDerivedType(typeof(DiscountCodeBasic), typeDiscriminator: "DiscountCodeBasic")] + [JsonDerivedType(typeof(DiscountCodeBxgy), typeDiscriminator: "DiscountCodeBxgy")] + [JsonDerivedType(typeof(DiscountCodeFreeShipping), typeDiscriminator: "DiscountCodeFreeShipping")] + public interface IDiscountCode : IGraphQLObject + { + public DiscountCodeApp? AsDiscountCodeApp() => this as DiscountCodeApp; + public DiscountCodeBasic? AsDiscountCodeBasic() => this as DiscountCodeBasic; + public DiscountCodeBxgy? AsDiscountCodeBxgy() => this as DiscountCodeBxgy; + public DiscountCodeFreeShipping? AsDiscountCodeFreeShipping() => this as DiscountCodeFreeShipping; + /// + ///Whether the discount can be applied only once per customer. + /// + public bool? appliesOncePerCustomer { get; set; } + /// + ///The number of times that the discount has been used. + /// + public int? asyncUsageCount { 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; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customers that can use the discount. + /// + public IDiscountCustomerSelection? customerSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The maximum number of times that the discount can be used. + /// + public int? usageLimit { get; set; } + } + + /// + ///Return type for `discountCodeActivate` mutation. + /// + public class DiscountCodeActivatePayload : GraphQLObject + { + /// + ///The activated code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A code app discount. + /// + public class DiscountCodeApp : GraphQLObject, IDiscount, IDiscountCode + { + /// + ///The app discount type providing the discount type. + /// + public AppDiscountType? appDiscountType { get; set; } + /// + ///Whether the discount can be applied only once per customer. + /// + public bool? appliesOncePerCustomer { get; set; } + /// + ///The number of times that the discount has been used. + /// + public int? asyncUsageCount { 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; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customers that can use the discount. + /// + public IDiscountCustomerSelection? customerSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The ID for the discount. + /// + public string? discountId { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///The error history on the most recent version of the discount. + /// + public FunctionsErrorHistory? errorHistory { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). + /// + public int? recurringCycleLimit { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The maximum number of times that the discount can be used. + /// + public int? usageLimit { get; set; } + } + + /// + ///Return type for `discountCodeAppCreate` mutation. + /// + public class DiscountCodeAppCreatePayload : GraphQLObject + { + /// + ///The created code app discount. + /// + public DiscountCodeApp? codeAppDiscount { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeAppUpdate` mutation. + /// + public class DiscountCodeAppUpdatePayload : GraphQLObject + { + /// + ///The updated code app discount. + /// + public DiscountCodeApp? codeAppDiscount { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Discount code applications capture the intentions of a discount code at + ///the time that it is applied onto an order. + /// + ///Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object. + /// + public class DiscountCodeApplication : GraphQLObject, IDiscountApplication + { + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The string identifying the discount code that was used at the time of application. + /// + public string? code { get; set; } + /// + ///An ordered index that can be used to identify the discount application and indicate the precedence + ///of the discount application for calculations. + /// + public int? index { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///A code discount that offers customers a percentage or fixed amount discount on specific products, collections, or the entire order. + /// + public class DiscountCodeBasic : GraphQLObject, IDiscount, IDiscountCode + { + /// + ///Whether the discount can be applied only once per customer. + /// + public bool? appliesOncePerCustomer { get; set; } + /// + ///The number of times that the discount has been used. + /// + public int? asyncUsageCount { 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; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The qualifying items in an order, the quantity of each one, and the total value of the discount. + /// + public DiscountCustomerGets? customerGets { get; set; } + /// + ///The customers that can use the discount. + /// + public IDiscountCustomerSelection? customerSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///The minimum subtotal or quantity that's required for the discount to be applied. + /// + public IDiscountMinimumRequirement? minimumRequirement { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). + /// + public int? recurringCycleLimit { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///A short summary of the discount. + /// + public string? shortSummary { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The maximum number of times that the discount can be used. + /// + public int? usageLimit { get; set; } + } + + /// + ///Return type for `discountCodeBasicCreate` mutation. + /// + public class DiscountCodeBasicCreatePayload : GraphQLObject + { + /// + ///The created code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeBasicUpdate` mutation. + /// + public class DiscountCodeBasicUpdatePayload : GraphQLObject + { + /// + ///The updated code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeBulkActivate` mutation. + /// + public class DiscountCodeBulkActivatePayload : GraphQLObject + { + /// + ///The asynchronous job that activates the code discounts. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeBulkDeactivate` mutation. + /// + public class DiscountCodeBulkDeactivatePayload : GraphQLObject + { + /// + ///The asynchronous job that deactivates the code discounts. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeBulkDelete` mutation. + /// + public class DiscountCodeBulkDeletePayload : GraphQLObject + { + /// + ///The asynchronous job that deletes the code discounts. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A code discount that offers customers a Buy X, Get Y (BXGY) discount. + /// + public class DiscountCodeBxgy : GraphQLObject, IDiscount, IDiscountCode + { + /// + ///Whether the discount can be applied only once per customer. + /// + public bool? appliesOncePerCustomer { get; set; } + /// + ///The number of times that the discount has been used. + /// + public int? asyncUsageCount { 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; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount. + /// + public DiscountCustomerBuys? customerBuys { get; set; } + /// + ///The qualifying items in an order, the quantity of each one, and the total value of the discount. + /// + public DiscountCustomerGets? customerGets { get; set; } + /// + ///The customers that can use the discount. + /// + public IDiscountCustomerSelection? customerSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The maximum number of times that the discount can be used. + /// + public int? usageLimit { get; set; } + /// + ///The maximum number of times that the discount can be applied to an order. + /// + public int? usesPerOrderLimit { get; set; } + } + + /// + ///Return type for `discountCodeBxgyCreate` mutation. + /// + public class DiscountCodeBxgyCreatePayload : GraphQLObject + { + /// + ///The created code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeBxgyUpdate` mutation. + /// + public class DiscountCodeBxgyUpdatePayload : GraphQLObject + { + /// + ///The updated code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeDeactivate` mutation. + /// + public class DiscountCodeDeactivatePayload : GraphQLObject + { + /// + ///The deactivated code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeDelete` mutation. + /// + public class DiscountCodeDeletePayload : GraphQLObject + { + /// + ///The deleted code discount ID. + /// + public string? deletedCodeDiscountId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A code discount that offers customers free shipping on their order. + /// + public class DiscountCodeFreeShipping : GraphQLObject, IDiscount, IDiscountCode + { + /// + ///Whether the discount applies on regular one-time-purchase shipping lines. + /// + public bool? appliesOnOneTimePurchase { get; set; } + /// + ///Whether the discount applies on subscription shipping lines. + /// + public bool? appliesOnSubscription { get; set; } + /// + ///Whether the discount can be applied only once per customer. + /// + public bool? appliesOncePerCustomer { get; set; } + /// + ///The number of times that the discount has been used. + /// + public int? asyncUsageCount { 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; } + /// + ///The date and time when the discount was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customers that can use the discount. + /// + public IDiscountCustomerSelection? customerSelection { get; set; } + /// + ///A shipping destination that qualifies for the discount. + /// + public IDiscountShippingDestinationSelection? destinationSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///The date and time when the discount ends. For open-ended discounts, use `null`. + /// + public DateTime? endsAt { get; set; } + /// + ///Indicates whether there are any timeline comments on the discount. + /// + public bool? hasTimelineComment { get; set; } + /// + ///The maximum shipping price amount accepted to qualify for the discount. + /// + public MoneyV2? maximumShippingPrice { get; set; } + /// + ///The minimum subtotal or quantity that's required for the discount to be applied. + /// + public IDiscountMinimumRequirement? minimumRequirement { get; set; } + /// + ///The number of times a discount applies on recurring purchases (subscriptions). + /// + public int? recurringCycleLimit { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///A short summary of the discount. + /// + public string? shortSummary { get; set; } + /// + ///The date and time when the discount starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the discount. + /// + public string? status { get; set; } + /// + ///A detailed summary of the discount. + /// + public string? summary { get; set; } + /// + ///The title of the discount. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the discount was used. + /// + public MoneyV2? totalSales { get; set; } + /// + ///The date and time when the discount was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The maximum number of times that the discount can be used. + /// + public int? usageLimit { get; set; } + } + + /// + ///Return type for `discountCodeFreeShippingCreate` mutation. + /// + public class DiscountCodeFreeShippingCreatePayload : GraphQLObject + { + /// + ///The created code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `discountCodeFreeShippingUpdate` mutation. + /// + public class DiscountCodeFreeShippingUpdatePayload : GraphQLObject + { + /// + ///The updated code discount. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A node containing a code discount and its related events. + /// + public class DiscountCodeNode : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The underlying code discount object. + /// + public IDiscountCode? codeDiscount { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountCodeNodes. + /// + public class DiscountCodeNodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountCodeNodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountCodeNode and a cursor during pagination. + /// + public class DiscountCodeNodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountCodeNodeEdge. + /// + public DiscountCodeNode? node { get; set; } + } + + /// + ///Return type for `discountCodeRedeemCodeBulkDelete` mutation. + /// + public class DiscountCodeRedeemCodeBulkDeletePayload : GraphQLObject + { + /// + ///The asynchronous job that deletes the discount redeem codes. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the DiscountCode query. + /// + public enum DiscountCodeSortKeys + { + /// + ///Sort by the `code` value. + /// + CODE, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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 collections that the discount can have as a prerequisite or a list of collections to which the discount can be applied. + /// + public class DiscountCollections : GraphQLObject, IDiscountItems + { + /// + ///The list of collections that the discount can have as a prerequisite or the list of collections to which the discount can be applied. + /// + public CollectionConnection? collections { get; set; } + } + + /// + ///Determines which discount classes the discount can combine with. + /// + public class DiscountCombinesWith : GraphQLObject + { + /// + ///Combines with order discounts. + /// + public bool? orderDiscounts { get; set; } + /// + ///Combines with product discounts. + /// + public bool? productDiscounts { get; set; } + /// + ///Combines with shipping discounts. + /// + public bool? shippingDiscounts { get; set; } + } + + /// + ///The shipping destinations where the discount can be applied. + /// + public class DiscountCountries : GraphQLObject, IDiscountShippingDestinationSelection + { + /// + ///The codes for the countries where the discount can be applied. + /// + public IEnumerable? countries { get; set; } + /// + ///Whether the discount is applicable to countries that haven't been defined in the shop's shipping zones. + /// + public bool? includeRestOfWorld { get; set; } + } + + /// + ///The `DiscountCountryAll` object lets you target all countries as shipping destination for discount eligibility. + /// + public class DiscountCountryAll : GraphQLObject, IDiscountShippingDestinationSelection + { + /// + ///Whether the discount can be applied to all countries as shipping destination. This value is always `true`. + /// + public bool? allCountries { get; set; } + } + + /// + ///The `DiscountCustomerAll` object lets you target all customers for discount eligibility. + /// + public class DiscountCustomerAll : GraphQLObject, IDiscountCustomerSelection + { + /// + ///Whether the discount can be applied by all customers. This value is always `true`. + /// + public bool? allCustomers { get; set; } + } + + /// + ///The prerequisite items and prerequisite value that a customer must have on the order for the discount to be applicable. + /// + public class DiscountCustomerBuys : GraphQLObject + { + /// + ///The items required for the discount to be applicable. + /// + public IDiscountItems? items { get; set; } + /// + ///The prerequisite value. + /// + public IDiscountCustomerBuysValue? value { get; set; } + } + + /// + ///The prerequisite for the discount to be applicable. For example, the discount might require a customer to buy a minimum quantity of select items. Alternatively, the discount might require a customer to spend a minimum amount on select items. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountPurchaseAmount), typeDiscriminator: "DiscountPurchaseAmount")] + [JsonDerivedType(typeof(DiscountQuantity), typeDiscriminator: "DiscountQuantity")] + public interface IDiscountCustomerBuysValue : IGraphQLObject + { + public DiscountPurchaseAmount? AsDiscountPurchaseAmount() => this as DiscountPurchaseAmount; + public DiscountQuantity? AsDiscountQuantity() => this as DiscountQuantity; + } + + /// + ///The qualifying items in an order, the quantity of each one, and the total value of the discount. + /// + public class DiscountCustomerGets : GraphQLObject + { + /// + ///Whether the discount applies on regular one-time-purchase items. + /// + public bool? appliesOnOneTimePurchase { get; set; } + /// + ///Whether the discount applies on subscription items. + /// + public bool? appliesOnSubscription { get; set; } + /// + ///The items to which the discount applies. + /// + public IDiscountItems? items { get; set; } + /// + ///Entitled quantity and the discount value. + /// + public IDiscountCustomerGetsValue? value { get; set; } + } + + /// + ///The type of the discount value and how it will be applied. For example, it might be a percentage discount on a fixed number of items. Alternatively, it might be a fixed amount evenly distributed across all items or on each individual item. A third example is a percentage discount on all items. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountAmount), typeDiscriminator: "DiscountAmount")] + [JsonDerivedType(typeof(DiscountOnQuantity), typeDiscriminator: "DiscountOnQuantity")] + [JsonDerivedType(typeof(DiscountPercentage), typeDiscriminator: "DiscountPercentage")] + public interface IDiscountCustomerGetsValue : IGraphQLObject + { + public DiscountAmount? AsDiscountAmount() => this as DiscountAmount; + public DiscountOnQuantity? AsDiscountOnQuantity() => this as DiscountOnQuantity; + public DiscountPercentage? AsDiscountPercentage() => this as DiscountPercentage; + } + + /// + ///A list of customer segments that contain the customers that the discount applies to. + /// + public class DiscountCustomerSegments : GraphQLObject, IDiscountCustomerSelection + { + /// + ///A list of customer segments that contain the customers who can use the discount. + /// + public IEnumerable? segments { get; set; } + } + + /// + ///The type used for targeting a set of customers who are eligible for the discount. For example, the discount might be available to all customers or it might only be available to a specific set of customers. You can define the set of customers by targeting a list of customer segments, or by targeting a list of specific customers. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountCustomerAll), typeDiscriminator: "DiscountCustomerAll")] + [JsonDerivedType(typeof(DiscountCustomerSegments), typeDiscriminator: "DiscountCustomerSegments")] + [JsonDerivedType(typeof(DiscountCustomers), typeDiscriminator: "DiscountCustomers")] + public interface IDiscountCustomerSelection : IGraphQLObject + { + public DiscountCustomerAll? AsDiscountCustomerAll() => this as DiscountCustomerAll; + public DiscountCustomerSegments? AsDiscountCustomerSegments() => this as DiscountCustomerSegments; + public DiscountCustomers? AsDiscountCustomers() => this as DiscountCustomers; + } + + /// + ///A list of customers eligible for the discount. + /// + public class DiscountCustomers : GraphQLObject, IDiscountCustomerSelection + { + /// + ///The list of customers eligible for the discount. + /// + public IEnumerable? customers { get; set; } + } + + /// + ///The type of discount that will be applied. Currently, only a percentage discount is supported. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountAmount), typeDiscriminator: "DiscountAmount")] + [JsonDerivedType(typeof(DiscountPercentage), typeDiscriminator: "DiscountPercentage")] + public interface IDiscountEffect : IGraphQLObject + { + public DiscountAmount? AsDiscountAmount() => this as DiscountAmount; + public DiscountPercentage? AsDiscountPercentage() => this as DiscountPercentage; + } + + /// + ///Possible error codes that can be returned by `DiscountUserError`. + /// + public enum DiscountErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value should be equal to the value allowed. + /// + EQUAL_TO, + /// + ///The input value should be greater than the minimum allowed value. + /// + GREATER_THAN, + /// + ///The input value should be greater than or equal to the minimum value allowed. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///The input value should be less than the maximum value allowed. + /// + LESS_THAN, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///Too many arguments provided. + /// + TOO_MANY_ARGUMENTS, + /// + ///Missing a required argument. + /// + MISSING_ARGUMENT, + /// + ///The active period overlaps with other automatic discounts. At any given time, only one automatic discount can be active. + /// + ACTIVE_PERIOD_OVERLAP, + /// + ///The value exceeded the maximum allowed value. + /// + EXCEEDED_MAX, + /// + ///Specify a minimum subtotal or a quantity, but not both. + /// + MINIMUM_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT, + /// + ///The value is outside of the allowed range. + /// + VALUE_OUTSIDE_RANGE, + /// + ///The attribute selection contains conflicting settings. + /// + CONFLICT, + /// + ///The value is already present through another selection. + /// + IMPLICIT_DUPLICATE, + /// + ///The input value is already present. + /// + DUPLICATE, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The `combinesWith` settings are invalid for the discount class. + /// + INVALID_COMBINES_WITH_FOR_DISCOUNT_CLASS, + /// + ///The discountClass is invalid for the price rule. + /// + INVALID_DISCOUNT_CLASS_FOR_PRICE_RULE, + /// + ///The active period overlaps with too many other app-provided discounts. There's a limit on the number of app discounts that can be active at any given time. + /// + MAX_APP_DISCOUNTS, + } + + /// + ///The type used to target the items required for discount eligibility, or the items to which the application of a discount might apply. For example, for a customer to be eligible for a discount, they're required to add an item from a specified collection to their order. Alternatively, a customer might be required to add a specific product or product variant. When using this type to target which items the discount will apply to, the discount might apply to all items on the order, or to specific products and product variants, or items in a given collection. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AllDiscountItems), typeDiscriminator: "AllDiscountItems")] + [JsonDerivedType(typeof(DiscountCollections), typeDiscriminator: "DiscountCollections")] + [JsonDerivedType(typeof(DiscountProducts), typeDiscriminator: "DiscountProducts")] + public interface IDiscountItems : IGraphQLObject + { + public AllDiscountItems? AsAllDiscountItems() => this as AllDiscountItems; + public DiscountCollections? AsDiscountCollections() => this as DiscountCollections; + public DiscountProducts? AsDiscountProducts() => this as DiscountProducts; + } + + /// + ///The minimum quantity of items required for the discount to apply. + /// + public class DiscountMinimumQuantity : GraphQLObject, IDiscountMinimumRequirement + { + /// + ///The minimum quantity of items that's required for the discount to be applied. + /// + public ulong? greaterThanOrEqualToQuantity { get; set; } + } + + /// + ///The type of minimum requirement that must be met for the discount to be applied. For example, a customer must spend a minimum subtotal to be eligible for the discount. Alternatively, a customer must purchase a minimum quantity of items to be eligible for the discount. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountMinimumQuantity), typeDiscriminator: "DiscountMinimumQuantity")] + [JsonDerivedType(typeof(DiscountMinimumSubtotal), typeDiscriminator: "DiscountMinimumSubtotal")] + public interface IDiscountMinimumRequirement : IGraphQLObject + { + public DiscountMinimumQuantity? AsDiscountMinimumQuantity() => this as DiscountMinimumQuantity; + public DiscountMinimumSubtotal? AsDiscountMinimumSubtotal() => this as DiscountMinimumSubtotal; + } + + /// + ///The minimum subtotal required for the discount to apply. + /// + public class DiscountMinimumSubtotal : GraphQLObject, IDiscountMinimumRequirement + { + /// + ///The minimum subtotal that's required for the discount to be applied. + /// + public MoneyV2? greaterThanOrEqualToSubtotal { get; set; } + } + + /// + ///A discount wrapper node. + /// + public class DiscountNode : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///A discount. + /// + public IDiscount? discount { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountNodes. + /// + public class DiscountNodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountNodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountNode and a cursor during pagination. + /// + public class DiscountNodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountNodeEdge. + /// + public DiscountNode? node { get; set; } + } + + /// + ///The quantity of items discounted, the discount value, and how the discount will be applied. + /// + public class DiscountOnQuantity : GraphQLObject, IDiscountCustomerGetsValue + { + /// + ///The discount's effect on qualifying items. + /// + public IDiscountEffect? effect { get; set; } + /// + ///The number of items being discounted. The customer must have at least this many items of specified products or product variants in their order to be eligible for the discount. + /// + public DiscountQuantity? quantity { get; set; } + } + + /// + ///A discount effect that gives customers a percentage off of specified items on their order. + /// + public class DiscountPercentage : GraphQLObject, IDiscountCustomerGetsValue, IDiscountEffect + { + /// + ///The percentage value of the discount. + /// + public decimal? percentage { get; set; } + } + + /// + ///A list of products and product variants that the discount can have as a prerequisite or a list of products and product variants to which the discount can be applied. + /// + public class DiscountProducts : GraphQLObject, IDiscountItems + { + /// + ///The list of product variants that the discount can have as a prerequisite or the list of product variants to which the discount can be applied. + /// + public ProductVariantConnection? productVariants { get; set; } + /// + ///The list of products that the discount can have as a prerequisite or the list of products to which the discount can be applied. + /// + public ProductConnection? products { get; set; } + } + + /// + ///A purchase amount in the context of a discount. This object can be used to define the minimum purchase amount required for a discount to be applicable. + /// + public class DiscountPurchaseAmount : GraphQLObject, IDiscountCustomerBuysValue + { + /// + ///The purchase amount in decimal format. + /// + public decimal? amount { get; set; } + } + + /// + ///A quantity of items in the context of a discount. This object can be used to define the minimum quantity of items required to apply a discount. Alternatively, it can be used to define the quantity of items that can be discounted. + /// + public class DiscountQuantity : GraphQLObject, IDiscountCustomerBuysValue + { + /// + ///The quantity of items. + /// + public ulong? quantity { get; set; } + } + + /// + ///A code that a customer can use at checkout to receive a discount. For example, a customer can use the redeem code 'SUMMER20' at checkout to receive a 20% discount on their entire order. + /// + public class DiscountRedeemCode : GraphQLObject + { + /// + ///The number of times that the discount redeem code has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? asyncUsageCount { get; set; } + /// + ///The code that a customer can use at checkout to receive a discount. + /// + public string? code { get; set; } + /// + ///The application that created the discount redeem code. + /// + public App? createdBy { get; set; } + /// + ///A globally-unique ID of the discount redeem code. + /// + public string? id { get; set; } + } + + /// + ///Return type for `discountRedeemCodeBulkAdd` mutation. + /// + public class DiscountRedeemCodeBulkAddPayload : GraphQLObject + { + /// + ///The ID of the discount redeem code bulk creation operation. The properties and status of the operation can be tracked using the [`DiscountRedeemCodeBulkCreation` query](https://shopify.dev/api/admin-graphql/2022-04/queries/discountRedeemCodeBulkCreation). + /// + public DiscountRedeemCodeBulkCreation? bulkCreation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The properties and status of a bulk discount redeem code creation operation. + /// + public class DiscountRedeemCodeBulkCreation : GraphQLObject, INode + { + /// + ///The result of each code creation operation associated with the bulk creation operation including any errors that might have occurred during the operation. + /// + public DiscountRedeemCodeBulkCreationCodeConnection? codes { get; set; } + /// + ///The number of codes to create. + /// + public int? codesCount { get; set; } + /// + ///The date and time when the bulk creation was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The code discount associated with the created codes. + /// + public DiscountCodeNode? discountCode { get; set; } + /// + ///Whether the bulk creation is still queued (`false`) or has been run (`true`). + /// + public bool? done { get; set; } + /// + ///The number of codes that weren't created successfully. + /// + public int? failedCount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The number of codes created successfully. + /// + public int? importedCount { get; set; } + } + + /// + ///A result of a discount redeem code creation operation created by a bulk creation. + /// + public class DiscountRedeemCodeBulkCreationCode : GraphQLObject + { + /// + ///The code to use in the discount redeem code creation operation. + /// + public string? code { get; set; } + /// + ///The successfully created discount redeem code. + /// + ///If the discount redeem code couldn't be created, then this field is `null``. + /// + public DiscountRedeemCode? discountRedeemCode { get; set; } + /// + ///A list of errors that occurred during the creation operation of the discount redeem code. + /// + public IEnumerable? errors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountRedeemCodeBulkCreationCodes. + /// + public class DiscountRedeemCodeBulkCreationCodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountRedeemCodeBulkCreationCodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountRedeemCodeBulkCreationCode and a cursor during pagination. + /// + public class DiscountRedeemCodeBulkCreationCodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountRedeemCodeBulkCreationCodeEdge. + /// + public DiscountRedeemCodeBulkCreationCode? node { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DiscountRedeemCodes. + /// + public class DiscountRedeemCodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DiscountRedeemCodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DiscountRedeemCode and a cursor during pagination. + /// + public class DiscountRedeemCodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DiscountRedeemCodeEdge. + /// + public DiscountRedeemCode? node { get; set; } + } + + /// + ///A shareable URL for a discount code. + /// + public class DiscountShareableUrl : GraphQLObject + { + /// + ///The image URL of the item (product or collection) to which the discount applies. + /// + public Image? targetItemImage { get; set; } + /// + ///The type of page that's associated with the URL. + /// + public string? targetType { get; set; } + /// + ///The title of the page that's associated with the URL. + /// + public string? title { get; set; } + /// + ///The URL for the discount code. + /// + public string? url { get; set; } + } + + /// + ///The type of page where a shareable discount URL lands. + /// + public enum DiscountShareableUrlTargetType + { + /// + ///The URL lands on a home page. + /// + HOME, + /// + ///The URL lands on a product page. + /// + PRODUCT, + /// + ///The URL lands on a collection page. + /// + COLLECTION, + } + + /// + ///The type used to target the eligible countries of an order's shipping destination for which the discount applies. For example, the discount might be applicable when shipping to all countries, or only to a set of countries. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DiscountCountries), typeDiscriminator: "DiscountCountries")] + [JsonDerivedType(typeof(DiscountCountryAll), typeDiscriminator: "DiscountCountryAll")] + public interface IDiscountShippingDestinationSelection : IGraphQLObject + { + public DiscountCountries? AsDiscountCountries() => this as DiscountCountries; + public DiscountCountryAll? AsDiscountCountryAll() => this as DiscountCountryAll; + } + + /// + ///The set of valid sort keys for the Discount query. + /// + public enum DiscountSortKeys + { + /// + ///Sort by the `starts_at` value. + /// + STARTS_AT, + /// + ///Sort by the `ends_at` value. + /// + ENDS_AT, + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///The status of the discount. + /// + public enum DiscountStatus + { + /// + ///The discount is active. + /// + ACTIVE, + /// + ///The discount is expired. + /// + EXPIRED, + /// + ///The discount is scheduled when it has a start date in the future. + /// + SCHEDULED, + } + + /// + ///The type of line (line item or shipping line) on an order that the subscription discount is applicable towards. + /// + public enum DiscountTargetType + { + /// + ///The discount applies onto line items. + /// + LINE_ITEM, + /// + ///The discount applies onto shipping lines. + /// + SHIPPING_LINE, + } + + /// + ///The type of the subscription discount. + /// + public enum DiscountType + { + /// + ///Manual discount type. + /// + MANUAL, + /// + ///Code discount type. + /// + CODE_DISCOUNT, + /// + ///Automatic discount type. + /// + AUTOMATIC_DISCOUNT, + } + + /// + ///An error that occurs during the execution of a discount mutation. + /// + public class DiscountUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///Extra information about this error. + /// + public string? extraInfo { 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; } + } + + /// + ///Represents an error in the input of a mutation. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AbandonmentEmailStateUpdateUserError), typeDiscriminator: "AbandonmentEmailStateUpdateUserError")] + [JsonDerivedType(typeof(AbandonmentUpdateActivitiesDeliveryStatusesUserError), typeDiscriminator: "AbandonmentUpdateActivitiesDeliveryStatusesUserError")] + [JsonDerivedType(typeof(AppRevokeAccessScopesAppRevokeScopeError), typeDiscriminator: "AppRevokeAccessScopesAppRevokeScopeError")] + [JsonDerivedType(typeof(AppSubscriptionTrialExtendUserError), typeDiscriminator: "AppSubscriptionTrialExtendUserError")] + [JsonDerivedType(typeof(ArticleCreateUserError), typeDiscriminator: "ArticleCreateUserError")] + [JsonDerivedType(typeof(ArticleDeleteUserError), typeDiscriminator: "ArticleDeleteUserError")] + [JsonDerivedType(typeof(ArticleUpdateUserError), typeDiscriminator: "ArticleUpdateUserError")] + [JsonDerivedType(typeof(BillingAttemptUserError), typeDiscriminator: "BillingAttemptUserError")] + [JsonDerivedType(typeof(BlogCreateUserError), typeDiscriminator: "BlogCreateUserError")] + [JsonDerivedType(typeof(BlogDeleteUserError), typeDiscriminator: "BlogDeleteUserError")] + [JsonDerivedType(typeof(BlogUpdateUserError), typeDiscriminator: "BlogUpdateUserError")] + [JsonDerivedType(typeof(BulkMutationUserError), typeDiscriminator: "BulkMutationUserError")] + [JsonDerivedType(typeof(BulkProductResourceFeedbackCreateUserError), typeDiscriminator: "BulkProductResourceFeedbackCreateUserError")] + [JsonDerivedType(typeof(BusinessCustomerUserError), typeDiscriminator: "BusinessCustomerUserError")] + [JsonDerivedType(typeof(CarrierServiceCreateUserError), typeDiscriminator: "CarrierServiceCreateUserError")] + [JsonDerivedType(typeof(CarrierServiceDeleteUserError), typeDiscriminator: "CarrierServiceDeleteUserError")] + [JsonDerivedType(typeof(CarrierServiceUpdateUserError), typeDiscriminator: "CarrierServiceUpdateUserError")] + [JsonDerivedType(typeof(CartTransformCreateUserError), typeDiscriminator: "CartTransformCreateUserError")] + [JsonDerivedType(typeof(CartTransformDeleteUserError), typeDiscriminator: "CartTransformDeleteUserError")] + [JsonDerivedType(typeof(CatalogUserError), typeDiscriminator: "CatalogUserError")] + [JsonDerivedType(typeof(CheckoutBrandingUpsertUserError), typeDiscriminator: "CheckoutBrandingUpsertUserError")] + [JsonDerivedType(typeof(CollectionAddProductsV2UserError), typeDiscriminator: "CollectionAddProductsV2UserError")] + [JsonDerivedType(typeof(CombinedListingUpdateUserError), typeDiscriminator: "CombinedListingUpdateUserError")] + [JsonDerivedType(typeof(CommentApproveUserError), typeDiscriminator: "CommentApproveUserError")] + [JsonDerivedType(typeof(CommentDeleteUserError), typeDiscriminator: "CommentDeleteUserError")] + [JsonDerivedType(typeof(CommentNotSpamUserError), typeDiscriminator: "CommentNotSpamUserError")] + [JsonDerivedType(typeof(CommentSpamUserError), typeDiscriminator: "CommentSpamUserError")] + [JsonDerivedType(typeof(CustomerCancelDataErasureUserError), typeDiscriminator: "CustomerCancelDataErasureUserError")] + [JsonDerivedType(typeof(CustomerEmailMarketingConsentUpdateUserError), typeDiscriminator: "CustomerEmailMarketingConsentUpdateUserError")] + [JsonDerivedType(typeof(CustomerMergeUserError), typeDiscriminator: "CustomerMergeUserError")] + [JsonDerivedType(typeof(CustomerPaymentMethodCreateFromDuplicationDataUserError), typeDiscriminator: "CustomerPaymentMethodCreateFromDuplicationDataUserError")] + [JsonDerivedType(typeof(CustomerPaymentMethodGetDuplicationDataUserError), typeDiscriminator: "CustomerPaymentMethodGetDuplicationDataUserError")] + [JsonDerivedType(typeof(CustomerPaymentMethodGetUpdateUrlUserError), typeDiscriminator: "CustomerPaymentMethodGetUpdateUrlUserError")] + [JsonDerivedType(typeof(CustomerPaymentMethodRemoteUserError), typeDiscriminator: "CustomerPaymentMethodRemoteUserError")] + [JsonDerivedType(typeof(CustomerPaymentMethodUserError), typeDiscriminator: "CustomerPaymentMethodUserError")] + [JsonDerivedType(typeof(CustomerRequestDataErasureUserError), typeDiscriminator: "CustomerRequestDataErasureUserError")] + [JsonDerivedType(typeof(CustomerSegmentMembersQueryUserError), typeDiscriminator: "CustomerSegmentMembersQueryUserError")] + [JsonDerivedType(typeof(CustomerSendAccountInviteEmailUserError), typeDiscriminator: "CustomerSendAccountInviteEmailUserError")] + [JsonDerivedType(typeof(CustomerSmsMarketingConsentError), typeDiscriminator: "CustomerSmsMarketingConsentError")] + [JsonDerivedType(typeof(DataSaleOptOutUserError), typeDiscriminator: "DataSaleOptOutUserError")] + [JsonDerivedType(typeof(DelegateAccessTokenCreateUserError), typeDiscriminator: "DelegateAccessTokenCreateUserError")] + [JsonDerivedType(typeof(DelegateAccessTokenDestroyUserError), typeDiscriminator: "DelegateAccessTokenDestroyUserError")] + [JsonDerivedType(typeof(DeliveryCustomizationError), typeDiscriminator: "DeliveryCustomizationError")] + [JsonDerivedType(typeof(DeliveryLocationLocalPickupSettingsError), typeDiscriminator: "DeliveryLocationLocalPickupSettingsError")] + [JsonDerivedType(typeof(DeliveryPromiseProviderUpsertUserError), typeDiscriminator: "DeliveryPromiseProviderUpsertUserError")] + [JsonDerivedType(typeof(DiscountUserError), typeDiscriminator: "DiscountUserError")] + [JsonDerivedType(typeof(DisputeEvidenceUpdateUserError), typeDiscriminator: "DisputeEvidenceUpdateUserError")] + [JsonDerivedType(typeof(ErrorsServerPixelUserError), typeDiscriminator: "ErrorsServerPixelUserError")] + [JsonDerivedType(typeof(ErrorsWebPixelUserError), typeDiscriminator: "ErrorsWebPixelUserError")] + [JsonDerivedType(typeof(FilesUserError), typeDiscriminator: "FilesUserError")] + [JsonDerivedType(typeof(FulfillmentConstraintRuleCreateUserError), typeDiscriminator: "FulfillmentConstraintRuleCreateUserError")] + [JsonDerivedType(typeof(FulfillmentConstraintRuleDeleteUserError), typeDiscriminator: "FulfillmentConstraintRuleDeleteUserError")] + [JsonDerivedType(typeof(FulfillmentConstraintRuleUpdateUserError), typeDiscriminator: "FulfillmentConstraintRuleUpdateUserError")] + [JsonDerivedType(typeof(FulfillmentOrderHoldUserError), typeDiscriminator: "FulfillmentOrderHoldUserError")] + [JsonDerivedType(typeof(FulfillmentOrderLineItemsPreparedForPickupUserError), typeDiscriminator: "FulfillmentOrderLineItemsPreparedForPickupUserError")] + [JsonDerivedType(typeof(FulfillmentOrderMergeUserError), typeDiscriminator: "FulfillmentOrderMergeUserError")] + [JsonDerivedType(typeof(FulfillmentOrderReleaseHoldUserError), typeDiscriminator: "FulfillmentOrderReleaseHoldUserError")] + [JsonDerivedType(typeof(FulfillmentOrderRescheduleUserError), typeDiscriminator: "FulfillmentOrderRescheduleUserError")] + [JsonDerivedType(typeof(FulfillmentOrderSplitUserError), typeDiscriminator: "FulfillmentOrderSplitUserError")] + [JsonDerivedType(typeof(FulfillmentOrdersSetFulfillmentDeadlineUserError), typeDiscriminator: "FulfillmentOrdersSetFulfillmentDeadlineUserError")] + [JsonDerivedType(typeof(GiftCardDeactivateUserError), typeDiscriminator: "GiftCardDeactivateUserError")] + [JsonDerivedType(typeof(GiftCardSendNotificationToCustomerUserError), typeDiscriminator: "GiftCardSendNotificationToCustomerUserError")] + [JsonDerivedType(typeof(GiftCardSendNotificationToRecipientUserError), typeDiscriminator: "GiftCardSendNotificationToRecipientUserError")] + [JsonDerivedType(typeof(GiftCardTransactionUserError), typeDiscriminator: "GiftCardTransactionUserError")] + [JsonDerivedType(typeof(GiftCardUserError), typeDiscriminator: "GiftCardUserError")] + [JsonDerivedType(typeof(InventoryAdjustQuantitiesUserError), typeDiscriminator: "InventoryAdjustQuantitiesUserError")] + [JsonDerivedType(typeof(InventoryBulkToggleActivationUserError), typeDiscriminator: "InventoryBulkToggleActivationUserError")] + [JsonDerivedType(typeof(InventoryMoveQuantitiesUserError), typeDiscriminator: "InventoryMoveQuantitiesUserError")] + [JsonDerivedType(typeof(InventorySetOnHandQuantitiesUserError), typeDiscriminator: "InventorySetOnHandQuantitiesUserError")] + [JsonDerivedType(typeof(InventorySetQuantitiesUserError), typeDiscriminator: "InventorySetQuantitiesUserError")] + [JsonDerivedType(typeof(InventorySetScheduledChangesUserError), typeDiscriminator: "InventorySetScheduledChangesUserError")] + [JsonDerivedType(typeof(LocationActivateUserError), typeDiscriminator: "LocationActivateUserError")] + [JsonDerivedType(typeof(LocationAddUserError), typeDiscriminator: "LocationAddUserError")] + [JsonDerivedType(typeof(LocationDeactivateUserError), typeDiscriminator: "LocationDeactivateUserError")] + [JsonDerivedType(typeof(LocationDeleteUserError), typeDiscriminator: "LocationDeleteUserError")] + [JsonDerivedType(typeof(LocationEditUserError), typeDiscriminator: "LocationEditUserError")] + [JsonDerivedType(typeof(MarketCurrencySettingsUserError), typeDiscriminator: "MarketCurrencySettingsUserError")] + [JsonDerivedType(typeof(MarketUserError), typeDiscriminator: "MarketUserError")] + [JsonDerivedType(typeof(MarketingActivityUserError), typeDiscriminator: "MarketingActivityUserError")] + [JsonDerivedType(typeof(MediaUserError), typeDiscriminator: "MediaUserError")] + [JsonDerivedType(typeof(MenuCreateUserError), typeDiscriminator: "MenuCreateUserError")] + [JsonDerivedType(typeof(MenuDeleteUserError), typeDiscriminator: "MenuDeleteUserError")] + [JsonDerivedType(typeof(MenuUpdateUserError), typeDiscriminator: "MenuUpdateUserError")] + [JsonDerivedType(typeof(MetafieldDefinitionCreateUserError), typeDiscriminator: "MetafieldDefinitionCreateUserError")] + [JsonDerivedType(typeof(MetafieldDefinitionDeleteUserError), typeDiscriminator: "MetafieldDefinitionDeleteUserError")] + [JsonDerivedType(typeof(MetafieldDefinitionPinUserError), typeDiscriminator: "MetafieldDefinitionPinUserError")] + [JsonDerivedType(typeof(MetafieldDefinitionUnpinUserError), typeDiscriminator: "MetafieldDefinitionUnpinUserError")] + [JsonDerivedType(typeof(MetafieldDefinitionUpdateUserError), typeDiscriminator: "MetafieldDefinitionUpdateUserError")] + [JsonDerivedType(typeof(MetafieldsSetUserError), typeDiscriminator: "MetafieldsSetUserError")] + [JsonDerivedType(typeof(MetaobjectUserError), typeDiscriminator: "MetaobjectUserError")] + [JsonDerivedType(typeof(MobilePlatformApplicationUserError), typeDiscriminator: "MobilePlatformApplicationUserError")] + [JsonDerivedType(typeof(OnlineStoreThemeFilesUserErrors), typeDiscriminator: "OnlineStoreThemeFilesUserErrors")] + [JsonDerivedType(typeof(OrderCancelUserError), typeDiscriminator: "OrderCancelUserError")] + [JsonDerivedType(typeof(OrderCreateMandatePaymentUserError), typeDiscriminator: "OrderCreateMandatePaymentUserError")] + [JsonDerivedType(typeof(OrderCreateUserError), typeDiscriminator: "OrderCreateUserError")] + [JsonDerivedType(typeof(OrderDeleteUserError), typeDiscriminator: "OrderDeleteUserError")] + [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(PageCreateUserError), typeDiscriminator: "PageCreateUserError")] + [JsonDerivedType(typeof(PageDeleteUserError), typeDiscriminator: "PageDeleteUserError")] + [JsonDerivedType(typeof(PageUpdateUserError), typeDiscriminator: "PageUpdateUserError")] + [JsonDerivedType(typeof(PaymentCustomizationError), typeDiscriminator: "PaymentCustomizationError")] + [JsonDerivedType(typeof(PaymentReminderSendUserError), typeDiscriminator: "PaymentReminderSendUserError")] + [JsonDerivedType(typeof(PaymentTermsCreateUserError), typeDiscriminator: "PaymentTermsCreateUserError")] + [JsonDerivedType(typeof(PaymentTermsDeleteUserError), typeDiscriminator: "PaymentTermsDeleteUserError")] + [JsonDerivedType(typeof(PaymentTermsUpdateUserError), typeDiscriminator: "PaymentTermsUpdateUserError")] + [JsonDerivedType(typeof(PriceListFixedPricesByProductBulkUpdateUserError), typeDiscriminator: "PriceListFixedPricesByProductBulkUpdateUserError")] + [JsonDerivedType(typeof(PriceListPriceUserError), typeDiscriminator: "PriceListPriceUserError")] + [JsonDerivedType(typeof(PriceListUserError), typeDiscriminator: "PriceListUserError")] + [JsonDerivedType(typeof(ProductBundleMutationUserError), typeDiscriminator: "ProductBundleMutationUserError")] + [JsonDerivedType(typeof(ProductChangeStatusUserError), typeDiscriminator: "ProductChangeStatusUserError")] + [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")] + [JsonDerivedType(typeof(ProductVariantsBulkReorderUserError), typeDiscriminator: "ProductVariantsBulkReorderUserError")] + [JsonDerivedType(typeof(ProductVariantsBulkUpdateUserError), typeDiscriminator: "ProductVariantsBulkUpdateUserError")] + [JsonDerivedType(typeof(PubSubWebhookSubscriptionCreateUserError), typeDiscriminator: "PubSubWebhookSubscriptionCreateUserError")] + [JsonDerivedType(typeof(PubSubWebhookSubscriptionUpdateUserError), typeDiscriminator: "PubSubWebhookSubscriptionUpdateUserError")] + [JsonDerivedType(typeof(PublicationUserError), typeDiscriminator: "PublicationUserError")] + [JsonDerivedType(typeof(QuantityPricingByVariantUserError), typeDiscriminator: "QuantityPricingByVariantUserError")] + [JsonDerivedType(typeof(QuantityRuleUserError), typeDiscriminator: "QuantityRuleUserError")] + [JsonDerivedType(typeof(ReturnUserError), typeDiscriminator: "ReturnUserError")] + [JsonDerivedType(typeof(SellingPlanGroupUserError), typeDiscriminator: "SellingPlanGroupUserError")] + [JsonDerivedType(typeof(ShopPolicyUserError), typeDiscriminator: "ShopPolicyUserError")] + [JsonDerivedType(typeof(ShopResourceFeedbackCreateUserError), typeDiscriminator: "ShopResourceFeedbackCreateUserError")] + [JsonDerivedType(typeof(StandardMetafieldDefinitionEnableUserError), typeDiscriminator: "StandardMetafieldDefinitionEnableUserError")] + [JsonDerivedType(typeof(StoreCreditAccountCreditUserError), typeDiscriminator: "StoreCreditAccountCreditUserError")] + [JsonDerivedType(typeof(StoreCreditAccountDebitUserError), typeDiscriminator: "StoreCreditAccountDebitUserError")] + [JsonDerivedType(typeof(SubscriptionBillingCycleBulkUserError), typeDiscriminator: "SubscriptionBillingCycleBulkUserError")] + [JsonDerivedType(typeof(SubscriptionBillingCycleSkipUserError), typeDiscriminator: "SubscriptionBillingCycleSkipUserError")] + [JsonDerivedType(typeof(SubscriptionBillingCycleUnskipUserError), typeDiscriminator: "SubscriptionBillingCycleUnskipUserError")] + [JsonDerivedType(typeof(SubscriptionBillingCycleUserError), typeDiscriminator: "SubscriptionBillingCycleUserError")] + [JsonDerivedType(typeof(SubscriptionContractStatusUpdateUserError), typeDiscriminator: "SubscriptionContractStatusUpdateUserError")] + [JsonDerivedType(typeof(SubscriptionContractUserError), typeDiscriminator: "SubscriptionContractUserError")] + [JsonDerivedType(typeof(SubscriptionDraftUserError), typeDiscriminator: "SubscriptionDraftUserError")] + [JsonDerivedType(typeof(TaxAppConfigureUserError), typeDiscriminator: "TaxAppConfigureUserError")] + [JsonDerivedType(typeof(ThemeCreateUserError), typeDiscriminator: "ThemeCreateUserError")] + [JsonDerivedType(typeof(ThemeDeleteUserError), typeDiscriminator: "ThemeDeleteUserError")] + [JsonDerivedType(typeof(ThemePublishUserError), typeDiscriminator: "ThemePublishUserError")] + [JsonDerivedType(typeof(ThemeUpdateUserError), typeDiscriminator: "ThemeUpdateUserError")] + [JsonDerivedType(typeof(TransactionVoidUserError), typeDiscriminator: "TransactionVoidUserError")] + [JsonDerivedType(typeof(TranslationUserError), typeDiscriminator: "TranslationUserError")] + [JsonDerivedType(typeof(UrlRedirectBulkDeleteByIdsUserError), typeDiscriminator: "UrlRedirectBulkDeleteByIdsUserError")] + [JsonDerivedType(typeof(UrlRedirectBulkDeleteBySavedSearchUserError), typeDiscriminator: "UrlRedirectBulkDeleteBySavedSearchUserError")] + [JsonDerivedType(typeof(UrlRedirectBulkDeleteBySearchUserError), typeDiscriminator: "UrlRedirectBulkDeleteBySearchUserError")] + [JsonDerivedType(typeof(UrlRedirectImportUserError), typeDiscriminator: "UrlRedirectImportUserError")] + [JsonDerivedType(typeof(UrlRedirectUserError), typeDiscriminator: "UrlRedirectUserError")] + [JsonDerivedType(typeof(UserError), typeDiscriminator: "UserError")] + [JsonDerivedType(typeof(ValidationUserError), typeDiscriminator: "ValidationUserError")] + public interface IDisplayableError : IGraphQLObject + { + public AbandonmentEmailStateUpdateUserError? AsAbandonmentEmailStateUpdateUserError() => this as AbandonmentEmailStateUpdateUserError; + public AbandonmentUpdateActivitiesDeliveryStatusesUserError? AsAbandonmentUpdateActivitiesDeliveryStatusesUserError() => this as AbandonmentUpdateActivitiesDeliveryStatusesUserError; + public AppRevokeAccessScopesAppRevokeScopeError? AsAppRevokeAccessScopesAppRevokeScopeError() => this as AppRevokeAccessScopesAppRevokeScopeError; + public AppSubscriptionTrialExtendUserError? AsAppSubscriptionTrialExtendUserError() => this as AppSubscriptionTrialExtendUserError; + public ArticleCreateUserError? AsArticleCreateUserError() => this as ArticleCreateUserError; + public ArticleDeleteUserError? AsArticleDeleteUserError() => this as ArticleDeleteUserError; + public ArticleUpdateUserError? AsArticleUpdateUserError() => this as ArticleUpdateUserError; + public BillingAttemptUserError? AsBillingAttemptUserError() => this as BillingAttemptUserError; + public BlogCreateUserError? AsBlogCreateUserError() => this as BlogCreateUserError; + public BlogDeleteUserError? AsBlogDeleteUserError() => this as BlogDeleteUserError; + public BlogUpdateUserError? AsBlogUpdateUserError() => this as BlogUpdateUserError; + public BulkMutationUserError? AsBulkMutationUserError() => this as BulkMutationUserError; + public BulkProductResourceFeedbackCreateUserError? AsBulkProductResourceFeedbackCreateUserError() => this as BulkProductResourceFeedbackCreateUserError; + public BusinessCustomerUserError? AsBusinessCustomerUserError() => this as BusinessCustomerUserError; + public CarrierServiceCreateUserError? AsCarrierServiceCreateUserError() => this as CarrierServiceCreateUserError; + public CarrierServiceDeleteUserError? AsCarrierServiceDeleteUserError() => this as CarrierServiceDeleteUserError; + public CarrierServiceUpdateUserError? AsCarrierServiceUpdateUserError() => this as CarrierServiceUpdateUserError; + public CartTransformCreateUserError? AsCartTransformCreateUserError() => this as CartTransformCreateUserError; + public CartTransformDeleteUserError? AsCartTransformDeleteUserError() => this as CartTransformDeleteUserError; + public CatalogUserError? AsCatalogUserError() => this as CatalogUserError; + public CheckoutBrandingUpsertUserError? AsCheckoutBrandingUpsertUserError() => this as CheckoutBrandingUpsertUserError; + public CollectionAddProductsV2UserError? AsCollectionAddProductsV2UserError() => this as CollectionAddProductsV2UserError; + public CombinedListingUpdateUserError? AsCombinedListingUpdateUserError() => this as CombinedListingUpdateUserError; + public CommentApproveUserError? AsCommentApproveUserError() => this as CommentApproveUserError; + public CommentDeleteUserError? AsCommentDeleteUserError() => this as CommentDeleteUserError; + public CommentNotSpamUserError? AsCommentNotSpamUserError() => this as CommentNotSpamUserError; + public CommentSpamUserError? AsCommentSpamUserError() => this as CommentSpamUserError; + public CustomerCancelDataErasureUserError? AsCustomerCancelDataErasureUserError() => this as CustomerCancelDataErasureUserError; + public CustomerEmailMarketingConsentUpdateUserError? AsCustomerEmailMarketingConsentUpdateUserError() => this as CustomerEmailMarketingConsentUpdateUserError; + public CustomerMergeUserError? AsCustomerMergeUserError() => this as CustomerMergeUserError; + public CustomerPaymentMethodCreateFromDuplicationDataUserError? AsCustomerPaymentMethodCreateFromDuplicationDataUserError() => this as CustomerPaymentMethodCreateFromDuplicationDataUserError; + public CustomerPaymentMethodGetDuplicationDataUserError? AsCustomerPaymentMethodGetDuplicationDataUserError() => this as CustomerPaymentMethodGetDuplicationDataUserError; + public CustomerPaymentMethodGetUpdateUrlUserError? AsCustomerPaymentMethodGetUpdateUrlUserError() => this as CustomerPaymentMethodGetUpdateUrlUserError; + public CustomerPaymentMethodRemoteUserError? AsCustomerPaymentMethodRemoteUserError() => this as CustomerPaymentMethodRemoteUserError; + public CustomerPaymentMethodUserError? AsCustomerPaymentMethodUserError() => this as CustomerPaymentMethodUserError; + public CustomerRequestDataErasureUserError? AsCustomerRequestDataErasureUserError() => this as CustomerRequestDataErasureUserError; + public CustomerSegmentMembersQueryUserError? AsCustomerSegmentMembersQueryUserError() => this as CustomerSegmentMembersQueryUserError; + public CustomerSendAccountInviteEmailUserError? AsCustomerSendAccountInviteEmailUserError() => this as CustomerSendAccountInviteEmailUserError; + public CustomerSmsMarketingConsentError? AsCustomerSmsMarketingConsentError() => this as CustomerSmsMarketingConsentError; + public DataSaleOptOutUserError? AsDataSaleOptOutUserError() => this as DataSaleOptOutUserError; + public DelegateAccessTokenCreateUserError? AsDelegateAccessTokenCreateUserError() => this as DelegateAccessTokenCreateUserError; + public DelegateAccessTokenDestroyUserError? AsDelegateAccessTokenDestroyUserError() => this as DelegateAccessTokenDestroyUserError; + public DeliveryCustomizationError? AsDeliveryCustomizationError() => this as DeliveryCustomizationError; + public DeliveryLocationLocalPickupSettingsError? AsDeliveryLocationLocalPickupSettingsError() => this as DeliveryLocationLocalPickupSettingsError; + public DeliveryPromiseProviderUpsertUserError? AsDeliveryPromiseProviderUpsertUserError() => this as DeliveryPromiseProviderUpsertUserError; + public DiscountUserError? AsDiscountUserError() => this as DiscountUserError; + public DisputeEvidenceUpdateUserError? AsDisputeEvidenceUpdateUserError() => this as DisputeEvidenceUpdateUserError; + public ErrorsServerPixelUserError? AsErrorsServerPixelUserError() => this as ErrorsServerPixelUserError; + public ErrorsWebPixelUserError? AsErrorsWebPixelUserError() => this as ErrorsWebPixelUserError; + public FilesUserError? AsFilesUserError() => this as FilesUserError; + public FulfillmentConstraintRuleCreateUserError? AsFulfillmentConstraintRuleCreateUserError() => this as FulfillmentConstraintRuleCreateUserError; + public FulfillmentConstraintRuleDeleteUserError? AsFulfillmentConstraintRuleDeleteUserError() => this as FulfillmentConstraintRuleDeleteUserError; + public FulfillmentConstraintRuleUpdateUserError? AsFulfillmentConstraintRuleUpdateUserError() => this as FulfillmentConstraintRuleUpdateUserError; + public FulfillmentOrderHoldUserError? AsFulfillmentOrderHoldUserError() => this as FulfillmentOrderHoldUserError; + public FulfillmentOrderLineItemsPreparedForPickupUserError? AsFulfillmentOrderLineItemsPreparedForPickupUserError() => this as FulfillmentOrderLineItemsPreparedForPickupUserError; + public FulfillmentOrderMergeUserError? AsFulfillmentOrderMergeUserError() => this as FulfillmentOrderMergeUserError; + public FulfillmentOrderReleaseHoldUserError? AsFulfillmentOrderReleaseHoldUserError() => this as FulfillmentOrderReleaseHoldUserError; + public FulfillmentOrderRescheduleUserError? AsFulfillmentOrderRescheduleUserError() => this as FulfillmentOrderRescheduleUserError; + public FulfillmentOrderSplitUserError? AsFulfillmentOrderSplitUserError() => this as FulfillmentOrderSplitUserError; + public FulfillmentOrdersSetFulfillmentDeadlineUserError? AsFulfillmentOrdersSetFulfillmentDeadlineUserError() => this as FulfillmentOrdersSetFulfillmentDeadlineUserError; + public GiftCardDeactivateUserError? AsGiftCardDeactivateUserError() => this as GiftCardDeactivateUserError; + public GiftCardSendNotificationToCustomerUserError? AsGiftCardSendNotificationToCustomerUserError() => this as GiftCardSendNotificationToCustomerUserError; + public GiftCardSendNotificationToRecipientUserError? AsGiftCardSendNotificationToRecipientUserError() => this as GiftCardSendNotificationToRecipientUserError; + public GiftCardTransactionUserError? AsGiftCardTransactionUserError() => this as GiftCardTransactionUserError; + public GiftCardUserError? AsGiftCardUserError() => this as GiftCardUserError; + public InventoryAdjustQuantitiesUserError? AsInventoryAdjustQuantitiesUserError() => this as InventoryAdjustQuantitiesUserError; + public InventoryBulkToggleActivationUserError? AsInventoryBulkToggleActivationUserError() => this as InventoryBulkToggleActivationUserError; + public InventoryMoveQuantitiesUserError? AsInventoryMoveQuantitiesUserError() => this as InventoryMoveQuantitiesUserError; + public InventorySetOnHandQuantitiesUserError? AsInventorySetOnHandQuantitiesUserError() => this as InventorySetOnHandQuantitiesUserError; + public InventorySetQuantitiesUserError? AsInventorySetQuantitiesUserError() => this as InventorySetQuantitiesUserError; + public InventorySetScheduledChangesUserError? AsInventorySetScheduledChangesUserError() => this as InventorySetScheduledChangesUserError; + public LocationActivateUserError? AsLocationActivateUserError() => this as LocationActivateUserError; + public LocationAddUserError? AsLocationAddUserError() => this as LocationAddUserError; + public LocationDeactivateUserError? AsLocationDeactivateUserError() => this as LocationDeactivateUserError; + public LocationDeleteUserError? AsLocationDeleteUserError() => this as LocationDeleteUserError; + public LocationEditUserError? AsLocationEditUserError() => this as LocationEditUserError; + public MarketCurrencySettingsUserError? AsMarketCurrencySettingsUserError() => this as MarketCurrencySettingsUserError; + public MarketUserError? AsMarketUserError() => this as MarketUserError; + public MarketingActivityUserError? AsMarketingActivityUserError() => this as MarketingActivityUserError; + public MediaUserError? AsMediaUserError() => this as MediaUserError; + public MenuCreateUserError? AsMenuCreateUserError() => this as MenuCreateUserError; + public MenuDeleteUserError? AsMenuDeleteUserError() => this as MenuDeleteUserError; + public MenuUpdateUserError? AsMenuUpdateUserError() => this as MenuUpdateUserError; + public MetafieldDefinitionCreateUserError? AsMetafieldDefinitionCreateUserError() => this as MetafieldDefinitionCreateUserError; + public MetafieldDefinitionDeleteUserError? AsMetafieldDefinitionDeleteUserError() => this as MetafieldDefinitionDeleteUserError; + public MetafieldDefinitionPinUserError? AsMetafieldDefinitionPinUserError() => this as MetafieldDefinitionPinUserError; + public MetafieldDefinitionUnpinUserError? AsMetafieldDefinitionUnpinUserError() => this as MetafieldDefinitionUnpinUserError; + public MetafieldDefinitionUpdateUserError? AsMetafieldDefinitionUpdateUserError() => this as MetafieldDefinitionUpdateUserError; + public MetafieldsSetUserError? AsMetafieldsSetUserError() => this as MetafieldsSetUserError; + public MetaobjectUserError? AsMetaobjectUserError() => this as MetaobjectUserError; + public MobilePlatformApplicationUserError? AsMobilePlatformApplicationUserError() => this as MobilePlatformApplicationUserError; + public OnlineStoreThemeFilesUserErrors? AsOnlineStoreThemeFilesUserErrors() => this as OnlineStoreThemeFilesUserErrors; + public OrderCancelUserError? AsOrderCancelUserError() => this as OrderCancelUserError; + public OrderCreateMandatePaymentUserError? AsOrderCreateMandatePaymentUserError() => this as OrderCreateMandatePaymentUserError; + public OrderCreateUserError? AsOrderCreateUserError() => this as OrderCreateUserError; + public OrderDeleteUserError? AsOrderDeleteUserError() => this as OrderDeleteUserError; + 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 PageCreateUserError? AsPageCreateUserError() => this as PageCreateUserError; + public PageDeleteUserError? AsPageDeleteUserError() => this as PageDeleteUserError; + public PageUpdateUserError? AsPageUpdateUserError() => this as PageUpdateUserError; + public PaymentCustomizationError? AsPaymentCustomizationError() => this as PaymentCustomizationError; + public PaymentReminderSendUserError? AsPaymentReminderSendUserError() => this as PaymentReminderSendUserError; + public PaymentTermsCreateUserError? AsPaymentTermsCreateUserError() => this as PaymentTermsCreateUserError; + public PaymentTermsDeleteUserError? AsPaymentTermsDeleteUserError() => this as PaymentTermsDeleteUserError; + public PaymentTermsUpdateUserError? AsPaymentTermsUpdateUserError() => this as PaymentTermsUpdateUserError; + public PriceListFixedPricesByProductBulkUpdateUserError? AsPriceListFixedPricesByProductBulkUpdateUserError() => this as PriceListFixedPricesByProductBulkUpdateUserError; + public PriceListPriceUserError? AsPriceListPriceUserError() => this as PriceListPriceUserError; + public PriceListUserError? AsPriceListUserError() => this as PriceListUserError; + public ProductBundleMutationUserError? AsProductBundleMutationUserError() => this as ProductBundleMutationUserError; + public ProductChangeStatusUserError? AsProductChangeStatusUserError() => this as ProductChangeStatusUserError; + 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; + public ProductVariantsBulkReorderUserError? AsProductVariantsBulkReorderUserError() => this as ProductVariantsBulkReorderUserError; + public ProductVariantsBulkUpdateUserError? AsProductVariantsBulkUpdateUserError() => this as ProductVariantsBulkUpdateUserError; + public PubSubWebhookSubscriptionCreateUserError? AsPubSubWebhookSubscriptionCreateUserError() => this as PubSubWebhookSubscriptionCreateUserError; + public PubSubWebhookSubscriptionUpdateUserError? AsPubSubWebhookSubscriptionUpdateUserError() => this as PubSubWebhookSubscriptionUpdateUserError; + public PublicationUserError? AsPublicationUserError() => this as PublicationUserError; + public QuantityPricingByVariantUserError? AsQuantityPricingByVariantUserError() => this as QuantityPricingByVariantUserError; + public QuantityRuleUserError? AsQuantityRuleUserError() => this as QuantityRuleUserError; + public ReturnUserError? AsReturnUserError() => this as ReturnUserError; + public SellingPlanGroupUserError? AsSellingPlanGroupUserError() => this as SellingPlanGroupUserError; + public ShopPolicyUserError? AsShopPolicyUserError() => this as ShopPolicyUserError; + public ShopResourceFeedbackCreateUserError? AsShopResourceFeedbackCreateUserError() => this as ShopResourceFeedbackCreateUserError; + public StandardMetafieldDefinitionEnableUserError? AsStandardMetafieldDefinitionEnableUserError() => this as StandardMetafieldDefinitionEnableUserError; + public StoreCreditAccountCreditUserError? AsStoreCreditAccountCreditUserError() => this as StoreCreditAccountCreditUserError; + public StoreCreditAccountDebitUserError? AsStoreCreditAccountDebitUserError() => this as StoreCreditAccountDebitUserError; + public SubscriptionBillingCycleBulkUserError? AsSubscriptionBillingCycleBulkUserError() => this as SubscriptionBillingCycleBulkUserError; + public SubscriptionBillingCycleSkipUserError? AsSubscriptionBillingCycleSkipUserError() => this as SubscriptionBillingCycleSkipUserError; + public SubscriptionBillingCycleUnskipUserError? AsSubscriptionBillingCycleUnskipUserError() => this as SubscriptionBillingCycleUnskipUserError; + public SubscriptionBillingCycleUserError? AsSubscriptionBillingCycleUserError() => this as SubscriptionBillingCycleUserError; + public SubscriptionContractStatusUpdateUserError? AsSubscriptionContractStatusUpdateUserError() => this as SubscriptionContractStatusUpdateUserError; + public SubscriptionContractUserError? AsSubscriptionContractUserError() => this as SubscriptionContractUserError; + public SubscriptionDraftUserError? AsSubscriptionDraftUserError() => this as SubscriptionDraftUserError; + public TaxAppConfigureUserError? AsTaxAppConfigureUserError() => this as TaxAppConfigureUserError; + public ThemeCreateUserError? AsThemeCreateUserError() => this as ThemeCreateUserError; + public ThemeDeleteUserError? AsThemeDeleteUserError() => this as ThemeDeleteUserError; + public ThemePublishUserError? AsThemePublishUserError() => this as ThemePublishUserError; + public ThemeUpdateUserError? AsThemeUpdateUserError() => this as ThemeUpdateUserError; + public TransactionVoidUserError? AsTransactionVoidUserError() => this as TransactionVoidUserError; + public TranslationUserError? AsTranslationUserError() => this as TranslationUserError; + public UrlRedirectBulkDeleteByIdsUserError? AsUrlRedirectBulkDeleteByIdsUserError() => this as UrlRedirectBulkDeleteByIdsUserError; + public UrlRedirectBulkDeleteBySavedSearchUserError? AsUrlRedirectBulkDeleteBySavedSearchUserError() => this as UrlRedirectBulkDeleteBySavedSearchUserError; + public UrlRedirectBulkDeleteBySearchUserError? AsUrlRedirectBulkDeleteBySearchUserError() => this as UrlRedirectBulkDeleteBySearchUserError; + public UrlRedirectImportUserError? AsUrlRedirectImportUserError() => this as UrlRedirectImportUserError; + public UrlRedirectUserError? AsUrlRedirectUserError() => this as UrlRedirectUserError; + public UserError? AsUserError() => this as UserError; + public ValidationUserError? AsValidationUserError() => this as ValidationUserError; + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; } + /// + ///The error message. + /// + public string? message { get; } + } + + /// + ///Return type for `disputeEvidenceUpdate` mutation. + /// + public class DisputeEvidenceUpdatePayload : GraphQLObject + { + /// + ///The updated dispute evidence. + /// + public ShopifyPaymentsDisputeEvidence? disputeEvidence { 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 `DisputeEvidenceUpdate`. + /// + public class DisputeEvidenceUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `DisputeEvidenceUpdateUserError`. + /// + public enum DisputeEvidenceUpdateUserErrorCode + { + /// + ///Dispute evidence could not be found. + /// + DISPUTE_EVIDENCE_NOT_FOUND, + /// + ///Evidence already accepted. + /// + EVIDENCE_ALREADY_ACCEPTED, + /// + ///Evidence past due date. + /// + EVIDENCE_PAST_DUE_DATE, + /// + ///Combined files size is too large. + /// + FILES_SIZE_EXCEEDED_LIMIT, + /// + ///Individual file size is too large. + /// + TOO_LARGE, + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///The possible statuses of a dispute. + /// + public enum DisputeStatus + { + ACCEPTED, + LOST, + NEEDS_RESPONSE, + UNDER_REVIEW, + WON, + /// + ///Status previously used by Stripe to indicate that a dispute led to a refund. + /// + [Obsolete("CHARGE_REFUNDED is no longer supported.")] + CHARGE_REFUNDED, + } + + /// + ///The possible types for a dispute. + /// + public enum DisputeType + { + /// + ///The dispute has turned into a chargeback. + /// + CHARGEBACK, + /// + ///The dispute is in the inquiry phase. + /// + INQUIRY, + } + + /// + ///A unique string that represents the address of a Shopify store on the Internet. + /// + public class Domain : GraphQLObject, INode + { + /// + ///The host name of the domain. For example, `example.com`. + /// + public string? host { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The localization of the domain, if the domain doesn't redirect. + /// + public DomainLocalization? localization { get; set; } + /// + ///The web presence of the domain. + /// + public MarketWebPresence? marketWebPresence { get; set; } + /// + ///Whether SSL is enabled. + /// + public bool? sslEnabled { get; set; } + /// + ///The URL of the domain (for example, `https://example.com`). + /// + public string? url { get; set; } + } + + /// + ///The country and language settings assigned to a domain. + /// + public class DomainLocalization : GraphQLObject + { + /// + ///The ISO codes for the domain’s alternate locales. For example, `["en"]`. + /// + public IEnumerable? alternateLocales { get; set; } + /// + ///The ISO code for the country assigned to the domain. For example, `"CA"` or "*" for a domain set to "Rest of world". + /// + public string? country { get; set; } + /// + ///The ISO code for the domain’s default locale. For example, `"en"`. + /// + public string? defaultLocale { get; set; } + } + + /// + ///An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks: + /// + ///- Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created. + ///- Send invoices to customers to pay with a secure checkout link. + ///- Use custom items to represent additional costs or products that aren't displayed in a shop's inventory. + ///- Re-create orders manually from active sales channels. + ///- Sell products at discount or wholesale rates. + ///- Take pre-orders. + ///- Save an order as a draft and resume working on it later. + /// + ///For draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their shop currency. + /// + ///**Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data. + /// + public class DraftOrder : GraphQLObject, ICommentEventSubject, IHasEvents, IHasLocalizationExtensions, IHasMetafields, ILegacyInteroperability, INavigable, INode, ICommentEventEmbed, IMetafieldReferencer + { + /// + ///Whether or not to accept automatic discounts on the draft order during calculation. + ///If false, only discount codes and custom draft order discounts (see `appliedDiscount`) will be applied. + ///If true, eligible automatic discounts will be applied in addition to discount codes and custom draft order discounts. + /// + public bool? acceptAutomaticDiscounts { get; set; } + /// + ///Whether discount codes are allowed during checkout of this draft order. + /// + public bool? allowDiscountCodesInCheckout { get; set; } + /// + ///The custom order-level discount applied. + /// + public DraftOrderAppliedDiscount? appliedDiscount { get; set; } + /// + ///The billing address of the customer. + /// + public MailingAddress? billingAddress { get; set; } + /// + ///Whether the billing address matches the shipping address. + /// + public bool? billingAddressMatchesShippingAddress { get; set; } + /// + ///The date and time when the draft order was converted to a new order, + ///and had it's status changed to **Completed**. + /// + public DateTime? completedAt { get; set; } + /// + ///The date and time when the draft order was created in Shopify. + /// + public DateTime? createdAt { get; set; } + /// + ///The shop currency used for calculation. + /// + public string? currencyCode { get; set; } + /// + ///The custom information added to the draft order on behalf of the customer. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer who will be sent an invoice. + /// + public Customer? customer { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///All discount codes applied. + /// + public IEnumerable? discountCodes { get; set; } + /// + ///The email address of the customer, which is used to send notifications. + /// + public string? email { get; set; } + /// + ///The list of events associated with the draft order. + /// + public EventConnection? events { get; set; } + /// + ///Whether the merchant has added timeline comments to the draft order. + /// + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The subject defined for the draft invoice email template. + /// + public string? invoiceEmailTemplateSubject { get; set; } + /// + ///The date and time when the invoice was last emailed to the customer. + /// + public DateTime? invoiceSentAt { get; set; } + /// + ///The link to the checkout, which is sent to the customer in the invoice email. + /// + public string? invoiceUrl { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The list of the line items in the draft order. + /// + public DraftOrderLineItemConnection? lineItems { get; set; } + /// + ///A subtotal of the line items and corresponding discounts, + ///excluding include shipping charges, shipping discounts, taxes, or order discounts. + /// + public MoneyBag? lineItemsSubtotalPrice { get; set; } + /// + ///List of localization extensions for the resource. + /// + public LocalizationExtensionConnection? localizationExtensions { get; set; } + /// + ///The name of the selected market. + /// + public string? marketName { get; set; } + /// + ///The selected country code that determines the pricing. + /// + public string? marketRegionCountryCode { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The identifier for the draft order, which is unique within the store. For example, _#D1223_. + /// + public string? name { get; set; } + /// + ///The text from an optional note attached to the draft order. + /// + public string? note2 { get; set; } + /// + ///The order that was created from the draft order. + /// + public Order? order { get; set; } + /// + ///The associated payment terms for this draft order. + /// + public PaymentTerms? paymentTerms { get; set; } + /// + ///The assigned phone number. + /// + public string? phone { get; set; } + /// + ///The list of platform discounts applied. + /// + public IEnumerable? platformDiscounts { get; set; } + /// + ///The purchase order number. + /// + public string? poNumber { get; set; } + /// + ///The payment currency used for calculation. + /// + public string? presentmentCurrencyCode { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 purchasing entity. + /// + public IPurchasingEntity? purchasingEntity { get; set; } + /// + ///Whether the draft order is ready and can be completed. + ///Draft orders might have asynchronous operations that can take time to finish. + /// + public bool? ready { get; set; } + /// + ///The time after which inventory will automatically be restocked. + /// + public DateTime? reserveInventoryUntil { get; set; } + /// + ///The shipping address of the customer. + /// + public MailingAddress? shippingAddress { get; set; } + /// + ///The line item containing the shipping information and costs. + /// + public ShippingLine? shippingLine { get; set; } + /// + ///The status of the draft order. + /// + public string? status { get; set; } + + /// + ///The subtotal, in shop currency, of the line items and their discounts, excluding shipping charges, shipping discounts, and taxes. + /// + [Obsolete("Use `subtotalPriceSet` instead.")] + public decimal? subtotalPrice { get; set; } + /// + ///The subtotal, of the line items and their discounts, excluding shipping charges, shipping discounts, and taxes. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///The comma separated list of tags associated with the draft order. + ///Updating `tags` overwrites any existing tags that were previously added to the draft order. + ///To add new tags without overwriting existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd) mutation. + /// + public IEnumerable? tags { get; set; } + /// + ///Whether the draft order is tax exempt. + /// + public bool? taxExempt { get; set; } + /// + ///The list of of taxes lines charged for each line item and shipping line. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether the line item prices include taxes. + /// + public bool? taxesIncluded { get; set; } + /// + ///Total discounts. + /// + public MoneyBag? totalDiscountsSet { get; set; } + /// + ///Total price of line items. + /// + public MoneyBag? totalLineItemsPriceSet { get; set; } + + /// + ///The total price, in shop currency, includes taxes, shipping charges, and discounts. + /// + [Obsolete("Use `totalPriceSet` instead.")] + public decimal? totalPrice { get; set; } + /// + ///The total price, includes taxes, shipping charges, and discounts. + /// + public MoneyBag? totalPriceSet { get; set; } + /// + ///The sum of individual line item quantities. + ///If the draft order has bundle items, this is the sum containing the quantities of individual items in the bundle. + /// + public int? totalQuantityOfLineItems { get; set; } + + /// + ///The total shipping price in shop currency. + /// + [Obsolete("Use `totalShippingPriceSet` instead.")] + public decimal? totalShippingPrice { get; set; } + /// + ///The total shipping price. + /// + public MoneyBag? totalShippingPriceSet { get; set; } + + /// + ///The total tax in shop currency. + /// + [Obsolete("Use `totalTaxSet` instead.")] + public decimal? totalTax { get; set; } + /// + ///The total tax. + /// + public MoneyBag? totalTaxSet { get; set; } + /// + ///The total weight in grams of the draft order. + /// + public ulong? totalWeight { get; set; } + /// + ///Fingerprint of the current cart. + ///In order to have bundles work, the fingerprint must be passed to + ///each request as it was previously returned, unmodified. + /// + public string? transformerFingerprint { get; set; } + /// + ///The date and time when the draft order was last changed. + ///The format is YYYY-MM-DD HH:mm:ss. For example, 2016-02-05 17:04:01. + /// + public DateTime? updatedAt { get; set; } + /// + ///Whether the draft order will be visible to the customer on the self-serve portal. + /// + public bool? visibleToCustomer { get; set; } + /// + ///The list of warnings raised while calculating. + /// + public IEnumerable? warnings { get; set; } + } + + /// + ///The order-level discount applied to a draft order. + /// + public class DraftOrderAppliedDiscount : GraphQLObject + { + /// + ///Amount of the order-level discount that's applied to the draft order in shop currency. + /// + [Obsolete("Use `amountSet` instead.")] + public decimal? amount { get; set; } + /// + ///The amount of money discounted, with values shown in both shop currency and presentment currency. + /// + public MoneyBag? amountSet { get; set; } + + /// + ///Amount of money discounted. + /// + [Obsolete("Use `amountSet` instead.")] + public MoneyV2? amountV2 { get; set; } + /// + ///Description of the order-level discount. + /// + public string? description { get; set; } + /// + ///Name of the order-level discount. + /// + public string? title { get; set; } + /// + ///The order level discount amount. If `valueType` is `"percentage"`, + ///then `value` is the percentage discount. + /// + public decimal? value { get; set; } + /// + ///Type of the order-level discount. + /// + public string? valueType { get; set; } + } + + /// + ///The valid discount types that can be applied to a draft order. + /// + public enum DraftOrderAppliedDiscountType + { + /// + ///A fixed amount in the store's currency. + /// + FIXED_AMOUNT, + /// + ///A percentage of the order subtotal. + /// + PERCENTAGE, + } + + /// + ///Return type for `draftOrderBulkAddTags` mutation. + /// + public class DraftOrderBulkAddTagsPayload : GraphQLObject + { + /// + ///The asynchronous job for adding tags to the draft orders. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderBulkDelete` mutation. + /// + public class DraftOrderBulkDeletePayload : GraphQLObject + { + /// + ///The asynchronous job for deleting the draft orders. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderBulkRemoveTags` mutation. + /// + public class DraftOrderBulkRemoveTagsPayload : GraphQLObject + { + /// + ///The asynchronous job for removing tags from the draft orders. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A warning indicating that a bundle was added to a draft order. + /// + public class DraftOrderBundleAddedWarning : GraphQLObject, IDraftOrderWarning + { + /// + ///The error code. + /// + public string? errorCode { get; set; } + /// + ///The input field that the warning applies to. + /// + public string? field { get; set; } + /// + ///The warning message. + /// + public string? message { get; set; } + } + + /// + ///Return type for `draftOrderCalculate` mutation. + /// + public class DraftOrderCalculatePayload : GraphQLObject + { + /// + ///The calculated properties for a draft order. + /// + public CalculatedDraftOrder? calculatedDraftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderComplete` mutation. + /// + public class DraftOrderCompletePayload : GraphQLObject + { + /// + ///The completed draft order. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DraftOrders. + /// + public class DraftOrderConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DraftOrderEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `draftOrderCreateFromOrder` mutation. + /// + public class DraftOrderCreateFromOrderPayload : GraphQLObject + { + /// + ///The created draft order. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderCreateMerchantCheckout` mutation. + /// + public class DraftOrderCreateMerchantCheckoutPayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderCreate` mutation. + /// + public class DraftOrderCreatePayload : GraphQLObject + { + /// + ///The created draft order. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderDelete` mutation. + /// + public class DraftOrderDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted draft order. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A warning indicating that a discount cannot be applied to a draft order. + /// + public class DraftOrderDiscountNotAppliedWarning : GraphQLObject, IDraftOrderWarning + { + /// + ///The code of the discount that can't be applied. + /// + public string? discountCode { get; set; } + /// + ///The title of the discount that can't be applied. + /// + public string? discountTitle { get; set; } + /// + ///The error code. + /// + public string? errorCode { get; set; } + /// + ///The input field that the warning applies to. + /// + public string? field { get; set; } + /// + ///The warning message. + /// + public string? message { get; set; } + /// + ///The price rule that can't be applied. + /// + public PriceRule? priceRule { get; set; } + } + + /// + ///Return type for `draftOrderDuplicate` mutation. + /// + public class DraftOrderDuplicatePayload : GraphQLObject + { + /// + ///The newly duplicated draft order. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one DraftOrder and a cursor during pagination. + /// + public class DraftOrderEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DraftOrderEdge. + /// + public DraftOrder? node { get; set; } + } + + /// + ///Return type for `draftOrderInvoicePreview` mutation. + /// + public class DraftOrderInvoicePreviewPayload : GraphQLObject + { + /// + ///The draft order invoice email rendered as HTML to allow previewing. + /// + public string? previewHtml { get; set; } + /// + ///The subject preview for the draft order invoice email. + /// + public string? previewSubject { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `draftOrderInvoiceSend` mutation. + /// + public class DraftOrderInvoiceSendPayload : GraphQLObject + { + /// + ///The draft order an invoice email is sent for. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The line item for a draft order. + /// + public class DraftOrderLineItem : GraphQLObject, INode, IDraftOrderPlatformDiscountAllocationTarget + { + /// + ///The custom applied discount. + /// + public DraftOrderAppliedDiscount? appliedDiscount { get; set; } + /// + ///The `discountedTotal` divided by `quantity`, + ///equal to the average value of the line item price per unit after discounts are applied. + ///This value doesn't include discounts applied to the entire draft order. + /// + public MoneyBag? approximateDiscountedUnitPriceSet { get; set; } + /// + ///The list of bundle components if applicable. + /// + public IEnumerable? bundleComponents { get; set; } + /// + ///Whether the line item is custom (`true`) or contains a product variant (`false`). + /// + public bool? custom { get; set; } + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The list of additional information (metafields) with the associated types. + /// + public IEnumerable? customAttributesV2 { get; set; } + + /// + ///The line item price, in shop currency, after discounts are applied. + /// + [Obsolete("Use `discountedTotalSet` instead.")] + public decimal? discountedTotal { get; set; } + /// + ///The total price with discounts applied. + /// + public MoneyBag? discountedTotalSet { get; set; } + + /// + ///The `discountedTotal` divided by `quantity`, equal to the value of the discount per unit in the shop currency. + /// + [Obsolete("Use `approximateDiscountedUnitPriceSet` instead.")] + public decimal? discountedUnitPrice { get; set; } + + /// + ///The unit price with discounts applied. + /// + [Obsolete("Use `approximateDiscountedUnitPriceSet` instead.")] + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///Name of the service provider who fulfilled the order. + /// + ///Valid values are either **manual** or the name of the provider. + ///For example, **amazon**, **shipwire**. + /// + ///Deleted fulfillment services will return null. + /// + public FulfillmentService? fulfillmentService { get; set; } + + /// + ///The weight of the line item in grams. + /// + [Obsolete("Use `weight` instead.")] + public int? grams { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image of the product variant. + /// + public Image? image { get; set; } + /// + ///Whether the line item represents the purchase of a gift card. + /// + public bool? isGiftCard { get; set; } + /// + ///The name of the product. + /// + public string? name { get; set; } + + /// + ///The total price, in shop currency, excluding discounts, equal to the original unit price multiplied by quantity. + /// + [Obsolete("Use `originalTotalSet` instead.")] + public decimal? originalTotal { get; set; } + /// + ///The total price excluding discounts, equal to the original unit price multiplied by quantity. + /// + public MoneyBag? originalTotalSet { get; set; } + + /// + ///The price, in shop currency, without any discounts applied. + /// + [Obsolete("Use `originalUnitPriceWithCurrency` instead.")] + public decimal? originalUnitPrice { get; set; } + /// + ///The price without any discounts applied. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The original custom line item input price. + /// + public MoneyV2? originalUnitPriceWithCurrency { get; set; } + /// + ///The product for the line item. + /// + public Product? product { get; set; } + /// + ///The quantity of items. For a bundle item, this is the quantity of bundles, + ///not the quantity of items contained in the bundles themselves. + /// + public int? quantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///The SKU number of the product variant. + /// + public string? sku { get; set; } + /// + ///A list of tax lines. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether the variant is taxable. + /// + public bool? taxable { get; set; } + /// + ///The title of the product or variant. This field only applies to custom line items. + /// + public string? title { get; set; } + + /// + ///The total discount applied in shop currency. + /// + [Obsolete("Use `totalDiscountSet` instead.")] + public decimal? totalDiscount { get; set; } + /// + ///The total discount amount. + /// + public MoneyBag? totalDiscountSet { get; set; } + /// + ///The UUID of the draft order line item. Must be unique and consistent across requests. + ///This field is mandatory in order to manipulate drafts with bundles. + /// + public string? uuid { get; set; } + /// + ///The product variant for the line item. + /// + public ProductVariant? variant { get; set; } + /// + ///The name of the variant. + /// + public string? variantTitle { get; set; } + /// + ///The name of the vendor who created the product variant. + /// + public string? vendor { get; set; } + /// + ///The weight unit and value. + /// + public Weight? weight { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple DraftOrderLineItems. + /// + public class DraftOrderLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in DraftOrderLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one DraftOrderLineItem and a cursor during pagination. + /// + public class DraftOrderLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of DraftOrderLineItemEdge. + /// + public DraftOrderLineItem? node { get; set; } + } + + /// + ///The platform discounts applied to the draft order. + /// + public class DraftOrderPlatformDiscount : GraphQLObject + { + /// + ///Price reduction allocations across the draft order's lines. + /// + public IEnumerable? allocations { get; set; } + /// + ///Whether the discount is an automatic discount. + /// + public bool? automaticDiscount { get; set; } + /// + ///Whether the discount is a buy x get y discount. + /// + public bool? bxgyDiscount { get; set; } + /// + ///If a code-based discount, the code used to add the discount. + /// + public string? code { get; set; } + /// + ///The discount class. + /// + public string? discountClass { get; set; } + /// + ///The discount node for the platform discount. + /// + public DiscountNode? discountNode { get; set; } + /// + ///The ID of the discount. + /// + public string? id { get; set; } + /// + ///Whether the discount is line, order or shipping level. + /// + public string? presentationLevel { get; set; } + /// + ///The short summary of the discount. + /// + public string? shortSummary { get; set; } + /// + ///The summary of the discount. + /// + public string? summary { get; set; } + /// + ///The name of the discount. + /// + public string? title { get; set; } + /// + ///The discount total amount in shop currency. + /// + public MoneyV2? totalAmount { get; set; } + /// + ///The amount of money discounted, with values shown in both shop currency and presentment currency. + /// + public MoneyBag? totalAmountPriceSet { get; set; } + } + + /// + ///Price reduction allocations across the draft order's lines. + /// + public class DraftOrderPlatformDiscountAllocation : GraphQLObject + { + /// + ///The ID of the allocation. + /// + public string? id { get; set; } + /// + ///The quantity of the target being discounted. + /// + public int? quantity { get; set; } + /// + ///Amount of the discount allocated to the target. + /// + public MoneyV2? reductionAmount { get; set; } + /// + ///Amount of the discount allocated to the target in both shop currency and presentment currency. + /// + public MoneyBag? reductionAmountSet { get; set; } + /// + ///The element of the draft being discounted. + /// + public IDraftOrderPlatformDiscountAllocationTarget? target { get; set; } + } + + /// + ///The element of the draft being discounted. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CalculatedDraftOrderLineItem), typeDiscriminator: "CalculatedDraftOrderLineItem")] + [JsonDerivedType(typeof(DraftOrderLineItem), typeDiscriminator: "DraftOrderLineItem")] + [JsonDerivedType(typeof(ShippingLine), typeDiscriminator: "ShippingLine")] + public interface IDraftOrderPlatformDiscountAllocationTarget : IGraphQLObject + { + public CalculatedDraftOrderLineItem? AsCalculatedDraftOrderLineItem() => this as CalculatedDraftOrderLineItem; + public DraftOrderLineItem? AsDraftOrderLineItem() => this as DraftOrderLineItem; + public ShippingLine? AsShippingLine() => this as ShippingLine; + /// + ///Whether the line item is custom (`true`) or contains a product variant (`false`). + /// + public bool? custom { get; set; } + /// + ///The title of the product or variant. This field only applies to custom line items. + /// + public string? title { get; set; } + } + + /// + ///The set of valid sort keys for the DraftOrder query. + /// + public enum DraftOrderSortKeys + { + /// + ///Sort by the `number` value. + /// + NUMBER, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `status` value. + /// + STATUS, + /// + ///Sort by the `total_price` value. + /// + TOTAL_PRICE, + /// + ///Sort by the `customer_name` value. + /// + CUSTOMER_NAME, + /// + ///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, + } + + /// + ///The valid statuses for a draft order. + /// + public enum DraftOrderStatus + { + /// + ///The draft order has been paid. + /// + COMPLETED, + /// + ///An invoice for the draft order has been sent to the customer. + /// + INVOICE_SENT, + /// + ///The draft order is open. It has not been paid, and an invoice hasn't been sent. + /// + OPEN, + } + + /// + ///Represents a draft order tag. + /// + public class DraftOrderTag : GraphQLObject, INode + { + /// + ///Handle of draft order tag. + /// + public string? handle { get; set; } + /// + ///ID of draft order tag. + /// + public string? id { get; set; } + /// + ///Title of draft order tag. + /// + public string? title { get; set; } + } + + /// + ///Return type for `draftOrderUpdate` mutation. + /// + public class DraftOrderUpdatePayload : GraphQLObject + { + /// + ///The updated draft order. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A warning that is displayed to the merchant when a change is made to a draft order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DraftOrderBundleAddedWarning), typeDiscriminator: "DraftOrderBundleAddedWarning")] + [JsonDerivedType(typeof(DraftOrderDiscountNotAppliedWarning), typeDiscriminator: "DraftOrderDiscountNotAppliedWarning")] + public interface IDraftOrderWarning : IGraphQLObject + { + public DraftOrderBundleAddedWarning? AsDraftOrderBundleAddedWarning() => this as DraftOrderBundleAddedWarning; + public DraftOrderDiscountNotAppliedWarning? AsDraftOrderDiscountNotAppliedWarning() => this as DraftOrderDiscountNotAppliedWarning; + /// + ///The error code. + /// + public string? errorCode { get; } + /// + ///The input field that the warning applies to. + /// + public string? field { get; } + /// + ///The warning message. + /// + public string? message { get; } + } + + /// + ///The duty details for a line item. + /// + public class Duty : GraphQLObject, INode + { + /// + ///The ISO 3166-1 alpha-2 country code of the country of origin used in calculating the duty. + /// + public string? countryCodeOfOrigin { get; set; } + /// + ///The harmonized system code of the item used in calculating the duty. + /// + public string? harmonizedSystemCode { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The amount of the duty. + /// + public MoneyBag? price { get; set; } + /// + ///A list of taxes charged on the duty. + /// + public IEnumerable? taxLines { get; set; } + } + + /// + ///A sale associated with a duty charge. + /// + public class DutySale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The duty for the associated sale. + /// + public Duty? duty { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///The attribute editable information. + /// + public class EditableProperty : GraphQLObject + { + /// + ///Whether the attribute is locked for editing. + /// + public bool? locked { get; set; } + /// + ///The reason the attribute is locked for editing. + /// + public string? reason { get; set; } + } + + /// + ///An error that occurs during the execution of a server pixel mutation. + /// + public class ErrorsServerPixelUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ErrorsServerPixelUserError`. + /// + public enum ErrorsServerPixelUserErrorCode + { + /// + ///A server pixel doesn't exist for this app and shop. + /// + NOT_FOUND, + /// + ///A server pixel already exists for this app and shop. Only one server pixel can exist for any app and shop combination. + /// + ALREADY_EXISTS, + /// + ///PubSubProject and PubSubTopic values resulted in an address that is not a valid GCP pub/sub format.Address format should be pubsub://project:topic. + /// + PUB_SUB_ERROR, + /// + ///Server Pixel must be configured with a valid AWS Event Bridge or GCP pub/sub endpoint address to be connected. + /// + NEEDS_CONFIGURATION_TO_CONNECT, + } + + /// + ///An error that occurs during the execution of a web pixel mutation. + /// + public class ErrorsWebPixelUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ErrorsWebPixelUserError`. + /// + public enum ErrorsWebPixelUserErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The provided settings does not match the expected settings definition on the app. + /// + INVALID_SETTINGS, + /// + ///An error occurred and the web pixel couldnt be deleted. + /// + [Obsolete("`UNABLE_TO_DELETE` is deprecated. Use `UNEXPECTED_ERROR` instead.")] + UNABLE_TO_DELETE, + } + + /// + ///Events chronicle resource activities such as the creation of an article, the fulfillment of an order, or the + ///addition of a product. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(BasicEvent), typeDiscriminator: "BasicEvent")] + [JsonDerivedType(typeof(CommentEvent), typeDiscriminator: "CommentEvent")] + public interface IEvent : IGraphQLObject + { + public BasicEvent? AsBasicEvent() => this as BasicEvent; + public CommentEvent? AsCommentEvent() => this as CommentEvent; + /// + ///The action that occured. + /// + public string? action { get; } + /// + ///The name of the app that created the event. + /// + public string? appTitle { get; } + /// + ///Whether the event was created by an app. + /// + public bool? attributeToApp { get; } + /// + ///Whether the event was caused by an admin user. + /// + public bool? attributeToUser { get; } + /// + ///The date and time when the event was created. + /// + public DateTime? createdAt { get; } + /// + ///Whether the event is critical. + /// + public bool? criticalAlert { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///Human readable text that describes the event. + /// + public string? message { get; } + } + + /// + ///Return type for `eventBridgeServerPixelUpdate` mutation. + /// + public class EventBridgeServerPixelUpdatePayload : GraphQLObject + { + /// + ///The server pixel as configured by the mutation. + /// + public ServerPixel? serverPixel { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `eventBridgeWebhookSubscriptionCreate` mutation. + /// + public class EventBridgeWebhookSubscriptionCreatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The webhook subscription that was created. + /// + public WebhookSubscription? webhookSubscription { get; set; } + } + + /// + ///Return type for `eventBridgeWebhookSubscriptionUpdate` mutation. + /// + public class EventBridgeWebhookSubscriptionUpdatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The webhook subscription that was updated. + /// + public WebhookSubscription? webhookSubscription { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Events. + /// + public class EventConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in EventEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one Event and a cursor during pagination. + /// + public class EventEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of EventEdge. + /// + public IEvent? node { get; set; } + } + + /// + ///The set of valid sort keys for the Event query. + /// + public enum EventSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///The type of the resource that generated the event. + /// + public enum EventSubjectType + { + /// + ///A CompanyLocation resource generated the event. + /// + COMPANY_LOCATION, + /// + ///A Company resource generated the event. + /// + COMPANY, + /// + ///A Customer resource generated the event. + /// + CUSTOMER, + /// + ///A DraftOrder resource generated the event. + /// + DRAFT_ORDER, + /// + ///A Collection resource generated the event. + /// + COLLECTION, + /// + ///A Product resource generated the event. + /// + PRODUCT, + /// + ///A ProductVariant resource generated the event. + /// + PRODUCT_VARIANT, + /// + ///A Article resource generated the event. + /// + ARTICLE, + /// + ///A Blog resource generated the event. + /// + BLOG, + /// + ///A Comment resource generated the event. + /// + COMMENT, + /// + ///A Page resource generated the event. + /// + PAGE, + /// + ///A DiscountAutomaticBxgy resource generated the event. + /// + DISCOUNT_AUTOMATIC_BXGY, + /// + ///A DiscountAutomaticNode resource generated the event. + /// + DISCOUNT_AUTOMATIC_NODE, + /// + ///A DiscountCodeNode resource generated the event. + /// + DISCOUNT_CODE_NODE, + /// + ///A DiscountNode resource generated the event. + /// + DISCOUNT_NODE, + /// + ///A PriceRule resource generated the event. + /// + PRICE_RULE, + /// + ///A Order resource generated the event. + /// + ORDER, + /// + ///Subject type is not available. This usually means that the subject isn't available in the current + /// version of the API, using a newer API version may resolve this. + /// + UNKNOWN, + } + + /// + ///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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ExchangeLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ExchangeLineItem and a cursor during pagination. + /// + public class ExchangeLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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. + /// + public class ExchangeV2 : GraphQLObject, INode + { + /// + ///The details of the new items in the exchange. + /// + public ExchangeV2Additions? additions { get; set; } + /// + ///The date and time when the exchange was completed. + /// + public DateTime? completedAt { get; set; } + /// + ///The date and time when the exchange was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The location where the exchange happened. + /// + public Location? location { get; set; } + /// + ///The text of an optional note that a shop owner can attach to the exchange. + /// + public string? note { get; set; } + /// + ///The refunds processed during the exchange. + /// + public IEnumerable? refunds { get; set; } + /// + ///The details of the returned items in the exchange. + /// + public ExchangeV2Returns? returns { get; set; } + /// + ///The staff member associated with the exchange. + /// + public StaffMember? staffMember { get; set; } + /// + ///The amount of money that was paid or refunded as part of the exchange. + /// + public MoneyBag? totalAmountProcessedSet { get; set; } + /// + ///The difference in values of the items that were exchanged. + /// + public MoneyBag? totalPriceSet { get; set; } + /// + ///The order transactions related to the exchange. + /// + public IEnumerable? transactions { get; set; } + } + + /// + ///New items associated to the exchange. + /// + public class ExchangeV2Additions : GraphQLObject + { + /// + ///The list of new items for the exchange. + /// + public IEnumerable? lineItems { get; set; } + /// + ///The subtotal of the items being added, including discounts. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///The summary of all taxes of the items being added. + /// + public IEnumerable? taxLines { get; set; } + /// + ///The total price of the items being added, including discounts and taxes. + /// + public MoneyBag? totalPriceSet { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ExchangeV2s. + /// + public class ExchangeV2Connection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ExchangeV2Edge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ExchangeV2 and a cursor during pagination. + /// + public class ExchangeV2Edge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ExchangeV2Edge. + /// + public ExchangeV2? node { get; set; } + } + + /// + ///Contains information about an item in the exchange. + /// + public class ExchangeV2LineItem : GraphQLObject + { + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The total line price, in shop and presentment currencies, after discounts are applied. + /// + public MoneyBag? discountedTotalSet { get; set; } + /// + ///The price, in shop and presentment currencies, + ///of a single variant unit after line item discounts are applied. + /// + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///Name of the service provider who fulfilled the order. + /// + ///Valid values are either **manual** or the name of the provider. + ///For example, **amazon**, **shipwire**. + /// + ///Deleted fulfillment services will return null. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///Indiciates if this line item is a gift card. + /// + public bool? giftCard { get; set; } + /// + ///The gift cards associated with the line item. + /// + 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; } + /// + ///The name of the product. + /// + public string? name { get; set; } + /// + ///The total price, in shop and presentment currencies, before discounts are applied. + /// + public MoneyBag? originalTotalSet { get; set; } + /// + ///The price, in shop and presentment currencies, + ///of a single variant unit before line item discounts are applied. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The number of products that were purchased. + /// + public int? quantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///The SKU number of the product variant. + /// + public string? sku { get; set; } + /// + ///The TaxLine object connected to this line item. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether the variant is taxable. + /// + public bool? taxable { get; set; } + /// + ///The title of the product or variant. This field only applies to custom line items. + /// + public string? title { get; set; } + /// + ///The product variant of the line item. + /// + public ProductVariant? variant { get; set; } + /// + ///The name of the variant. + /// + public string? variantTitle { get; set; } + /// + ///The name of the vendor who created the product variant. + /// + public string? vendor { get; set; } + } + + /// + ///Return items associated to the exchange. + /// + public class ExchangeV2Returns : GraphQLObject + { + /// + ///The list of return items for the exchange. + /// + public IEnumerable? lineItems { get; set; } + /// + ///The amount of the order-level discount for the items and shipping being returned, which doesn't contain any line item discounts. + /// + public MoneyBag? orderDiscountAmountSet { get; set; } + /// + ///The amount of money to be refunded for shipping. + /// + public MoneyBag? shippingRefundAmountSet { get; set; } + /// + ///The subtotal of the items being returned. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///The summary of all taxes of the items being returned. + /// + public IEnumerable? taxLines { get; set; } + /// + ///The amount of money to be refunded for tip. + /// + public MoneyBag? tipRefundAmountSet { get; set; } + /// + ///The total value of the items being returned. + /// + public MoneyBag? totalPriceSet { get; set; } + } + + /// + ///Represents a video hosted outside of Shopify. + /// + public class ExternalVideo : GraphQLObject, IFile, IMedia, INode + { + /// + ///A word or phrase to describe the contents or the function of a file. + /// + public string? alt { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The embed URL of the video for the respective host. + /// + public string? embedUrl { get; set; } + + /// + ///The URL. + /// + [Obsolete("Use `originUrl` instead.")] + public string? embeddedUrl { get; set; } + /// + ///Any errors that have occurred on the file. + /// + public IEnumerable? fileErrors { get; set; } + /// + ///The status of the file. + /// + public string? fileStatus { get; set; } + /// + ///The host of the external video. + /// + public string? host { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The media content type. + /// + public string? mediaContentType { get; set; } + /// + ///Any errors which have occurred on the media. + /// + public IEnumerable? mediaErrors { get; set; } + /// + ///The warnings attached to the media. + /// + public IEnumerable? mediaWarnings { get; set; } + /// + ///The origin URL of the video on the respective host. + /// + public string? originUrl { get; set; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; set; } + /// + ///Current status of the media. + /// + public string? status { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Requirements that must be met before an app can be installed. + /// + public class FailedRequirement : GraphQLObject + { + /// + ///Action to be taken to resolve a failed requirement, including URL link. + /// + public NavigationItem? action { get; set; } + /// + ///A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app + ///encounters when trying to make use of their Shop and its resources. + /// + 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 string? 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 string? 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. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ExternalVideo), typeDiscriminator: "ExternalVideo")] + [JsonDerivedType(typeof(GenericFile), typeDiscriminator: "GenericFile")] + [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] + [JsonDerivedType(typeof(Model3d), typeDiscriminator: "Model3d")] + [JsonDerivedType(typeof(Video), typeDiscriminator: "Video")] + public interface IFile : IGraphQLObject + { + public ExternalVideo? AsExternalVideo() => this as ExternalVideo; + public GenericFile? AsGenericFile() => this as GenericFile; + public MediaImage? AsMediaImage() => this as MediaImage; + public Model3d? AsModel3d() => this as Model3d; + public Video? AsVideo() => this as Video; + /// + ///A word or phrase to describe the contents or the function of a file. + /// + public string? alt { get; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created. + /// + public DateTime? createdAt { get; } + /// + ///Any errors that have occurred on the file. + /// + public IEnumerable? fileErrors { get; } + /// + ///The status of the file. + /// + public string? fileStatus { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. + /// + public DateTime? updatedAt { get; } + } + + /// + ///Return type for `fileAcknowledgeUpdateFailed` mutation. + /// + public class FileAcknowledgeUpdateFailedPayload : GraphQLObject + { + /// + ///The updated file(s). + /// + public IEnumerable? files { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Files. + /// + public class FileConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FileEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The possible content types for a file object. + /// + public enum FileContentType + { + /// + ///A Shopify-hosted image. + /// + IMAGE, + /// + ///A Shopify-hosted generic file. + /// + FILE, + /// + ///A Shopify-hosted video file. It's recommended to use this type for all video files. + /// + VIDEO, + /// + ///An externally hosted video. + /// + EXTERNAL_VIDEO, + /// + ///A Shopify-hosted 3D model. + /// + MODEL_3D, + } + + /// + ///The input fields for handling if filename is already in use. + /// + public enum FileCreateInputDuplicateResolutionMode + { + /// + ///Append a UUID if filename is already in use. + /// + APPEND_UUID, + /// + ///Raise an error if filename is already in use. + /// + RAISE_ERROR, + /// + ///Replace the existing file if filename is already in use. + /// + REPLACE, + } + + /// + ///Return type for `fileCreate` mutation. + /// + public class FileCreatePayload : GraphQLObject + { + /// + ///The newly created files. + /// + public IEnumerable? files { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fileDelete` mutation. + /// + public class FileDeletePayload : GraphQLObject + { + /// + ///The IDs of the deleted files. + /// + public IEnumerable? deletedFileIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one File and a cursor during pagination. + /// + public class FileEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FileEdge. + /// + public IFile? node { get; set; } + } + + /// + ///A file error. This typically occurs when there is an issue with the file itself causing it to fail validation. + ///Check the file before attempting to upload again. + /// + public class FileError : GraphQLObject + { + /// + ///Code representing the type of error. + /// + public string? code { get; set; } + /// + ///Additional details regarding the error. + /// + public string? details { get; set; } + /// + ///Translated error message. + /// + public string? message { get; set; } + } + + /// + ///The error types for a file. + /// + public enum FileErrorCode + { + /// + ///File error has occurred for an unknown reason. + /// + UNKNOWN, + /// + ///File could not be processed because the signed URL was invalid. + /// + INVALID_SIGNED_URL, + /// + ///File could not be processed because the image could not be downloaded. + /// + IMAGE_DOWNLOAD_FAILURE, + /// + ///File could not be processed because the image could not be processed. + /// + IMAGE_PROCESSING_FAILURE, + /// + ///File timed out because it is currently being modified by another operation. + /// + MEDIA_TIMEOUT_ERROR, + /// + ///File could not be created because the external video could not be found. + /// + EXTERNAL_VIDEO_NOT_FOUND, + /// + ///File could not be created because the external video is not listed or is private. + /// + EXTERNAL_VIDEO_UNLISTED, + /// + ///File could not be created because the external video has an invalid aspect ratio. + /// + EXTERNAL_VIDEO_INVALID_ASPECT_RATIO, + /// + ///File could not be created because embed permissions are disabled for this video. + /// + EXTERNAL_VIDEO_EMBED_DISABLED, + /// + ///File could not be created because video is either not found or still transcoding. + /// + EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING, + /// + ///File could not be processed because the source could not be downloaded. + /// + GENERIC_FILE_DOWNLOAD_FAILURE, + /// + ///File could not be created because the size is too large. + /// + GENERIC_FILE_INVALID_SIZE, + /// + ///File could not be created because the metadata could not be read. + /// + VIDEO_METADATA_READ_ERROR, + /// + ///File could not be created because it has an invalid file type. + /// + VIDEO_INVALID_FILETYPE_ERROR, + /// + ///File could not be created because it does not meet the minimum width requirement. + /// + VIDEO_MIN_WIDTH_ERROR, + /// + ///File could not be created because it does not meet the maximum width requirement. + /// + VIDEO_MAX_WIDTH_ERROR, + /// + ///File could not be created because it does not meet the minimum height requirement. + /// + VIDEO_MIN_HEIGHT_ERROR, + /// + ///File could not be created because it does not meet the maximum height requirement. + /// + VIDEO_MAX_HEIGHT_ERROR, + /// + ///File could not be created because it does not meet the minimum duration requirement. + /// + VIDEO_MIN_DURATION_ERROR, + /// + ///File could not be created because it does not meet the maximum duration requirement. + /// + VIDEO_MAX_DURATION_ERROR, + /// + ///Video failed validation. + /// + VIDEO_VALIDATION_ERROR, + /// + ///Model failed validation. + /// + MODEL3D_VALIDATION_ERROR, + /// + ///File could not be created because the model's thumbnail generation failed. + /// + MODEL3D_THUMBNAIL_GENERATION_ERROR, + /// + ///There was an issue while trying to generate a new thumbnail. + /// + MODEL3D_THUMBNAIL_REGENERATION_ERROR, + /// + ///File could not be created because the model can't be converted to USDZ format. + /// + MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR, + /// + ///File could not be created because the model file failed processing. + /// + MODEL3D_GLB_OUTPUT_CREATION_ERROR, + /// + ///File could not be created because the model file failed processing. + /// + MODEL3D_PROCESSING_FAILURE, + /// + ///File could not be created because the image is an unsupported file type. + /// + UNSUPPORTED_IMAGE_FILE_TYPE, + /// + ///File could not be created because the image size is too large. + /// + INVALID_IMAGE_FILE_SIZE, + /// + ///File could not be created because the image has an invalid aspect ratio. + /// + INVALID_IMAGE_ASPECT_RATIO, + /// + ///File could not be created because the image's resolution exceeds the max limit. + /// + INVALID_IMAGE_RESOLUTION, + /// + ///File could not be created because the cumulative file storage limit would be exceeded. + /// + FILE_STORAGE_LIMIT_EXCEEDED, + /// + ///File could not be created because a file with the same name already exists. + /// + DUPLICATE_FILENAME_ERROR, + } + + /// + ///The set of valid sort keys for the File query. + /// + public enum FileSortKeys + { + /// + ///Sort by the `filename` value. + /// + FILENAME, + /// + ///Sort by the `original_upload_size` value. + /// + ORIGINAL_UPLOAD_SIZE, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///The possible statuses for a file object. + /// + public enum FileStatus + { + /// + ///File has been uploaded but hasn't been processed. + /// + UPLOADED, + /// + ///File is being processed. + /// + PROCESSING, + /// + ///File is ready to be displayed. + /// + READY, + /// + ///File processing has failed. + /// + FAILED, + } + + /// + ///Return type for `fileUpdate` mutation. + /// + public class FileUpdatePayload : GraphQLObject + { + /// + ///The list of updated files. + /// + public IEnumerable? files { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `FilesUserError`. + /// + public enum FilesErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///File does not exist. + /// + FILE_DOES_NOT_EXIST, + /// + ///File has a pending operation. + /// + FILE_LOCKED, + /// + ///Filename update is only supported on Image and GenericFile. + /// + UNSUPPORTED_MEDIA_TYPE_FOR_FILENAME_UPDATE, + /// + ///Specify one argument: search, IDs, or deleteAll. + /// + TOO_MANY_ARGUMENTS, + /// + ///The search term must not be blank. + /// + BLANK_SEARCH, + /// + ///At least one argument is required. + /// + MISSING_ARGUMENTS, + /// + ///Search query isn't supported. + /// + INVALID_QUERY, + /// + ///Invalid filename extension. + /// + INVALID_FILENAME_EXTENSION, + /// + ///The provided filename is invalid. + /// + INVALID_FILENAME, + /// + ///The provided filename already exists. + /// + FILENAME_ALREADY_EXISTS, + /// + ///The file is not supported on trial accounts that have not validated their email. Either select a plan or verify the shop owner email to upload this file. + /// + UNACCEPTABLE_UNVERIFIED_TRIAL_ASSET, + /// + ///The file type is not supported. + /// + UNACCEPTABLE_ASSET, + /// + ///The file is not supported on trial accounts. Select a plan to upload this file. + /// + UNACCEPTABLE_TRIAL_ASSET, + /// + ///The alt value exceeds the maximum limit of 512 characters. + /// + ALT_VALUE_LIMIT_EXCEEDED, + /// + ///The file is not in the READY state. + /// + NON_READY_STATE, + /// + ///Exceeded the limit of non-image media per shop. + /// + NON_IMAGE_MEDIA_PER_SHOP_LIMIT_EXCEEDED, + /// + ///Cannot create file with custom filename which does not match original source extension. + /// + MISMATCHED_FILENAME_AND_ORIGINAL_SOURCE, + /// + ///Duplicate resolution mode is not supported for this file type. + /// + INVALID_DUPLICATE_MODE_FOR_TYPE, + /// + ///Invalid image source url value provided. + /// + INVALID_IMAGE_SOURCE_URL, + /// + ///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, + /// + ///The file type is not supported for referencing. + /// + UNSUPPORTED_FILE_REFERENCE, + /// + ///The target resource does not exist. + /// + REFERENCE_TARGET_DOES_NOT_EXIST, + /// + ///Cannot add more than 10000 references to a file. + /// + TOO_MANY_FILE_REFERENCE, + } + + /// + ///An error that happens during the execution of a Files API query or mutation. + /// + public class FilesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///A filter option is one possible value in a search filter. + /// + public class FilterOption : GraphQLObject + { + /// + ///The filter option's label for display purposes. + /// + public string? label { get; set; } + /// + ///The filter option's value. + /// + public string? value { get; set; } + } + + /// + ///An amount that's allocated to a line item based on an associated discount application. + /// + public class FinancialSummaryDiscountAllocation : GraphQLObject + { + /// + ///The money amount that's allocated per unit on the associated line based on the discount application in shop and presentment currencies. If the allocated amount for the line cannot be evenly divided by the quantity, then this amount will be an approximate amount, avoiding fractional pennies. For example, if the associated line had a quantity of 3 with a discount of 4 cents, then the discount distribution would be [0.01, 0.01, 0.02]. This field returns the highest number of the distribution. In this example, this would be 0.02. + /// + public MoneyBag? approximateAllocatedAmountPerItem { get; set; } + /// + ///The discount application that the allocated amount originated from. + /// + public FinancialSummaryDiscountApplication? discountApplication { get; set; } + } + + /// + ///Discount applications capture the intentions of a discount source at + ///the time of application on an order's line items or shipping lines. + /// + public class FinancialSummaryDiscountApplication : GraphQLObject + { + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + } + + /// + ///Return type for `flowGenerateSignature` mutation. + /// + public class FlowGenerateSignaturePayload : GraphQLObject + { + /// + ///The payload used to generate the signature. + /// + public string? payload { get; set; } + /// + ///The generated signature. + /// + public string? signature { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `flowTriggerReceive` mutation. + /// + public class FlowTriggerReceivePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a fulfillment. + ///In Shopify, a fulfillment represents a shipment of one or more items in an order. + ///When an order has been completely fulfilled, it means that all the items that are included + ///in the order have been sent to the customer. + ///There can be more than one fulfillment for an order. + /// + public class Fulfillment : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The date and time when the fulfillment was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The date that this fulfillment was delivered. + /// + public DateTime? deliveredAt { get; set; } + /// + ///Human readable display status for this fulfillment. + /// + public string? displayStatus { get; set; } + /// + ///The estimated date that this fulfillment will arrive. + /// + public DateTime? estimatedDeliveryAt { get; set; } + /// + ///The history of events associated with this fulfillment. + /// + public FulfillmentEventConnection? events { get; set; } + /// + ///List of the fulfillment's line items. + /// + public FulfillmentLineItemConnection? fulfillmentLineItems { get; set; } + /// + ///A paginated list of fulfillment orders for the fulfillment. + /// + public FulfillmentOrderConnection? fulfillmentOrders { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The date and time when the fulfillment went into transit. + /// + public DateTime? inTransitAt { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The location that the fulfillment was processed at. + /// + public Location? location { get; set; } + /// + ///Human readable reference identifier for this fulfillment. + /// + public string? name { get; set; } + /// + ///The order for which the fulfillment was created. + /// + public Order? order { get; set; } + /// + ///The address at which the fulfillment occurred. This field is intended for tax purposes, as a full address is required for tax providers to accurately calculate taxes. Typically this is the address of the warehouse or fulfillment center. To retrieve a fulfillment location's address, use the `assignedLocation` field on the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object instead. + /// + public FulfillmentOriginAddress? originAddress { get; set; } + /// + ///Whether any of the line items in the fulfillment require shipping. + /// + public bool? requiresShipping { get; set; } + /// + ///Fulfillment service associated with the fulfillment. + /// + public FulfillmentService? service { get; set; } + /// + ///The status of the fulfillment. + /// + public string? status { get; set; } + /// + ///Sum of all line item quantities for the fulfillment. + /// + public int? totalQuantity { get; set; } + /// + ///Tracking information associated with the fulfillment, + ///such as the tracking company, tracking number, and tracking URL. + /// + public IEnumerable? trackingInfo { get; set; } + /// + ///The date and time when the fulfillment was last modified. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `fulfillmentCancel` mutation. + /// + public class FulfillmentCancelPayload : GraphQLObject + { + /// + ///The canceled fulfillment. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Fulfillments. + /// + public class FulfillmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///A fulfillment constraint rule. + /// + public class FulfillmentConstraintRule : GraphQLObject, IHasMetafields, INode + { + /// + ///Delivery method types that the function is associated with. + /// + public IEnumerable? deliveryMethodTypes { get; set; } + /// + ///The ID for the fulfillment constraint function. + /// + public ShopifyFunction? function { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///Return type for `fulfillmentConstraintRuleCreate` mutation. + /// + public class FulfillmentConstraintRuleCreatePayload : GraphQLObject + { + /// + ///The newly created fulfillment constraint rule. + /// + public FulfillmentConstraintRule? fulfillmentConstraintRule { 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 `FulfillmentConstraintRuleCreate`. + /// + public class FulfillmentConstraintRuleCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentConstraintRuleCreateUserError`. + /// + public enum FulfillmentConstraintRuleCreateUserErrorCode + { + /// + ///Failed to create fulfillment constraint rule due to invalid input. + /// + INPUT_INVALID, + /// + ///No Shopify Function found for provided function_id. + /// + FUNCTION_NOT_FOUND, + /// + ///A fulfillment constraint rule already exists for the provided function_id. + /// + FUNCTION_ALREADY_REGISTERED, + /// + ///Function does not implement the required interface for this fulfillment constraint rule. + /// + FUNCTION_DOES_NOT_IMPLEMENT, + /// + ///Shop must be on a Shopify Plus plan to activate functions from a custom app. + /// + CUSTOM_APP_FUNCTION_NOT_ELIGIBLE, + /// + ///Function is pending deletion and cannot have new rules created against it. + /// + FUNCTION_PENDING_DELETION, + /// + ///Maximum number of fulfillment constraint rules reached. Limit is 10. + /// + MAXIMUM_FULFILLMENT_CONSTRAINT_RULES_REACHED, + } + + /// + ///Return type for `fulfillmentConstraintRuleDelete` mutation. + /// + public class FulfillmentConstraintRuleDeletePayload : GraphQLObject + { + /// + ///Whether or not the fulfillment constraint rule was successfully deleted. + /// + public bool? success { 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 `FulfillmentConstraintRuleDelete`. + /// + public class FulfillmentConstraintRuleDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentConstraintRuleDeleteUserError`. + /// + public enum FulfillmentConstraintRuleDeleteUserErrorCode + { + /// + ///Could not find fulfillment constraint rule for provided id. + /// + NOT_FOUND, + /// + ///Unauthorized app scope. + /// + UNAUTHORIZED_APP_SCOPE, + } + + /// + ///Return type for `fulfillmentConstraintRuleUpdate` mutation. + /// + public class FulfillmentConstraintRuleUpdatePayload : GraphQLObject + { + /// + ///The updated fulfillment constraint rule. + /// + public FulfillmentConstraintRule? fulfillmentConstraintRule { 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 `FulfillmentConstraintRuleUpdate`. + /// + public class FulfillmentConstraintRuleUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentConstraintRuleUpdateUserError`. + /// + public enum FulfillmentConstraintRuleUpdateUserErrorCode + { + /// + ///Could not find fulfillment constraint rule for provided id. + /// + NOT_FOUND, + /// + ///Unauthorized app scope. + /// + UNAUTHORIZED_APP_SCOPE, + } + + /// + ///Return type for `fulfillmentCreate` mutation. + /// + public class FulfillmentCreatePayload : GraphQLObject + { + /// + ///The created fulfillment. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentCreateV2` mutation. + /// + public class FulfillmentCreateV2Payload : GraphQLObject + { + /// + ///The created fulfillment. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The display status of a fulfillment. + /// + public enum FulfillmentDisplayStatus + { + /// + ///Displayed as **Attempted delivery**. + /// + ATTEMPTED_DELIVERY, + /// + ///Displayed as **Canceled**. + /// + CANCELED, + /// + ///Displayed as **Confirmed**. + /// + CONFIRMED, + /// + ///Displayed as **Delivered**. + /// + DELIVERED, + /// + ///Displayed as **Failure**. + /// + FAILURE, + /// + ///Displayed as **Fulfilled**. + /// + FULFILLED, + /// + ///Displayed as **In transit**. + /// + IN_TRANSIT, + /// + ///Displayed as **Label printed**. + /// + LABEL_PRINTED, + /// + ///Displayed as **Label purchased**. + /// + LABEL_PURCHASED, + /// + ///Displayed as **Label voided**. + /// + LABEL_VOIDED, + /// + ///Displayed as **Marked as fulfilled**. + /// + MARKED_AS_FULFILLED, + /// + ///Displayed as **Not delivered**. + /// + NOT_DELIVERED, + /// + ///Displayed as **Out for delivery**. + /// + OUT_FOR_DELIVERY, + /// + ///Displayed as **Ready for pickup**. + /// + READY_FOR_PICKUP, + /// + ///Displayed as **Picked up**. + /// + PICKED_UP, + /// + ///Displayed as **Submitted**. + /// + SUBMITTED, + } + + /// + ///An auto-generated type which holds one Fulfillment and a cursor during pagination. + /// + public class FulfillmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentEdge. + /// + public Fulfillment? node { get; set; } + } + + /// + ///The fulfillment event that describes the fulfilllment status at a particular time. + /// + public class FulfillmentEvent : GraphQLObject, INode + { + /// + ///The street address where this fulfillment event occurred. + /// + public string? address1 { get; set; } + /// + ///The city where this fulfillment event occurred. + /// + public string? city { get; set; } + /// + ///The country where this fulfillment event occurred. + /// + public string? country { get; set; } + /// + ///The date and time when the fulfillment event was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The estimated delivery date and time of the fulfillment. + /// + public DateTime? estimatedDeliveryAt { get; set; } + /// + ///The time at which this fulfillment event happened. + /// + public DateTime? happenedAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The latitude where this fulfillment event occurred. + /// + public decimal? latitude { get; set; } + /// + ///The longitude where this fulfillment event occurred. + /// + public decimal? longitude { get; set; } + /// + ///A message associated with this fulfillment event. + /// + public string? message { get; set; } + /// + ///The province where this fulfillment event occurred. + /// + public string? province { get; set; } + /// + ///The status of this fulfillment event. + /// + public string? status { get; set; } + /// + ///The zip code of the location where this fulfillment event occurred. + /// + public string? zip { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentEvents. + /// + public class FulfillmentEventConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentEventEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `fulfillmentEventCreate` mutation. + /// + public class FulfillmentEventCreatePayload : GraphQLObject + { + /// + ///The created fulfillment event. + /// + public FulfillmentEvent? fulfillmentEvent { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentEvent and a cursor during pagination. + /// + public class FulfillmentEventEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentEventEdge. + /// + public FulfillmentEvent? node { get; set; } + } + + /// + ///The set of valid sort keys for the FulfillmentEvent query. + /// + public enum FulfillmentEventSortKeys + { + /// + ///Sort by the `happened_at` value. + /// + HAPPENED_AT, + /// + ///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, + } + + /// + ///The status that describes a fulfillment or delivery event. + /// + public enum FulfillmentEventStatus + { + /// + ///A shipping label has been purchased. + /// + LABEL_PURCHASED, + /// + ///A purchased shipping label has been printed. + /// + LABEL_PRINTED, + /// + ///The fulfillment is ready to be picked up. + /// + READY_FOR_PICKUP, + /// + ///The fulfillment is confirmed. This is the default value when no other information is available. + /// + CONFIRMED, + /// + ///The fulfillment is in transit. + /// + IN_TRANSIT, + /// + ///The fulfillment is out for delivery. + /// + OUT_FOR_DELIVERY, + /// + ///A delivery was attempted. + /// + ATTEMPTED_DELIVERY, + /// + ///The fulfillment was successfully delivered. + /// + DELIVERED, + /// + ///The fulfillment request failed. + /// + FAILURE, + } + + /// + ///A fulfillment hold currently applied on a fulfillment order. + /// + public class FulfillmentHold : GraphQLObject, INode + { + /// + ///The localized reason for the fulfillment hold for display purposes. + /// + public string? displayReason { get; set; } + /// + ///The name of the app or service that applied the fulfillment hold. + /// + public string? heldBy { get; set; } + /// + ///A boolean value that indicates whether the requesting app created the fulfillment hold. + /// + public bool? heldByRequestingApp { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The reason for the fulfillment hold. + /// + public string? reason { get; set; } + /// + ///Additional information about the fulfillment hold reason. + /// + public string? reasonNotes { get; set; } + } + + /// + ///The reason for a fulfillment hold. + /// + public enum FulfillmentHoldReason + { + /// + ///The fulfillment hold is applied because payment is pending. + /// + AWAITING_PAYMENT, + /// + ///The fulfillment hold is applied because of a high risk of fraud. + /// + HIGH_RISK_OF_FRAUD, + /// + ///The fulfillment hold is applied because of an incorrect address. + /// + INCORRECT_ADDRESS, + /// + ///The fulfillment hold is applied because inventory is out of stock. + /// + INVENTORY_OUT_OF_STOCK, + /// + ///The fulfillment hold is applied because of an unknown delivery date. + /// + UNKNOWN_DELIVERY_DATE, + /// + ///The fulfillment hold is applied because of a post purchase upsell offer. + /// + ONLINE_STORE_POST_PURCHASE_CROSS_SELL, + /// + ///The fulfillment hold is applied because of return items not yet received during an exchange. + /// + AWAITING_RETURN_ITEMS, + /// + ///The fulfillment hold is applied for another reason. + /// + OTHER, + } + + /// + ///Represents a line item from an order that's included in a fulfillment. + /// + public class FulfillmentLineItem : GraphQLObject, INode + { + /// + ///The total price after discounts are applied. + /// + [Obsolete("Use `discountedTotalSet` instead.")] + public decimal? discountedTotal { get; set; } + /// + ///The total price after discounts are applied in shop and presentment currencies. + /// + public MoneyBag? discountedTotalSet { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The associated order's line item. + /// + public LineItem? lineItem { get; set; } + + /// + ///The total price before discounts are applied. + /// + [Obsolete("Use `originalTotalSet` instead.")] + public decimal? originalTotal { get; set; } + /// + ///The total price before discounts are applied in shop and presentment currencies. + /// + public MoneyBag? originalTotalSet { get; set; } + /// + ///Number of line items in the fulfillment. + /// + public int? quantity { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentLineItems. + /// + public class FulfillmentLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentLineItem and a cursor during pagination. + /// + public class FulfillmentLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentLineItemEdge. + /// + public FulfillmentLineItem? node { get; set; } + } + + /// + ///The FulfillmentOrder object represents either an item or a group of items in an + ///[Order](https://shopify.dev/api/admin-graphql/latest/objects/Order) + ///that are expected to be fulfilled from the same location. + ///There can be more than one fulfillment order for an + ///[order](https://shopify.dev/api/admin-graphql/latest/objects/Order) + ///at a given location. + /// + ///{{ '/api/reference/fulfillment_order_relationships.png' | image }} + /// + ///Fulfillment orders represent the work which is intended to be done in relation to an order. + ///When fulfillment has started for one or more line items, a + ///[Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment) + ///is created by a merchant or third party to represent the ongoing or completed work of fulfillment. + /// + ///[See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service). + /// + ///> Note: + ///> Shopify creates fulfillment orders automatically when an order is created. + ///> It is not possible to manually create fulfillment orders. + ///> + ///> [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order). + /// + ///## Retrieving fulfillment orders + /// + ///### Fulfillment orders from an order + /// + ///All fulfillment orders related to a given order can be retrieved with the + ///[Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders) + ///connection. + /// + ///[API access scopes](#api-access-scopes) + ///govern which fulfillments orders are returned to clients. + ///An API client will only receive a subset of the fulfillment orders which belong to an order + ///if they don't have the necessary access scopes to view all of the fulfillment orders. + /// + ///### Fulfillment orders assigned to the app for fulfillment + /// + ///Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the + ///[assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/2024-07/objects/queryroot#connection-assignedfulfillmentorders) + ///connection. + ///Use the `assignmentStatus` argument to control whether all assigned fulfillment orders + ///should be returned or only those where a merchant has sent a + ///[fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest) + ///and it has yet to be responded to. + /// + ///The API client must be granted the `read_assigned_fulfillment_orders` access scope to access + ///the assigned fulfillment orders. + /// + ///### All fulfillment orders + /// + ///Apps can retrieve all fulfillment orders with the + ///[fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders) + ///query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop, + ///which are accessible to the app according to the + ///[fulfillment order access scopes](#api-access-scopes) it was granted with. + /// + ///## The lifecycle of a fulfillment order + /// + ///### Fulfillment Order Creation + /// + ///After an order is created, a background worker performs the order routing process which determines + ///which locations will be responsible for fulfilling the purchased items. + ///Once the order routing process is complete, one or more fulfillment orders will be created + ///and assigned to these locations. It is not possible to manually create fulfillment orders. + /// + ///Once a fulfillment order has been created, it will have one of two different lifecycles depending on + ///the type of location which the fulfillment order is assigned to. + /// + ///### The lifecycle of a fulfillment order at a merchant managed location + /// + ///Fulfillment orders are completed by creating + ///[fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment). + ///Fulfillments represents the work done. + /// + ///For digital products a merchant or an order management app would create a fulfilment once the digital asset + ///has been provisioned. + ///For example, in the case of a digital gift card, a merchant would to do this once + ///the gift card has been activated - before the email has been shipped. + /// + ///On the other hand, for a traditional shipped order, + ///a merchant or an order management app would create a fulfillment after picking and packing the items relating + ///to a fulfillment order, but before the courier has collected the goods. + /// + ///[Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments). + /// + ///### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service + /// + ///For fulfillment orders which are assigned to a location that is managed by a fulfillment service, + ///a merchant or an Order Management App can + ///[send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest) + ///to the fulfillment service which operates the location to request that they fulfill the associated items. + ///A fulfillment service has the option to + ///[accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest) + ///or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest) + ///this fulfillment request. + /// + ///Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant + ///or order management app and instead a + ///[cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest) + ///to the fulfillment service. + /// + ///Once a fulfillment service accepts a fulfillment request, + ///then after they are ready to pack items and send them for delivery, they create fulfillments with the + ///[fulfillmentCreate](https://shopify.dev/api/admin-graphql/unstable/mutations/fulfillmentCreate) + ///mutation. + ///They can provide tracking information right away or create fulfillments without it and then + ///update the tracking information for fulfillments with the + ///[fulfillmentTrackingInfoUpdate](https://shopify.dev/api/admin-graphql/unstable/mutations/fulfillmentTrackingInfoUpdate) + ///mutation. + /// + ///[Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments). + /// + ///## API access scopes + /// + ///Fulfillment orders are governed by the following API access scopes: + /// + ///* The `read_merchant_managed_fulfillment_orders` and + /// `write_merchant_managed_fulfillment_orders` access scopes + /// grant access to fulfillment orders assigned to merchant-managed locations. + ///* The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders` + /// access scopes are intended for fulfillment services. + /// These scopes grant access to fulfillment orders assigned to locations that are being managed + /// by fulfillment services. + ///* The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders` + /// access scopes grant access to fulfillment orders + /// assigned to locations managed by other fulfillment services. + /// + ///### Fulfillment service app access scopes + /// + ///Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope + ///and don't have the `*_third_party_fulfillment_orders` + ///or `*_merchant_managed_fulfillment_orders` access scopes. + ///The app will only have access to the fulfillment orders assigned to their location + ///(or multiple locations if the app registers multiple fulfillment services on the shop). + ///The app will not have access to fulfillment orders assigned to merchant-managed locations + ///or locations owned by other fulfillment service apps. + /// + ///### Order management app access scopes + /// + ///**Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and + ///`write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders + ///on behalf of a merchant. + /// + ///If an app combines the functions of an order management app and a fulfillment service, + ///then the app should request all + ///access scopes to manage all assigned and all unassigned fulfillment orders. + /// + ///## Notifications about fulfillment orders + /// + ///Fulfillment services are required to + ///[register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService) + ///a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified + ///whenever a merchant submits a fulfillment or cancellation request. + /// + ///Both merchants and apps can + ///[subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks) + ///to the + ///[fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted) + ///to be notified whenever fulfillment order related domain events occur. + /// + ///[Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment). + /// + public class FulfillmentOrder : GraphQLObject, INode, IMetafieldReferencer + { + /// + ///The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen. + /// + ///The fulfillment order's assigned location might change in the following cases: + /// + ///- The fulfillment order has been entirely moved to a new location. For example, the [fulfillmentOrderMove]( + /// https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove + /// ) mutation has been called, and you see the original fulfillment order in the [movedFulfillmentOrder]( + /// https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove#field-fulfillmentordermovepayload-movedfulfillmentorder + /// ) field within the mutation's response. + ///- Work on the fulfillment order hasn't yet begun, which means that the fulfillment order has the + /// [OPEN](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-open), + /// [SCHEDULED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-scheduled), or + /// [ON_HOLD](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-onhold) + /// status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin). + /// + public FulfillmentOrderAssignedLocation? assignedLocation { get; set; } + /// + ///ID of the channel that created the order. + /// + public string? channelId { get; set; } + /// + ///Date and time when the fulfillment order was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Delivery method of this fulfillment order. + /// + public DeliveryMethod? deliveryMethod { get; set; } + /// + ///The destination where the items should be sent. + /// + public FulfillmentOrderDestination? destination { get; set; } + /// + ///The date and time at which the fulfillment order will be fulfillable. When this date and time is reached, the scheduled fulfillment order is automatically transitioned to open. For example, the `fulfill_at` date for a subscription order might be the 1st of each month, a pre-order `fulfill_at` date would be `nil`, and a standard order `fulfill_at` date would be the order creation date. + /// + public DateTime? fulfillAt { get; set; } + /// + ///The latest date and time by which all items in the fulfillment order need to be fulfilled. + /// + public DateTime? fulfillBy { get; set; } + /// + ///The fulfillment holds applied on the fulfillment order. + /// + public IEnumerable? fulfillmentHolds { get; set; } + /// + ///Fulfillment orders eligible for merging with the given fulfillment order. + /// + public FulfillmentOrderConnection? fulfillmentOrdersForMerge { get; set; } + /// + ///A list of fulfillments for the fulfillment order. + /// + public FulfillmentConnection? fulfillments { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The duties delivery method of this fulfillment order. + /// + public FulfillmentOrderInternationalDuties? internationalDuties { get; set; } + /// + ///A list of the fulfillment order's line items. + /// + public FulfillmentOrderLineItemConnection? lineItems { get; set; } + /// + ///A list of locations that the fulfillment order can potentially move to. + /// + public FulfillmentOrderLocationForMoveConnection? locationsForMove { get; set; } + /// + ///A list of requests sent by the merchant or an order management app to the fulfillment service for the fulfillment order. + /// + public FulfillmentOrderMerchantRequestConnection? merchantRequests { get; set; } + /// + ///The order that's associated with the fulfillment order. + /// + public Order? order { get; set; } + /// + ///ID of the order that's associated with the fulfillment order. + /// + public string? orderId { get; set; } + /// + ///The unique identifier for the order that appears on the order page in the Shopify admin and the Order status page. + ///For example, "#1001", "EN1001", or "1001-A". + ///This value isn't unique across multiple stores. + /// + public string? orderName { get; set; } + /// + ///The date and time when the order was processed. + ///This date and time might not match the date and time when the order was created. + /// + public DateTime? orderProcessedAt { get; set; } + /// + ///The request status of the fulfillment order. + /// + public string? requestStatus { get; set; } + /// + ///The status of the fulfillment order. + /// + public string? status { get; set; } + /// + ///The actions that can be performed on this fulfillment order. + /// + public IEnumerable? supportedActions { get; set; } + /// + ///The date and time when the fulfillment order was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `fulfillmentOrderAcceptCancellationRequest` mutation. + /// + public class FulfillmentOrderAcceptCancellationRequestPayload : GraphQLObject + { + /// + ///The fulfillment order whose cancellation request was accepted. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderAcceptFulfillmentRequest` mutation. + /// + public class FulfillmentOrderAcceptFulfillmentRequestPayload : GraphQLObject + { + /// + ///The fulfillment order whose fulfillment request was accepted. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The actions that can be taken on a fulfillment order. + /// + public enum FulfillmentOrderAction + { + /// + ///Creates a fulfillment for selected line items in the fulfillment order. The corresponding mutation for this action is `fulfillmentCreateV2`. + /// + CREATE_FULFILLMENT, + /// + ///Sends a request for fulfilling selected line items in a fulfillment order to a fulfillment service. The corresponding mutation for this action is `fulfillmentOrderSubmitFulfillmentRequest`. + /// + REQUEST_FULFILLMENT, + /// + ///Cancels a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderCancel`. + /// + CANCEL_FULFILLMENT_ORDER, + /// + ///Moves a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderMove`. + /// + MOVE, + /// + ///Sends a cancellation request to the fulfillment service of a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderSubmitCancellationRequest`. + /// + REQUEST_CANCELLATION, + /// + ///Marks the fulfillment order as open. The corresponding mutation for this action is `fulfillmentOrderOpen`. + /// + MARK_AS_OPEN, + /// + ///Releases the fulfillment hold on the fulfillment order. The corresponding mutation for this action is `fulfillmentOrderReleaseHold`. + /// + RELEASE_HOLD, + /// + ///Applies a fulfillment hold on an open fulfillment order. The corresponding mutation for this action is `fulfillmentOrderHold`. + /// + HOLD, + /// + ///Opens an external URL to initiate the fulfillment process outside Shopify. This action should be paired with `FulfillmentOrderSupportedAction.externalUrl`. + /// + EXTERNAL, + /// + ///Splits a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderSplit`. + /// + SPLIT, + /// + ///Merges a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderMerge`. + /// + MERGE, + } + + /// + ///The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen. + /// + /// The fulfillment order's assigned location might change in the following cases: + /// + /// - The fulfillment order has been entirely moved to a new location. For example, the [fulfillmentOrderMove]( + /// https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove + /// ) mutation has been called, and you see the original fulfillment order in the [movedFulfillmentOrder]( + /// https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove#field-fulfillmentordermovepayload-movedfulfillmentorder + /// ) field within the mutation's response. + /// + /// - Work on the fulfillment order has not yet begun, which means that the fulfillment order has the + /// [OPEN](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-open), + /// [SCHEDULED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-scheduled), or + /// [ON_HOLD](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-onhold) + /// status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin). + /// + ///If the [fulfillmentOrderMove]( + ///https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove + ///) mutation has moved the fulfillment order's line items to a new location, + ///but hasn't moved the fulfillment order instance itself, then the original fulfillment order's assigned location + ///doesn't change. + ///This happens if the fulfillment order is being split during the move, or if all line items can be moved + ///to an existing fulfillment order at a new location. + /// + ///Once the fulfillment order has been taken into work or canceled, + ///which means that the fulfillment order has the + ///[IN_PROGRESS](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-inprogress), + ///[CLOSED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-closed), + ///[CANCELLED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-cancelled), or + ///[INCOMPLETE](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-incomplete) + ///status, `FulfillmentOrderAssignedLocation` acts as a snapshot of the shop's location content. + ///Up-to-date shop's location data may be queried through [location]( + /// https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderAssignedLocation#field-fulfillmentorderassignedlocation-location + ///) connection. + /// + public class FulfillmentOrderAssignedLocation : GraphQLObject + { + /// + ///The first line of the address for the location. + /// + public string? address1 { get; set; } + /// + ///The second line of the address for the location. + /// + public string? address2 { get; set; } + /// + ///The city of the location. + /// + public string? city { get; set; } + /// + ///The two-letter country code of the location. + /// + public string? countryCode { get; set; } + /// + ///The location where the fulfillment is expected to happen. This value might be different from + ///`FulfillmentOrderAssignedLocation` if the location's attributes were updated + ///after the fulfillment order was taken into work of canceled. + /// + public Location? location { get; set; } + /// + ///The name of the location. + /// + public string? name { get; set; } + /// + ///The phone number of the location. + /// + public string? phone { get; set; } + /// + ///The province of the location. + /// + public string? province { get; set; } + /// + ///The ZIP code of the location. + /// + public string? zip { get; set; } + } + + /// + ///The assigment status to be used to filter fulfillment orders. + /// + public enum FulfillmentOrderAssignmentStatus + { + /// + ///Fulfillment orders for which the merchant has requested cancellation of + ///the previously accepted fulfillment request. + /// + CANCELLATION_REQUESTED, + /// + ///Fulfillment orders for which the merchant has requested fulfillment. + /// + FULFILLMENT_REQUESTED, + /// + ///Fulfillment orders for which the merchant's fulfillment request has been accepted. + ///Any number of fulfillments can be created on these fulfillment orders + ///to completely fulfill the requested items. + /// + FULFILLMENT_ACCEPTED, + /// + ///Fulfillment orders for which the merchant hasn't yet requested fulfillment. + /// + FULFILLMENT_UNSUBMITTED, + } + + /// + ///Return type for `fulfillmentOrderCancel` mutation. + /// + public class FulfillmentOrderCancelPayload : GraphQLObject + { + /// + ///The fulfillment order that was marked as canceled. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The fulfillment order that was created to replace the canceled fulfillment order. + /// + public FulfillmentOrder? replacementFulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderClose` mutation. + /// + public class FulfillmentOrderClosePayload : GraphQLObject + { + /// + ///The fulfillment order that was marked as incomplete. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentOrders. + /// + public class FulfillmentOrderConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentOrderEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Represents the destination where the items should be sent upon fulfillment. + /// + public class FulfillmentOrderDestination : GraphQLObject, INode + { + /// + ///The first line of the address of the destination. + /// + public string? address1 { get; set; } + /// + ///The second line of the address of the destination. + /// + public string? address2 { get; set; } + /// + ///The city of the destination. + /// + public string? city { get; set; } + /// + ///The company of the destination. + /// + public string? company { get; set; } + /// + ///The two-letter country code of the destination. + /// + public string? countryCode { get; set; } + /// + ///The email of the customer at the destination. + /// + public string? email { get; set; } + /// + ///The first name of the customer at the destination. + /// + public string? firstName { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The last name of the customer at the destination. + /// + public string? lastName { get; set; } + /// + ///The location designated for the pick-up of the fulfillment order. + /// + public Location? location { get; set; } + /// + ///The phone number of the customer at the destination. + /// + public string? phone { get; set; } + /// + ///The province of the destination. + /// + public string? province { get; set; } + /// + ///The ZIP code of the destination. + /// + public string? zip { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentOrder and a cursor during pagination. + /// + public class FulfillmentOrderEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentOrderEdge. + /// + public FulfillmentOrder? node { get; set; } + } + + /// + ///Return type for `fulfillmentOrderHold` mutation. + /// + public class FulfillmentOrderHoldPayload : GraphQLObject + { + /// + ///The fulfillment hold created for the fulfillment order. Null if no hold was created. + /// + public FulfillmentHold? fulfillmentHold { get; set; } + /// + ///The fulfillment order on which a fulfillment hold was applied. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The remaining fulfillment order containing the line items to which the hold wasn't applied, + ///if specific line items were specified to be placed on hold. + /// + public FulfillmentOrder? remainingFulfillmentOrder { 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 `FulfillmentOrderHold`. + /// + public class FulfillmentOrderHoldUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderHoldUserError`. + /// + public enum FulfillmentOrderHoldUserErrorCode + { + /// + ///The fulfillment order could not be found. + /// + FULFILLMENT_ORDER_NOT_FOUND, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The fulfillment order line item quantity must be greater than 0. + /// + GREATER_THAN_ZERO, + /// + ///The fulfillment order line item quantity is invalid. + /// + INVALID_LINE_ITEM_QUANTITY, + } + + /// + ///The international duties relevant to a fulfillment order. + /// + public class FulfillmentOrderInternationalDuties : GraphQLObject + { + /// + ///The method of duties payment. Example values: `DDP`, `DAP`. + /// + public string? incoterm { get; set; } + } + + /// + ///Associates an order line item with quantities requiring fulfillment from the respective fulfillment order. + /// + public class FulfillmentOrderLineItem : GraphQLObject, INode + { + /// + ///The financial summary for the Fulfillment Order's Line Items. + /// + public IEnumerable? financialSummaries { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated to the line item's variant. + /// + public Image? image { get; set; } + /// + ///The ID of the inventory item. + /// + public string? inventoryItemId { get; set; } + /// + ///The associated order line item. + /// + public LineItem? lineItem { get; set; } + + /// + ///The variant unit price without discounts applied, in shop and presentment currencies. + /// + [Obsolete("Use `financialSummaries` instead.")] + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///The title of the product. + /// + public string? productTitle { get; set; } + /// + ///The number of units remaining to be fulfilled. + /// + public int? remainingQuantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///The variant SKU number. + /// + public string? sku { get; set; } + /// + ///The total number of units to be fulfilled. + /// + public int? totalQuantity { get; set; } + /// + ///The product variant associated to the fulfillment order line item. + /// + public ProductVariant? variant { get; set; } + /// + ///The name of the variant. + /// + public string? variantTitle { get; set; } + /// + ///The name of the vendor who made the variant. + /// + public string? vendor { get; set; } + /// + ///Warning messages for a fulfillment order line item. + /// + public IEnumerable? warnings { get; set; } + /// + ///The weight of a line item unit. + /// + public Weight? weight { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentOrderLineItems. + /// + public class FulfillmentOrderLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentOrderLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentOrderLineItem and a cursor during pagination. + /// + public class FulfillmentOrderLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentOrderLineItemEdge. + /// + public FulfillmentOrderLineItem? node { get; set; } + } + + /// + ///The financial details of a fulfillment order line item. + /// + public class FulfillmentOrderLineItemFinancialSummary : GraphQLObject + { + /// + ///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.For the full picture of applied discounts, see discountAllocations. + /// + public MoneyBag? approximateDiscountedUnitPriceSet { get; set; } + /// + ///The discounts that have been allocated onto the line item by discount applications, not including order edits and refunds. + /// + public IEnumerable? discountAllocations { get; set; } + /// + ///The variant unit price without discounts applied, in shop and presentment currencies. + /// + public MoneyBag? originalUnitPriceSet { get; set; } + /// + ///Number of line items that this financial summary applies to. + /// + public int? quantity { get; set; } + } + + /// + ///A fulfillment order line item warning. For example, a warning about why a fulfillment request was rejected. + /// + public class FulfillmentOrderLineItemWarning : GraphQLObject + { + /// + ///The description of warning. + /// + public string? description { get; set; } + /// + ///The title of warning. + /// + public string? title { get; set; } + } + + /// + ///Return type for `fulfillmentOrderLineItemsPreparedForPickup` mutation. + /// + public class FulfillmentOrderLineItemsPreparedForPickupPayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `FulfillmentOrderLineItemsPreparedForPickup`. + /// + public class FulfillmentOrderLineItemsPreparedForPickupUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderLineItemsPreparedForPickupUserError`. + /// + public enum FulfillmentOrderLineItemsPreparedForPickupUserErrorCode + { + /// + ///The fulfillment order does not have any line items that can be prepared. + /// + NO_LINE_ITEMS_TO_PREPARE_FOR_FULFILLMENT_ORDER, + /// + ///Invalid fulfillment order ID provided. + /// + FULFILLMENT_ORDER_INVALID, + /// + ///Unable to prepare quantity. + /// + UNABLE_TO_PREPARE_QUANTITY, + } + + /// + ///A location that a fulfillment order can potentially move to. + /// + public class FulfillmentOrderLocationForMove : GraphQLObject + { + /// + ///Fulfillment order line items that can be moved from their current location to the given location. + /// + public FulfillmentOrderLineItemConnection? availableLineItems { get; set; } + /// + ///Total number of fulfillment order line items that can be moved from their current assigned location to the + ///given location. + /// + public Count? availableLineItemsCount { get; set; } + /// + ///The location being considered as the fulfillment order's new assigned location. + /// + public Location? location { get; set; } + /// + ///A human-readable string with the reason why the fulfillment order, or some of its line items, can't be + ///moved to the location. + /// + public string? message { get; set; } + /// + ///Whether the fulfillment order can be moved to the location. + /// + public bool? movable { get; set; } + /// + ///Fulfillment order line items that cannot be moved from their current location to the given location. + /// + public FulfillmentOrderLineItemConnection? unavailableLineItems { get; set; } + /// + ///Total number of fulfillment order line items that can't be moved from their current assigned location to the + ///given location. + /// + public Count? unavailableLineItemsCount { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentOrderLocationForMoves. + /// + public class FulfillmentOrderLocationForMoveConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentOrderLocationForMoveEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentOrderLocationForMove and a cursor during pagination. + /// + public class FulfillmentOrderLocationForMoveEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentOrderLocationForMoveEdge. + /// + public FulfillmentOrderLocationForMove? node { get; set; } + } + + /// + ///A request made by the merchant or an order management app to a fulfillment service + ///for a fulfillment order. + /// + public class FulfillmentOrderMerchantRequest : GraphQLObject, INode + { + /// + ///The fulfillment order associated with the merchant request. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The kind of request made. + /// + public string? kind { get; set; } + /// + ///The optional message that the merchant included in the request. + /// + public string? message { get; set; } + /// + ///Additional options requested by the merchant. These depend on the `kind` of the request. + ///For example, for a `FULFILLMENT_REQUEST`, one option is `notify_customer`, which indicates whether the + ///merchant intends to notify the customer upon fulfillment. The fulfillment service can then set + ///`notifyCustomer` when making calls to `FulfillmentCreate`. + /// + public string? requestOptions { get; set; } + /// + ///The response from the fulfillment service. + /// + public string? responseData { get; set; } + /// + ///The timestamp when the request was made. + /// + public DateTime? sentAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple FulfillmentOrderMerchantRequests. + /// + public class FulfillmentOrderMerchantRequestConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in FulfillmentOrderMerchantRequestEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one FulfillmentOrderMerchantRequest and a cursor during pagination. + /// + public class FulfillmentOrderMerchantRequestEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of FulfillmentOrderMerchantRequestEdge. + /// + public FulfillmentOrderMerchantRequest? node { get; set; } + } + + /// + ///The kinds of request merchants can make to a fulfillment service. + /// + public enum FulfillmentOrderMerchantRequestKind + { + /// + ///The merchant requests fulfillment for an `OPEN` fulfillment order. + /// + FULFILLMENT_REQUEST, + /// + ///The merchant requests cancellation of an `IN_PROGRESS` fulfillment order. + /// + CANCELLATION_REQUEST, + } + + /// + ///Return type for `fulfillmentOrderMerge` mutation. + /// + public class FulfillmentOrderMergePayload : GraphQLObject + { + /// + ///The result of the fulfillment order merges. + /// + public IEnumerable? fulfillmentOrderMerges { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The result of merging a set of fulfillment orders. + /// + public class FulfillmentOrderMergeResult : GraphQLObject + { + /// + ///The new fulfillment order as a result of the merge. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + } + + /// + ///An error that occurs during the execution of `FulfillmentOrderMerge`. + /// + public class FulfillmentOrderMergeUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderMergeUserError`. + /// + public enum FulfillmentOrderMergeUserErrorCode + { + /// + ///The fulfillment order could not be found. + /// + FULFILLMENT_ORDER_NOT_FOUND, + /// + ///The fulfillment order line item quantity must be greater than 0. + /// + GREATER_THAN, + /// + ///The fulfillment order line item quantity is invalid. + /// + INVALID_LINE_ITEM_QUANTITY, + } + + /// + ///Return type for `fulfillmentOrderMove` mutation. + /// + public class FulfillmentOrderMovePayload : GraphQLObject + { + /// + ///The fulfillment order which now contains the moved line items and is assigned to the destination location. + /// + ///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; } + /// + ///The final state of the original fulfillment order. + /// + ///As a result of the move operation, the original fulfillment order might be moved to the new location + ///or remain in the original location. The original fulfillment order might have the same status or be closed. + /// + public FulfillmentOrder? originalFulfillmentOrder { get; set; } + /// + ///This field is deprecated. + /// + public FulfillmentOrder? remainingFulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderOpen` mutation. + /// + public class FulfillmentOrderOpenPayload : GraphQLObject + { + /// + ///The fulfillment order that was transitioned to open and is fulfillable. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderRejectCancellationRequest` mutation. + /// + public class FulfillmentOrderRejectCancellationRequestPayload : GraphQLObject + { + /// + ///The fulfillment order whose cancellation request was rejected. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderRejectFulfillmentRequest` mutation. + /// + public class FulfillmentOrderRejectFulfillmentRequestPayload : GraphQLObject + { + /// + ///The fulfillment order whose fulfillment request was rejected. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The reason for a fulfillment order rejection. + /// + public enum FulfillmentOrderRejectionReason + { + /// + ///The fulfillment order was rejected because of an incorrect address. + /// + INCORRECT_ADDRESS, + /// + ///The fulfillment order was rejected because inventory is out of stock. + /// + INVENTORY_OUT_OF_STOCK, + /// + ///The fulfillment order was rejected because of an ineligible product. + /// + INELIGIBLE_PRODUCT, + /// + ///The fulfillment order was rejected because of an undeliverable destination. + /// + UNDELIVERABLE_DESTINATION, + /// + ///The fulfillment order was rejected for another reason. + /// + OTHER, + } + + /// + ///Return type for `fulfillmentOrderReleaseHold` mutation. + /// + public class FulfillmentOrderReleaseHoldPayload : GraphQLObject + { + /// + ///The fulfillment order on which the hold was released. + /// + public FulfillmentOrder? fulfillmentOrder { 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 `FulfillmentOrderReleaseHold`. + /// + public class FulfillmentOrderReleaseHoldUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderReleaseHoldUserError`. + /// + public enum FulfillmentOrderReleaseHoldUserErrorCode + { + /// + ///The fulfillment order wasn't found. + /// + FULFILLMENT_ORDER_NOT_FOUND, + /// + ///The app doesn't have access to release the fulfillment hold. + /// + INVALID_ACCESS, + } + + /// + ///The request status of a fulfillment order. + /// + public enum FulfillmentOrderRequestStatus + { + /// + ///The initial request status for the newly-created fulfillment orders. This is the only valid + ///request status for fulfillment orders that aren't assigned to a fulfillment service. + /// + UNSUBMITTED, + /// + ///The merchant requested fulfillment for this fulfillment order. + /// + SUBMITTED, + /// + ///The fulfillment service accepted the merchant's fulfillment request. + /// + ACCEPTED, + /// + ///The fulfillment service rejected the merchant's fulfillment request. + /// + REJECTED, + /// + ///The merchant requested a cancellation of the fulfillment request for this fulfillment order. + /// + CANCELLATION_REQUESTED, + /// + ///The fulfillment service accepted the merchant's fulfillment cancellation request. + /// + CANCELLATION_ACCEPTED, + /// + ///The fulfillment service rejected the merchant's fulfillment cancellation request. + /// + CANCELLATION_REJECTED, + /// + ///The fulfillment service closed the fulfillment order without completing it. + /// + CLOSED, + } + + /// + ///Return type for `fulfillmentOrderReschedule` mutation. + /// + public class FulfillmentOrderReschedulePayload : GraphQLObject + { + /// + ///A fulfillment order with the rescheduled line items. + /// + ///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 returned. + ///Otherwise the original fulfillment order will be returned with an updated `fulfillAt` datetime. + /// + public FulfillmentOrder? fulfillmentOrder { 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 `FulfillmentOrderReschedule`. + /// + public class FulfillmentOrderRescheduleUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderRescheduleUserError`. + /// + public enum FulfillmentOrderRescheduleUserErrorCode + { + /// + ///Fulfillment order could not be found. + /// + FULFILLMENT_ORDER_NOT_FOUND, + } + + /// + ///The set of valid sort keys for the FulfillmentOrder query. + /// + public enum FulfillmentOrderSortKeys + { + /// + ///Sort by the `id` value. + /// + 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. + /// + RELEVANCE, + } + + /// + ///Return type for `fulfillmentOrderSplit` mutation. + /// + public class FulfillmentOrderSplitPayload : GraphQLObject + { + /// + ///The result of the fulfillment order splits. + /// + public IEnumerable? fulfillmentOrderSplits { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The result of splitting a fulfillment order. + /// + public class FulfillmentOrderSplitResult : GraphQLObject + { + /// + ///The original fulfillment order as a result of the split. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The remaining fulfillment order as a result of the split. + /// + public FulfillmentOrder? remainingFulfillmentOrder { get; set; } + /// + ///The replacement fulfillment order if the original fulfillment order wasn't in a state to be split. + /// + public FulfillmentOrder? replacementFulfillmentOrder { get; set; } + } + + /// + ///An error that occurs during the execution of `FulfillmentOrderSplit`. + /// + public class FulfillmentOrderSplitUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrderSplitUserError`. + /// + public enum FulfillmentOrderSplitUserErrorCode + { + /// + ///The fulfillment order could not be found. + /// + FULFILLMENT_ORDER_NOT_FOUND, + /// + ///The fulfillment order line item quantity must be greater than 0. + /// + GREATER_THAN, + /// + ///The fulfillment order line item quantity is invalid. + /// + INVALID_LINE_ITEM_QUANTITY, + /// + ///The fulfillment order must have at least one line item input to split. + /// + NO_LINE_ITEMS_PROVIDED_TO_SPLIT, + } + + /// + ///The status of a fulfillment order. + /// + public enum FulfillmentOrderStatus + { + /// + ///The fulfillment order is ready for fulfillment. + /// + OPEN, + /// + ///The fulfillment order is being processed. + /// + IN_PROGRESS, + /// + ///The fulfillment order has been cancelled by the merchant. + /// + CANCELLED, + /// + ///The fulfillment order cannot be completed as requested. + /// + INCOMPLETE, + /// + ///The fulfillment order has been completed and closed. + /// + CLOSED, + /// + ///The fulfillment order is deferred and will be ready for fulfillment after the date and time specified in `fulfill_at`. + /// + SCHEDULED, + /// + ///The fulfillment order is on hold. The fulfillment process can't be initiated until the hold on the fulfillment order is released. + /// + ON_HOLD, + } + + /// + ///Return type for `fulfillmentOrderSubmitCancellationRequest` mutation. + /// + public class FulfillmentOrderSubmitCancellationRequestPayload : GraphQLObject + { + /// + ///The fulfillment order specified in the cancelation request. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentOrderSubmitFulfillmentRequest` mutation. + /// + public class FulfillmentOrderSubmitFulfillmentRequestPayload : GraphQLObject + { + /// + ///The original fulfillment order intended to request fulfillment for. + /// + public FulfillmentOrder? originalFulfillmentOrder { get; set; } + /// + ///The fulfillment order that was submitted to the fulfillment service. This will be the same as + ///the original fulfillment order field. The exception to this is partial fulfillment requests or + ///fulfillment request for cancelled or incomplete fulfillment orders. + /// + public FulfillmentOrder? submittedFulfillmentOrder { get; set; } + /// + ///This field will only be present for partial fulfillment requests. This will represent the new + ///fulfillment order with the remaining line items not submitted to the fulfillment service. + /// + public FulfillmentOrder? unsubmittedFulfillmentOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///One of the actions that the fulfillment order supports in its current state. + /// + public class FulfillmentOrderSupportedAction : GraphQLObject + { + /// + ///The action value. + /// + public string? action { get; set; } + /// + ///The external URL to be used to initiate the fulfillment process outside Shopify. + ///Applicable only when the `action` value is `EXTERNAL`. + /// + public string? externalUrl { get; set; } + } + + /// + ///Return type for `fulfillmentOrdersSetFulfillmentDeadline` mutation. + /// + public class FulfillmentOrdersSetFulfillmentDeadlinePayload : GraphQLObject + { + /// + ///Whether the fulfillment deadline was successfully set. + /// + public bool? success { 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 `FulfillmentOrdersSetFulfillmentDeadline`. + /// + public class FulfillmentOrdersSetFulfillmentDeadlineUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `FulfillmentOrdersSetFulfillmentDeadlineUserError`. + /// + public enum FulfillmentOrdersSetFulfillmentDeadlineUserErrorCode + { + /// + ///The fulfillment orders could not be found. + /// + FULFILLMENT_ORDERS_NOT_FOUND, + } + + /// + ///The address at which the fulfillment occurred. This object is intended for tax purposes, as a full address is required for tax providers to accurately calculate taxes. Typically this is the address of the warehouse or fulfillment center. To retrieve a fulfillment location's address, use the `assignedLocation` field on the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object instead. + /// + public class FulfillmentOriginAddress : GraphQLObject + { + /// + ///The street address of the fulfillment location. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The city in which the fulfillment location is located. + /// + public string? city { get; set; } + /// + ///The country code of the fulfillment location. + /// + public string? countryCode { get; set; } + /// + ///The province code of the fulfillment location. + /// + public string? provinceCode { get; set; } + /// + ///The zip code of the fulfillment location. + /// + public string? zip { get; set; } + } + + /// + ///A **Fulfillment Service** is a third party warehouse that prepares and ships orders + ///on behalf of the store owner. Fulfillment services charge a fee to package and ship items + ///and update product inventory levels. Some well known fulfillment services with Shopify integrations + ///include: Amazon, Shipwire, and Rakuten. When an app registers a new `FulfillmentService` on a store, + ///Shopify automatically creates a `Location` that's associated to the fulfillment service. + ///To learn more about fulfillment services, refer to + ///[Manage fulfillments as a fulfillment service app](https://shopify.dev/apps/fulfillment/fulfillment-service-apps) + ///guide. + /// + ///## Mutations + /// + ///You can work with the `FulfillmentService` object with the + ///[fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate), + ///[fulfillmentServiceUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceUpdate), + ///and [fulfillmentServiceDelete](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceDelete) + ///mutations. + /// + ///## Hosted endpoints + /// + ///Fulfillment service providers integrate with Shopify by providing Shopify with a set of hosted endpoints that + ///Shopify can query on certain conditions. + ///These endpoints must have a common prefix, and this prefix should be supplied in the `callbackUrl` parameter + ///in the + ///[fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate) + ///mutation. + /// + ///- Shopify sends POST requests to the `/fulfillment_order_notification` endpoint + /// to notify the fulfillment service about fulfillment requests and fulfillment cancellation requests. + /// + /// For more information, refer to + /// [Receive fulfillment requests and cancellations](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations). + ///- Shopify sends GET requests to the `/fetch_tracking_numbers` endpoint to retrieve tracking numbers for orders, + /// if `trackingSupport` is set to `true`. + /// + /// For more information, refer to + /// [Enable tracking support](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-8-enable-tracking-support-optional). + /// + /// Fulfillment services can also update tracking information with the + /// [fulfillmentTrackingInfoUpdate](https://shopify.dev/api/admin-graphql/unstable/mutations/fulfillmentTrackingInfoUpdate) mutation, + /// rather than waiting for Shopify to ask for tracking numbers. + ///- Shopify sends GET requests to the `/fetch_stock` endpoint to retrieve inventory levels, + /// if `inventoryManagement` is set to `true`. + /// + /// For more information, refer to + /// [Sharing inventory levels with Shopify](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-9-share-inventory-levels-with-shopify-optional). + /// + ///To make sure you have everything set up correctly, you can test the `callbackUrl`-prefixed endpoints + ///in your development store. + /// + ///## Resources and webhooks + /// + ///There are a variety of objects and webhooks that enable a fulfillment service to work. + ///To exchange fulfillment information with Shopify, fulfillment services use the + ///[FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder), + ///[Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment) and + ///[Order](https://shopify.dev/api/admin-graphql/latest/objects/Order) objects and related mutations. + ///To act on fulfillment process events that happen on the Shopify side, + ///besides awaiting calls to `callbackUrl`-prefixed endpoints, + ///fulfillment services can subscribe to the + ///[fulfillment order](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks) + ///and [order](https://shopify.dev/api/admin-rest/latest/resources/webhook) + ///webhooks. + /// + public class FulfillmentService : GraphQLObject + { + /// + ///The callback URL that the fulfillment service has registered for requests. The following considerations apply: + /// + ///- Shopify queries the `/fetch_tracking_numbers` endpoint to retrieve tracking numbers + /// for orders, if `trackingSupport` is set to `true`. + ///- Shopify queries the `/fetch_stock` endpoint to retrieve inventory levels, + /// if `inventoryManagement` is set to `true`. + ///- Shopify uses the `/fulfillment_order_notification` endpoint to send + /// [fulfillment and cancellation requests](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations), + /// if the fulfillment service has opted in to the fulfillment order based workflow for managing fulfillments + /// (`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. + /// + public string? handle { get; set; } + /// + ///The ID of the fulfillment service. + /// + public string? id { get; set; } + /// + ///Whether the fulfillment service tracks product inventory and provides updates to Shopify. + /// + public bool? inventoryManagement { get; set; } + /// + ///Location associated with the fulfillment service. + /// + public Location? location { get; set; } + /// + ///Whether the fulfillment service can stock inventory alongside other locations. + /// + public bool? permitsSkuSharing { get; set; } + /// + ///The name of the fulfillment service as seen by merchants. + /// + public string? serviceName { get; set; } + /// + ///Whether the fulfillment service implemented the /fetch_tracking_numbers endpoint. + /// + public bool? trackingSupport { get; set; } + /// + ///Type associated with the fulfillment service. + /// + public string? type { get; set; } + } + + /// + ///Return type for `fulfillmentServiceCreate` mutation. + /// + public class FulfillmentServiceCreatePayload : GraphQLObject + { + /// + ///The created fulfillment service. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Actions that can be taken at the location when a client requests the deletion of the fulfillment service. + /// + public enum FulfillmentServiceDeleteInventoryAction + { + /// + ///Deactivate and delete the inventory and location. + /// + DELETE, + /// + ///Keep the inventory in place and convert the Fulfillment Service's location to be merchant managed. + /// + KEEP, + /// + ///Transfer the inventory and other dependencies to the provided location. + /// + TRANSFER, + } + + /// + ///Return type for `fulfillmentServiceDelete` mutation. + /// + public class FulfillmentServiceDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted fulfillment service. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The type of a fulfillment service. + /// + public enum FulfillmentServiceType + { + /// + ///Fulfillment by gift card. + /// + GIFT_CARD, + /// + ///Manual fulfillment by the merchant. + /// + MANUAL, + /// + ///Fullfillment by a third-party fulfillment service. + /// + THIRD_PARTY, + } + + /// + ///Return type for `fulfillmentServiceUpdate` mutation. + /// + public class FulfillmentServiceUpdatePayload : GraphQLObject + { + /// + ///The updated fulfillment service. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The status of a fulfillment. + /// + public enum FulfillmentStatus + { + /// + ///Shopify has created the fulfillment and is waiting for the third-party fulfillment service to transition it to `open` or `success`. + /// + [Obsolete("This is a legacy status and is due to be deprecated.")] + PENDING, + /// + ///The third-party fulfillment service has acknowledged the fulfillment and is processing it. + /// + [Obsolete("This is a legacy status and is due to be deprecated.")] + OPEN, + /// + ///The fulfillment was completed successfully. + /// + SUCCESS, + /// + ///The fulfillment was canceled. + /// + CANCELLED, + /// + ///There was an error with the fulfillment request. + /// + ERROR, + /// + ///The fulfillment request failed. + /// + FAILURE, + } + + /// + ///Represents the tracking information for a fulfillment. + /// + public class FulfillmentTrackingInfo : GraphQLObject + { + /// + ///The name of the tracking company. + /// + ///For tracking company names from the list below + ///Shopify will automatically build tracking URLs for all provided tracking numbers, + ///which will make the tracking numbers clickable in the interface. + /// + ///Additionally, for the tracking companies listed on the + ///[Shipping Carriers help page](https://help.shopify.com/manual/shipping/understanding-shipping/shipping-carriers#integrated-shipping-carriers) + ///Shopify will automatically update the fulfillment's `shipment_status` field during the fulfillment process. + /// + ///### Supported tracking companies + /// + ///The following tracking companies display for shops located in any country: + /// + /// * 4PX + /// * AGS + /// * Amazon Logistics UK + /// * Amazon Logistics US + /// * An Post + /// * Anjun Logistics + /// * APC + /// * Asendia USA + /// * Australia Post + /// * Bonshaw + /// * BPost + /// * BPost International + /// * Canada Post + /// * Canpar + /// * CDL Last Mile + /// * China Post + /// * Chronopost + /// * Chukou1 + /// * Colissimo + /// * Comingle + /// * Coordinadora + /// * Correios + /// * Correos + /// * CTT + /// * CTT Express + /// * Cyprus Post + /// * Delnext + /// * Deutsche Post + /// * DHL eCommerce + /// * DHL eCommerce Asia + /// * DHL Express + /// * DPD + /// * DPD Local + /// * DPD UK + /// * DTD Express + /// * DX + /// * Eagle + /// * Estes + /// * Evri + /// * FedEx + /// * First Global Logistics + /// * First Line + /// * FSC + /// * Fulfilla + /// * GLS + /// * Guangdong Weisuyi Information Technology (WSE) + /// * Heppner Internationale Spedition GmbH & Co. + /// * Iceland Post + /// * IDEX + /// * Israel Post + /// * Japan Post (EN) + /// * Japan Post (JA) + /// * La Poste + /// * Lasership + /// * Latvia Post + /// * Lietuvos Paštas + /// * Logisters + /// * Lone Star Overnight + /// * M3 Logistics + /// * Meteor Space + /// * Mondial Relay + /// * New Zealand Post + /// * NinjaVan + /// * North Russia Supply Chain (Shenzhen) Co. + /// * OnTrac + /// * Packeta + /// * Pago Logistics + /// * Ping An Da Tengfei Express + /// * Pitney Bowes + /// * Portal PostNord + /// * Poste Italiane + /// * PostNL + /// * PostNord DK + /// * PostNord NO + /// * PostNord SE + /// * Purolator + /// * Qxpress + /// * Qyun Express + /// * Royal Mail + /// * Royal Shipments + /// * Sagawa (EN) + /// * Sagawa (JA) + /// * Sendle + /// * SF Express + /// * SFC Fulfillment + /// * SHREE NANDAN COURIER + /// * Singapore Post + /// * Southwest Air Cargo + /// * StarTrack + /// * Step Forward Freight + /// * Swiss Post + /// * TForce Final Mile + /// * Tinghao + /// * TNT + /// * Toll IPEC + /// * United Delivery Service + /// * UPS + /// * USPS + /// * Venipak + /// * We Post + /// * Whistl + /// * Wizmo + /// * WMYC + /// * Xpedigo + /// * XPO Logistics + /// * Yamato (EN) + /// * Yamato (JA) + /// * YiFan Express + /// * YunExpress + /// + ///The following tracking companies are displayed for shops located in specific countries: + /// + /// * **Australia**: Australia Post, Sendle, Aramex Australia, TNT Australia, Hunter Express, Couriers Please, Bonds, Allied Express, Direct Couriers, Northline, GO Logistics + /// * **Austria**: Österreichische Post + /// * **Bulgaria**: Speedy + /// * **Canada**: Intelcom, BoxKnight, Loomis, GLS + /// * **China**: China Post, DHL eCommerce Asia, WanbExpress, YunExpress, Anjun Logistics, SFC Fulfillment, FSC + /// * **Czechia**: Zásilkovna + /// * **Germany**: Deutsche Post (DE), Deutsche Post (EN), DHL, DHL Express, Swiship, Hermes, GLS + /// * **Spain**: SEUR + /// * **France**: Colissimo, Mondial Relay, Colis Privé, GLS + /// * **United Kingdom**: Evri, DPD UK, Parcelforce, Yodel, DHL Parcel, Tuffnells + /// * **Greece**: ACS Courier + /// * **Hong Kong SAR**: SF Express + /// * **Ireland**: Fastway, DPD Ireland + /// * **India**: DTDC, India Post, Delhivery, Gati KWE, Professional Couriers, XpressBees, Ecom Express, Ekart, Shadowfax, Bluedart + /// * **Italy**: BRT, GLS Italy + /// * **Japan**: エコ配, 西濃運輸, 西濃スーパーエキスプレス, 福山通運, 日本通運, 名鉄運輸, 第一貨物 + /// * **Netherlands**: DHL Parcel, DPD + /// * **Norway**: Bring + /// * **Poland**: Inpost + /// * **Turkey**: PTT, Yurtiçi Kargo, Aras Kargo, Sürat Kargo + /// * **United States**: GLS, Alliance Air Freight, Pilot Freight, LSO, Old Dominion, Pandion, R+L Carriers, Southwest Air Cargo + /// * **South Africa**: Fastway, Skynet. + /// + public string? company { get; set; } + /// + ///The tracking number of the fulfillment. + /// + ///The tracking number is clickable in the interface if one of the following applies + ///(the highest in the list has the highest priority): + /// + ///* Tracking url provided in the `url` field. + ///* [Shopify-known tracking company name](#supported-tracking-companies) specified in the `company` field. + /// Shopify will build the tracking URL automatically based on the tracking number specified. + ///* The tracking number has a Shopify-known format. + /// Shopify will guess the tracking provider and build the tracking url based on the tracking number format. + /// Not all tracking carriers are supported, and multiple tracking carriers may use similarly formatted tracking numbers. + /// This can result in an invalid tracking URL. + /// It is highly recommended that you send the tracking company and the tracking URL. + /// + public string? number { get; set; } + /// + ///The URLs to track the fulfillment. + /// + ///The tracking URL is displayed in the merchant's admin on the order page. + ///The tracking URL is displayed in the shipping confirmation email, which can optionally be sent to the customer. + ///When accounts are enabled, it's also displayed in the customer's order history. + /// + public string? url { get; set; } + } + + /// + ///Return type for `fulfillmentTrackingInfoUpdate` mutation. + /// + public class FulfillmentTrackingInfoUpdatePayload : GraphQLObject + { + /// + ///The updated fulfillment with tracking information. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `fulfillmentTrackingInfoUpdateV2` mutation. + /// + public class FulfillmentTrackingInfoUpdateV2Payload : GraphQLObject + { + /// + ///The updated fulfillment with tracking information. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The App Bridge information for a Shopify Function. + /// + public class FunctionsAppBridge : GraphQLObject + { + /// + ///The relative path for creating a customization. + /// + public string? createPath { get; set; } + /// + ///The relative path for viewing a customization. + /// + public string? detailsPath { get; set; } + } + + /// + ///The error history from running a Shopify Function. + /// + public class FunctionsErrorHistory : GraphQLObject + { + /// + ///The date and time that the first error occurred. + /// + public DateTime? errorsFirstOccurredAt { get; set; } + /// + ///The date and time that the first error occurred. + /// + public DateTime? firstOccurredAt { get; set; } + /// + ///Whether the merchant has shared all the recent errors with the developer. + /// + public bool? hasBeenSharedSinceLastError { get; set; } + /// + ///Whether the merchant has shared all the recent errors with the developer. + /// + public bool? hasSharedRecentErrors { get; set; } + } + + /// + ///Represents any file other than HTML. + /// + public class GenericFile : GraphQLObject, IFile, INode, IMetafieldReference + { + /// + ///A word or phrase to describe the contents or the function of a file. + /// + public string? alt { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Any errors that have occurred on the file. + /// + public IEnumerable? fileErrors { get; set; } + /// + ///The status of the file. + /// + public string? fileStatus { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The generic file's MIME type. + /// + public string? mimeType { get; set; } + /// + ///The generic file's size in bytes. + /// + public int? originalFileSize { get; set; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The generic file's URL. + /// + public string? url { get; set; } + } + + /// + ///Represents an issued gift card. + /// + public class GiftCard : GraphQLObject, INode + { + /// + ///The gift card's remaining balance. + /// + public MoneyV2? balance { get; set; } + /// + ///The date and time at which the gift card was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customer who will receive the gift card. + /// + public Customer? customer { get; set; } + /// + ///The date and time at which the gift card was deactivated. + /// + public DateTime? deactivatedAt { get; set; } + /// + ///Whether the gift card is enabled. + /// + public bool? enabled { get; set; } + /// + ///The date at which the gift card will expire. + /// + public DateOnly? expiresOn { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The initial value of the gift card. + /// + public MoneyV2? initialValue { get; set; } + /// + ///The final four characters of the gift card code. + /// + public string? lastCharacters { get; set; } + /// + ///The gift card code. Everything but the final four characters is masked. + /// + public string? maskedCode { get; set; } + /// + ///The note associated with the gift card, which isn't visible to the customer. + /// + public string? note { get; set; } + /// + ///The order associated with the gift card. This value is `null` if the gift card was issued manually. + /// + public Order? order { get; set; } + /// + ///The recipient who will receive the gift card. + /// + public GiftCardRecipient? recipientAttributes { get; set; } + /// + ///The theme template used to render the gift card online. + /// + public string? templateSuffix { get; set; } + /// + ///The transaction history of the gift card. + /// + public GiftCardTransactionConnection? transactions { get; set; } + /// + ///The date and time at which the gift card was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple GiftCards. + /// + public class GiftCardConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in GiftCardEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `giftCardCreate` mutation. + /// + public class GiftCardCreatePayload : GraphQLObject + { + /// + ///The created gift card. + /// + public GiftCard? giftCard { get; set; } + /// + ///The created gift card's code. + /// + public string? giftCardCode { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `giftCardCredit` mutation. + /// + public class GiftCardCreditPayload : GraphQLObject + { + /// + ///The gift card credit transaction that was created. + /// + public GiftCardCreditTransaction? giftCardCreditTransaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A credit transaction which increases the gift card balance. + /// + public class GiftCardCreditTransaction : GraphQLObject, IGiftCardTransaction, IHasMetafields, INode + { + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The gift card that the transaction belongs to. + /// + public GiftCard? giftCard { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///A note about the transaction. + /// + public string? note { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time when the transaction was processed. + /// + public DateTime? processedAt { get; set; } + } + + /// + ///Return type for `giftCardDeactivate` mutation. + /// + public class GiftCardDeactivatePayload : GraphQLObject + { + /// + ///The deactivated gift card. + /// + public GiftCard? giftCard { 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 `GiftCardDeactivate`. + /// + public class GiftCardDeactivateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `GiftCardDeactivateUserError`. + /// + public enum GiftCardDeactivateUserErrorCode + { + /// + ///The gift card could not be found. + /// + GIFT_CARD_NOT_FOUND, + } + + /// + ///Return type for `giftCardDebit` mutation. + /// + public class GiftCardDebitPayload : GraphQLObject + { + /// + ///The gift card debit transaction that was created. + /// + public GiftCardDebitTransaction? giftCardDebitTransaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A debit transaction which decreases the gift card balance. + /// + public class GiftCardDebitTransaction : GraphQLObject, IGiftCardTransaction, IHasMetafields, INode + { + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The gift card that the transaction belongs to. + /// + public GiftCard? giftCard { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///A note about the transaction. + /// + public string? note { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time when the transaction was processed. + /// + public DateTime? processedAt { get; set; } + } + + /// + ///An auto-generated type which holds one GiftCard and a cursor during pagination. + /// + public class GiftCardEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of GiftCardEdge. + /// + public GiftCard? node { get; set; } + } + + /// + ///Possible error codes that can be returned by `GiftCardUserError`. + /// + public enum GiftCardErrorCode + { + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///Missing a required argument. + /// + MISSING_ARGUMENT, + /// + ///The input value should be greater than the minimum allowed value. + /// + GREATER_THAN, + /// + ///The customer could not be found. + /// + CUSTOMER_NOT_FOUND, + /// + ///The recipient could not be found. + /// + RECIPIENT_NOT_FOUND, + } + + /// + ///Represents a recipient who will receive the issued gift card. + /// + public class GiftCardRecipient : GraphQLObject + { + /// + ///The message sent with the gift card. + /// + public string? message { get; set; } + /// + ///The preferred name of the recipient who will receive the gift card. + /// + public string? preferredName { get; set; } + /// + ///The recipient who will receive the gift card. + /// + public Customer? recipient { get; set; } + /// + ///The scheduled datetime on which the gift card will be sent to the recipient. The gift card will be sent within an hour of the specified datetime. + /// + public DateTime? sendNotificationAt { get; set; } + } + + /// + ///A sale associated with a gift card. + /// + public class GiftCardSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line item for the associated sale. + /// + public LineItem? lineItem { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///Return type for `giftCardSendNotificationToCustomer` mutation. + /// + public class GiftCardSendNotificationToCustomerPayload : GraphQLObject + { + /// + ///The gift card that was sent. + /// + public GiftCard? giftCard { 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 `GiftCardSendNotificationToCustomer`. + /// + public class GiftCardSendNotificationToCustomerUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `GiftCardSendNotificationToCustomerUserError`. + /// + public enum GiftCardSendNotificationToCustomerUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The customer could not be found. + /// + CUSTOMER_NOT_FOUND, + /// + ///The gift card could not be found. + /// + GIFT_CARD_NOT_FOUND, + } + + /// + ///Return type for `giftCardSendNotificationToRecipient` mutation. + /// + public class GiftCardSendNotificationToRecipientPayload : GraphQLObject + { + /// + ///The gift card that was sent. + /// + public GiftCard? giftCard { 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 `GiftCardSendNotificationToRecipient`. + /// + public class GiftCardSendNotificationToRecipientUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `GiftCardSendNotificationToRecipientUserError`. + /// + public enum GiftCardSendNotificationToRecipientUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The recipient could not be found. + /// + RECIPIENT_NOT_FOUND, + /// + ///The gift card could not be found. + /// + GIFT_CARD_NOT_FOUND, + } + + /// + ///The set of valid sort keys for the GiftCard query. + /// + public enum GiftCardSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `customer_name` value. + /// + CUSTOMER_NAME, + /// + ///Sort by the `code` value. + /// + CODE, + /// + ///Sort by the `balance` value. + /// + BALANCE, + /// + ///Sort by the `amount_spent` value. + /// + AMOUNT_SPENT, + /// + ///Sort by the `initial_value` value. + /// + INITIAL_VALUE, + /// + ///Sort by the `disabled_at` value. + /// + DISABLED_AT, + /// + ///Sort by the `expires_on` value. + /// + EXPIRES_ON, + /// + ///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, + } + + /// + ///Represents information about the metafields associated to the specified resource. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(GiftCardCreditTransaction), typeDiscriminator: "GiftCardCreditTransaction")] + [JsonDerivedType(typeof(GiftCardDebitTransaction), typeDiscriminator: "GiftCardDebitTransaction")] + public interface IGiftCardTransaction : IGraphQLObject, IHasMetafields + { + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; } + /// + ///The gift card that the transaction belongs to. + /// + public GiftCard? giftCard { get; } + /// + ///The unique ID for the transaction. + /// + public string? id { get; } + /// + ///A note about the transaction. + /// + public string? note { get; } + /// + ///The date and time when the transaction was processed. + /// + public DateTime? processedAt { get; } + } + + /// + ///An auto-generated type for paginating through multiple GiftCardTransactions. + /// + public class GiftCardTransactionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in GiftCardTransactionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one GiftCardTransaction and a cursor during pagination. + /// + public class GiftCardTransactionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of GiftCardTransactionEdge. + /// + public IGiftCardTransaction? node { get; set; } + } + + /// + ///Represents an error that happens during the execution of a gift card transaction mutation. + /// + public class GiftCardTransactionUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `GiftCardTransactionUserError`. + /// + public enum GiftCardTransactionUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///The gift card's value exceeds the allowed limits. + /// + GIFT_CARD_LIMIT_EXCEEDED, + /// + ///The gift card could not be found. + /// + GIFT_CARD_NOT_FOUND, + /// + ///A positive amount must be used. + /// + NEGATIVE_OR_ZERO_AMOUNT, + /// + ///The gift card does not have sufficient funds to satisfy the request. + /// + INSUFFICIENT_FUNDS, + /// + ///The currency provided does not match the currency of the gift card. + /// + MISMATCHING_CURRENCY, + } + + /// + ///Return type for `giftCardUpdate` mutation. + /// + public class GiftCardUpdatePayload : GraphQLObject + { + /// + ///The updated gift card. + /// + public GiftCard? giftCard { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error that happens during the execution of a gift card mutation. + /// + public class GiftCardUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Represents a summary of the current version of data in a resource. + /// + ///The `compare_digest` field can be used as input for mutations that implement a compare-and-swap mechanism. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Metafield), typeDiscriminator: "Metafield")] + public interface IHasCompareDigest : IGraphQLObject + { + public Metafield? AsMetafield() => this as Metafield; + /// + ///The data stored in the resource, represented as a digest. + /// + public string? compareDigest { get; } + } + + /// + ///Represents an object that has a list of events. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Comment), typeDiscriminator: "Comment")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(DiscountAutomaticBxgy), typeDiscriminator: "DiscountAutomaticBxgy")] + [JsonDerivedType(typeof(DiscountAutomaticNode), typeDiscriminator: "DiscountAutomaticNode")] + [JsonDerivedType(typeof(DiscountCodeNode), typeDiscriminator: "DiscountCodeNode")] + [JsonDerivedType(typeof(DiscountNode), typeDiscriminator: "DiscountNode")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(PriceRule), typeDiscriminator: "PriceRule")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + public interface IHasEvents : IGraphQLObject + { + public Article? AsArticle() => this as Article; + public Blog? AsBlog() => this as Blog; + public Collection? AsCollection() => this as Collection; + public Comment? AsComment() => this as Comment; + public Company? AsCompany() => this as Company; + public CompanyLocation? AsCompanyLocation() => this as CompanyLocation; + public Customer? AsCustomer() => this as Customer; + public DiscountAutomaticBxgy? AsDiscountAutomaticBxgy() => this as DiscountAutomaticBxgy; + public DiscountAutomaticNode? AsDiscountAutomaticNode() => this as DiscountAutomaticNode; + public DiscountCodeNode? AsDiscountCodeNode() => this as DiscountCodeNode; + public DiscountNode? AsDiscountNode() => this as DiscountNode; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Order? AsOrder() => this as Order; + public Page? AsPage() => this as Page; + public PriceRule? AsPriceRule() => this as PriceRule; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; } + } + + /// + ///Localization extensions associated with the specified resource. For example, the tax id for government invoice. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + public interface IHasLocalizationExtensions : IGraphQLObject + { + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Order? AsOrder() => this as Order; + /// + ///List of localization extensions for the resource. + /// + public LocalizationExtensionConnection? localizationExtensions { get; } + } + + /// + ///Resources that metafield definitions can be applied to. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [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")] + [JsonDerivedType(typeof(DiscountCodeNode), typeDiscriminator: "DiscountCodeNode")] + [JsonDerivedType(typeof(DiscountNode), typeDiscriminator: "DiscountNode")] + [JsonDerivedType(typeof(Location), typeDiscriminator: "Location")] + [JsonDerivedType(typeof(Market), typeDiscriminator: "Market")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(PaymentCustomization), typeDiscriminator: "PaymentCustomization")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + [JsonDerivedType(typeof(SellingPlan), typeDiscriminator: "SellingPlan")] + [JsonDerivedType(typeof(Validation), typeDiscriminator: "Validation")] + public interface IHasMetafieldDefinitions : IGraphQLObject + { + public Article? AsArticle() => this as Article; + public Blog? AsBlog() => this as Blog; + 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; + public DiscountCodeNode? AsDiscountCodeNode() => this as DiscountCodeNode; + public DiscountNode? AsDiscountNode() => this as DiscountNode; + public Location? AsLocation() => this as Location; + public Market? AsMarket() => this as Market; + public Order? AsOrder() => this as Order; + public Page? AsPage() => this as Page; + public PaymentCustomization? AsPaymentCustomization() => this as PaymentCustomization; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + public SellingPlan? AsSellingPlan() => this as SellingPlan; + public Validation? AsValidation() => this as Validation; + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; } + } + + /// + ///Represents information about the metafields associated to the specified resource. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppInstallation), typeDiscriminator: "AppInstallation")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [JsonDerivedType(typeof(CartTransform), typeDiscriminator: "CartTransform")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(CustomerSegmentMember), typeDiscriminator: "CustomerSegmentMember")] + [JsonDerivedType(typeof(DeliveryCustomization), typeDiscriminator: "DeliveryCustomization")] + [JsonDerivedType(typeof(DiscountAutomaticNode), typeDiscriminator: "DiscountAutomaticNode")] + [JsonDerivedType(typeof(DiscountCodeNode), typeDiscriminator: "DiscountCodeNode")] + [JsonDerivedType(typeof(DiscountNode), typeDiscriminator: "DiscountNode")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(FulfillmentConstraintRule), typeDiscriminator: "FulfillmentConstraintRule")] + [JsonDerivedType(typeof(GiftCardCreditTransaction), typeDiscriminator: "GiftCardCreditTransaction")] + [JsonDerivedType(typeof(GiftCardDebitTransaction), typeDiscriminator: "GiftCardDebitTransaction")] + [JsonDerivedType(typeof(Image), typeDiscriminator: "Image")] + [JsonDerivedType(typeof(Location), typeDiscriminator: "Location")] + [JsonDerivedType(typeof(Market), typeDiscriminator: "Market")] + [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(PaymentCustomization), typeDiscriminator: "PaymentCustomization")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + [JsonDerivedType(typeof(SellingPlan), typeDiscriminator: "SellingPlan")] + [JsonDerivedType(typeof(Shop), typeDiscriminator: "Shop")] + [JsonDerivedType(typeof(Validation), typeDiscriminator: "Validation")] + public interface IHasMetafields : IGraphQLObject + { + public AppInstallation? AsAppInstallation() => this as AppInstallation; + public Article? AsArticle() => this as Article; + public Blog? AsBlog() => this as Blog; + public CartTransform? AsCartTransform() => this as CartTransform; + 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 CustomerSegmentMember? AsCustomerSegmentMember() => this as CustomerSegmentMember; + public DeliveryCustomization? AsDeliveryCustomization() => this as DeliveryCustomization; + public DiscountAutomaticNode? AsDiscountAutomaticNode() => this as DiscountAutomaticNode; + public DiscountCodeNode? AsDiscountCodeNode() => this as DiscountCodeNode; + public DiscountNode? AsDiscountNode() => this as DiscountNode; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public FulfillmentConstraintRule? AsFulfillmentConstraintRule() => this as FulfillmentConstraintRule; + public GiftCardCreditTransaction? AsGiftCardCreditTransaction() => this as GiftCardCreditTransaction; + public GiftCardDebitTransaction? AsGiftCardDebitTransaction() => this as GiftCardDebitTransaction; + public Image? AsImage() => this as Image; + public Location? AsLocation() => this as Location; + public Market? AsMarket() => this as Market; + public MediaImage? AsMediaImage() => this as MediaImage; + public Order? AsOrder() => this as Order; + public Page? AsPage() => this as Page; + public PaymentCustomization? AsPaymentCustomization() => this as PaymentCustomization; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + public SellingPlan? AsSellingPlan() => this as SellingPlan; + public Shop? AsShop() => this as Shop; + public Validation? AsValidation() => this as Validation; + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + } + + /// + ///Published translations associated with the resource. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Link), typeDiscriminator: "Link")] + [JsonDerivedType(typeof(Menu), typeDiscriminator: "Menu")] + [JsonDerivedType(typeof(OnlineStoreTheme), typeDiscriminator: "OnlineStoreTheme")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [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")] + [JsonDerivedType(typeof(Shop), typeDiscriminator: "Shop")] + [JsonDerivedType(typeof(ShopPolicy), typeDiscriminator: "ShopPolicy")] + public interface IHasPublishedTranslations : IGraphQLObject + { + public Article? AsArticle() => this as Article; + public Blog? AsBlog() => this as Blog; + public Collection? AsCollection() => this as Collection; + public Link? AsLink() => this as Link; + public Menu? AsMenu() => this as Menu; + public OnlineStoreTheme? AsOnlineStoreTheme() => this as OnlineStoreTheme; + public Page? AsPage() => this as Page; + 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; + public Shop? AsShop() => this as Shop; + public ShopPolicy? AsShopPolicy() => this as ShopPolicy; + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; } + } + + /// + ///Represents information about the store credit accounts associated to the specified owner. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + public interface IHasStoreCreditAccounts : IGraphQLObject + { + public Customer? AsCustomer() => this as Customer; + /// + ///Returns a list of store credit accounts that belong to the owner resource. + /// + public StoreCreditAccountConnection? storeCreditAccounts { get; } + } + + /// + ///Represents an image resource. + /// + public class Image : GraphQLObject, IHasMetafields + { + /// + ///A word or phrase to share the nature or contents of an image. + /// + public string? altText { get; set; } + /// + ///The original height of the image in pixels. Returns `null` if the image isn't hosted by Shopify. + /// + public int? height { get; set; } + /// + ///A unique ID for the image. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///The location of the original image as a URL. + /// + ///If there are any existing transformations in the original source URL, they will remain and not be stripped. + /// + [Obsolete("Use `url` instead.")] + public string? originalSrc { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 location of the image as a URL. + /// + [Obsolete("Use `url` instead.")] + public string? src { get; set; } + + /// + ///The location of the transformed image as a URL. + /// + ///All transformation arguments are considered "best-effort". If they can be applied to an image, they will be. + ///Otherwise any transformations which an image type doesn't support will be ignored. + /// + [Obsolete("Use `url(transform:)` instead")] + public string? transformedSrc { get; set; } + /// + ///The location of the image as a URL. + /// + ///If no transform options are specified, then the original image will be preserved including any pre-applied transforms. + /// + ///All transformation options are considered "best-effort". Any transformation that the original image type doesn't support will be ignored. + /// + ///If you need multiple variations of the same image, then you can use [GraphQL aliases](https://graphql.org/learn/queries/#aliases). + /// + public string? url { get; set; } + /// + ///The original width of the image in pixels. Returns `null` if the image isn't hosted by Shopify. + /// + public int? width { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Images. + /// + public class ImageConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ImageEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///List of supported image content types. + /// + public enum ImageContentType + { + /// + ///A PNG image. + /// + PNG, + /// + ///A JPG image. + /// + JPG, + /// + ///A WEBP image. + /// + WEBP, + } + + /// + ///An auto-generated type which holds one Image and a cursor during pagination. + /// + public class ImageEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ImageEdge. + /// + public Image? node { get; set; } + } + + /// + ///A parameter to upload an image. + /// + ///Deprecated in favor of + ///[StagedUploadParameter](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadParameter), + ///which is used in + ///[StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget) + ///and returned by the + ///[stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate). + /// + public class ImageUploadParameter : GraphQLObject + { + /// + ///The parameter name. + /// + public string? name { get; set; } + /// + ///The parameter value. + /// + public string? value { get; set; } + } + + /// + ///Return type for `inventoryActivate` mutation. + /// + public class InventoryActivatePayload : GraphQLObject + { + /// + ///The inventory level that was activated. + /// + public InventoryLevel? inventoryLevel { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `inventoryAdjustQuantities` mutation. + /// + public class InventoryAdjustQuantitiesPayload : GraphQLObject + { + /// + ///The group of changes made by the operation. + /// + public InventoryAdjustmentGroup? inventoryAdjustmentGroup { 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 `InventoryAdjustQuantities`. + /// + public class InventoryAdjustQuantitiesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventoryAdjustQuantitiesUserError`. + /// + public enum InventoryAdjustQuantitiesUserErrorCode + { + /// + ///Internal (gid://shopify/) ledger documents are not allowed to be adjusted via API. + /// + INTERNAL_LEDGER_DOCUMENT, + /// + ///A ledger document URI is not allowed when adjusting available. + /// + INVALID_AVAILABLE_DOCUMENT, + /// + ///The specified inventory item could not be found. + /// + INVALID_INVENTORY_ITEM, + /// + ///The specified ledger document is invalid. + /// + INVALID_LEDGER_DOCUMENT, + /// + ///The specified location could not be found. + /// + INVALID_LOCATION, + /// + ///A ledger document URI is required except when adjusting available. + /// + INVALID_QUANTITY_DOCUMENT, + /// + ///The specified quantity name is invalid. + /// + INVALID_QUANTITY_NAME, + /// + ///The quantity can't be lower than -2,000,000,000. + /// + INVALID_QUANTITY_TOO_LOW, + /// + ///The quantity can't be higher than 2,000,000,000. + /// + INVALID_QUANTITY_TOO_HIGH, + /// + ///The specified reason is invalid. + /// + INVALID_REASON, + /// + ///The specified reference document is invalid. + /// + INVALID_REFERENCE_DOCUMENT, + /// + ///The quantities couldn't be adjusted. Try again. + /// + ADJUST_QUANTITIES_FAILED, + /// + ///All changes must have the same ledger document URI or, in the case of adjusting available, no ledger document URI. + /// + MAX_ONE_LEDGER_DOCUMENT, + /// + ///The inventory item is not stocked at the location. + /// + ITEM_NOT_STOCKED_AT_LOCATION, + /// + ///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, + } + + /// + ///Represents a group of adjustments made as part of the same operation. + /// + public class InventoryAdjustmentGroup : GraphQLObject, INode + { + /// + ///The app that triggered the inventory event, if one exists. + /// + public App? app { get; set; } + /// + ///The set of inventory quantity changes that occurred in the inventory event. + /// + public IEnumerable? changes { get; set; } + /// + ///The date and time the inventory adjustment group was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The reason for the group of adjustments. + /// + public string? reason { get; set; } + /// + ///A freeform URI that represents why the inventory change happened. This can be the entity adjusting inventory + ///quantities or the Shopify resource that's associated with the inventory adjustment. For example, a unit in a + ///draft order might have been previously reserved, and a merchant later creates an order from the draft order. + ///In this case, the `referenceDocumentUri` for the inventory adjustment is a URI referencing the order ID. + /// + public string? referenceDocumentUri { get; set; } + /// + ///The staff member associated with the inventory event. + /// + public StaffMember? staffMember { get; set; } + } + + /// + ///Return type for `inventoryBulkToggleActivation` mutation. + /// + public class InventoryBulkToggleActivationPayload : GraphQLObject + { + /// + ///The inventory item that was updated. + /// + public InventoryItem? inventoryItem { get; set; } + /// + ///The activated inventory levels. + /// + public IEnumerable? inventoryLevels { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurred while setting the activation status of an inventory item. + /// + public class InventoryBulkToggleActivationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventoryBulkToggleActivationUserError`. + /// + public enum InventoryBulkToggleActivationUserErrorCode + { + /// + ///An error occurred while setting the activation status. + /// + GENERIC_ERROR, + /// + ///Cannot unstock an inventory item from the only location at which it is stocked. + /// + CANNOT_DEACTIVATE_FROM_ONLY_LOCATION, + /// + ///Cannot unstock this inventory item from this location because it has committed and incoming quantities. + /// + [Obsolete("This error code is deprecated. Both INCOMING_INVENTORY_AT_LOCATION and COMMITTED_INVENTORY_AT_LOCATION codes will be returned as individual errors instead.")] + COMMITTED_AND_INCOMING_INVENTORY_AT_LOCATION, + /// + ///Cannot unstock this inventory item from this location because it has incoming quantities. + /// + INCOMING_INVENTORY_AT_LOCATION, + /// + ///Cannot unstock this inventory item from this location because it has committed quantities. + /// + COMMITTED_INVENTORY_AT_LOCATION, + /// + ///Cannot unstock this inventory item from this location because it has unavailable quantities. + /// + RESERVED_INVENTORY_AT_LOCATION, + /// + ///Failed to unstock this inventory item from this location. + /// + FAILED_TO_UNSTOCK_FROM_LOCATION, + /// + ///Cannot stock this inventory item at this location because it is managed by a third-party fulfillment service. + /// + INVENTORY_MANAGED_BY_3RD_PARTY, + /// + ///Cannot stock this inventory item at this location because it is managed by Shopify. + /// + INVENTORY_MANAGED_BY_SHOPIFY, + /// + ///Failed to stock this inventory item at this location. + /// + FAILED_TO_STOCK_AT_LOCATION, + /// + ///Cannot stock this inventory item at this location because the variant is missing a SKU. + /// + MISSING_SKU, + /// + ///The location was not found. + /// + LOCATION_NOT_FOUND, + /// + ///The inventory item was not found. + /// + INVENTORY_ITEM_NOT_FOUND, + } + + /// + ///Represents a change in an inventory quantity of an inventory item at a location. + /// + public class InventoryChange : GraphQLObject + { + /// + ///The amount by which the inventory quantity was changed. + /// + public int? delta { get; set; } + /// + ///The inventory item associated with this inventory change. + /// + public InventoryItem? item { get; set; } + /// + ///A URI that represents what the inventory quantity change was applied to. + /// + public string? ledgerDocumentUri { get; set; } + /// + ///The location associated with this inventory change. + /// + public Location? location { get; set; } + /// + ///The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states) + ///of the inventory quantity that was changed. + /// + public string? name { get; set; } + /// + ///The quantity of named inventory after the change. + /// + public int? quantityAfterChange { get; set; } + } + + /// + ///Return type for `inventoryDeactivate` mutation. + /// + public class InventoryDeactivatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents the goods available to be shipped to a customer. + ///It holds essential information about the goods, including SKU and whether it is tracked. + ///Learn [more about the relationships between inventory objects](https://shopify.dev/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states#inventory-object-relationships). + /// + public class InventoryItem : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The ISO 3166-1 alpha-2 country code of where the item originated from. + /// + public string? countryCodeOfOrigin { get; set; } + /// + ///A list of country specific harmonized system codes. + /// + public CountryHarmonizedSystemCodeConnection? countryHarmonizedSystemCodes { get; set; } + /// + ///The date and time when the inventory item was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The number of inventory items that share the same SKU with this item. + /// + public int? duplicateSkuCount { get; set; } + /// + ///The harmonized system code of the item. + /// + public string? harmonizedSystemCode { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The URL that points to the inventory history for the item. + /// + public string? inventoryHistoryUrl { get; set; } + /// + ///The inventory item's quantities at the specified location. + /// + public InventoryLevel? inventoryLevel { get; set; } + /// + ///A list of the inventory item's quantities for each location that the inventory item can be stocked at. + /// + public InventoryLevelConnection? inventoryLevels { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The number of locations where this inventory item is stocked. + /// + 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. + /// + public string? provinceCodeOfOrigin { get; set; } + /// + ///Whether the inventory item requires shipping. + /// + public bool? requiresShipping { get; set; } + /// + ///Inventory item SKU. Case-sensitive string. + /// + public string? sku { get; set; } + /// + ///Whether inventory levels are tracked for the item. + /// + public bool? tracked { get; set; } + /// + ///Whether the value of the `tracked` field for the inventory item can be changed. + /// + public EditableProperty? trackedEditable { get; set; } + /// + ///Unit cost associated with the inventory item. Note: the user must have "View product costs" permission granted in order to access this field once product granular permissions are enabled. + /// + public MoneyV2? unitCost { get; set; } + /// + ///The date and time when the inventory item was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The variant that owns this inventory item. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple InventoryItems. + /// + public class InventoryItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in InventoryItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one InventoryItem and a cursor during pagination. + /// + public class InventoryItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of InventoryItemEdge. + /// + public InventoryItem? node { get; set; } + } + + /// + ///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. + /// + public class InventoryItemUpdatePayload : GraphQLObject + { + /// + ///The inventory item that was updated. + /// + public InventoryItem? inventoryItem { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The quantities of an inventory item that are related to a specific location. + ///Learn [more about the relationships between inventory objects](https://shopify.dev/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states#inventory-object-relationships). + /// + public class InventoryLevel : GraphQLObject, INode + { + /// + ///Whether the inventory items associated with the inventory level can be deactivated. + /// + public bool? canDeactivate { get; set; } + /// + ///The date and time when the inventory level was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Describes either the impact of deactivating the inventory level, or why the inventory level can't be deactivated. + /// + public string? deactivationAlert { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Inventory item associated with the inventory level. + /// + public InventoryItem? item { get; set; } + /// + ///The location associated with the inventory level. + /// + public Location? location { get; set; } + /// + ///Quantities for the requested names. + /// + public IEnumerable? quantities { get; set; } + /// + ///Scheduled changes for the requested quantity names. + /// + public InventoryScheduledChangeConnection? scheduledChanges { get; set; } + /// + ///The date and time when the inventory level was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple InventoryLevels. + /// + public class InventoryLevelConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in InventoryLevelEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one InventoryLevel and a cursor during pagination. + /// + public class InventoryLevelEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of InventoryLevelEdge. + /// + public InventoryLevel? node { get; set; } + } + + /// + ///Return type for `inventoryMoveQuantities` mutation. + /// + public class InventoryMoveQuantitiesPayload : GraphQLObject + { + /// + ///The group of changes made by the operation. + /// + public InventoryAdjustmentGroup? inventoryAdjustmentGroup { 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 `InventoryMoveQuantities`. + /// + public class InventoryMoveQuantitiesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventoryMoveQuantitiesUserError`. + /// + public enum InventoryMoveQuantitiesUserErrorCode + { + /// + ///Internal (gid://shopify/) ledger documents are not allowed to be adjusted via API. + /// + INTERNAL_LEDGER_DOCUMENT, + /// + ///A ledger document URI is not allowed when adjusting available. + /// + INVALID_AVAILABLE_DOCUMENT, + /// + ///The specified inventory item could not be found. + /// + INVALID_INVENTORY_ITEM, + /// + ///The specified ledger document is invalid. + /// + INVALID_LEDGER_DOCUMENT, + /// + ///The specified location could not be found. + /// + INVALID_LOCATION, + /// + ///A ledger document URI is required except when adjusting available. + /// + INVALID_QUANTITY_DOCUMENT, + /// + ///The specified quantity name is invalid. + /// + INVALID_QUANTITY_NAME, + /// + ///The quantity can't be negative. + /// + INVALID_QUANTITY_NEGATIVE, + /// + ///The quantity can't be higher than 2,000,000,000. + /// + INVALID_QUANTITY_TOO_HIGH, + /// + ///The specified reason is invalid. + /// + INVALID_REASON, + /// + ///The specified reference document is invalid. + /// + INVALID_REFERENCE_DOCUMENT, + /// + ///The quantities couldn't be moved. Try again. + /// + MOVE_QUANTITIES_FAILED, + /// + ///The quantities can't be moved between different locations. + /// + DIFFERENT_LOCATIONS, + /// + ///The quantity names for each change can't be the same. + /// + SAME_QUANTITY_NAME, + /// + ///Only a maximum of 2 ledger document URIs across all changes is allowed. + /// + MAXIMUM_LEDGER_DOCUMENT_URIS, + /// + ///The inventory item is not stocked at the location. + /// + ITEM_NOT_STOCKED_AT_LOCATION, + /// + ///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, + } + + /// + ///General inventory properties for the shop. + /// + public class InventoryProperties : GraphQLObject + { + /// + ///All the quantity names. + /// + public IEnumerable? quantityNames { get; set; } + } + + /// + ///Represents a quantity of an inventory item at a specific location, for a specific name. + /// + public class InventoryQuantity : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states) + ///that identifies the inventory quantity. + /// + public string? name { get; set; } + /// + ///The quantity for the quantity name. + /// + public int? quantity { get; set; } + /// + ///When the quantity was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Details about an individual quantity name. + /// + public class InventoryQuantityName : GraphQLObject + { + /// + ///List of quantity names that this quantity name belongs to. + /// + public IEnumerable? belongsTo { get; set; } + /// + ///List of quantity names that comprise this quantity name. + /// + public IEnumerable? comprises { get; set; } + /// + ///The display name for quantity names translated into applicable language. + /// + public string? displayName { get; set; } + /// + ///Whether the quantity name has been used by the merchant. + /// + public bool? isInUse { get; set; } + /// + ///The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states) of + ///the inventory quantity. Used by + ///[inventory queries and mutations](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#graphql-queries-and-mutations). + /// + public string? name { get; set; } + } + + /// + ///Returns the scheduled changes to inventory states related to the ledger document. + /// + public class InventoryScheduledChange : GraphQLObject + { + /// + ///The date and time that the scheduled change is expected to happen. + /// + public DateTime? expectedAt { get; set; } + /// + ///The quantity + ///[name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#move-inventory-quantities-between-states) + ///to transition from. + /// + public string? fromName { get; set; } + /// + ///The quantities of an inventory item that are related to a specific location. + /// + public InventoryLevel? inventoryLevel { get; set; } + /// + ///A freeform URI that represents what changed the inventory quantities. + /// + public string? ledgerDocumentUri { get; set; } + /// + ///The quantity of the scheduled change associated with the ledger document in the `fromName` state. + /// + public int? quantity { get; set; } + /// + ///The quantity + ///[name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#move-inventory-quantities-between-states) + ///to transition to. + /// + public string? toName { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple InventoryScheduledChanges. + /// + public class InventoryScheduledChangeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in InventoryScheduledChangeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one InventoryScheduledChange and a cursor during pagination. + /// + public class InventoryScheduledChangeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of InventoryScheduledChangeEdge. + /// + public InventoryScheduledChange? node { get; set; } + } + + /// + ///Return type for `inventorySetOnHandQuantities` mutation. + /// + public class InventorySetOnHandQuantitiesPayload : GraphQLObject + { + /// + ///The group of changes made by the operation. + /// + public InventoryAdjustmentGroup? inventoryAdjustmentGroup { 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 `InventorySetOnHandQuantities`. + /// + public class InventorySetOnHandQuantitiesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventorySetOnHandQuantitiesUserError`. + /// + public enum InventorySetOnHandQuantitiesUserErrorCode + { + /// + ///The specified inventory item could not be found. + /// + INVALID_INVENTORY_ITEM, + /// + ///The specified location could not be found. + /// + INVALID_LOCATION, + /// + ///The quantity can't be negative. + /// + INVALID_QUANTITY_NEGATIVE, + /// + ///The specified reason is invalid. + /// + INVALID_REASON, + /// + ///The specified reference document is invalid. + /// + INVALID_REFERENCE_DOCUMENT, + /// + ///The on-hand quantities couldn't be set. Try again. + /// + SET_ON_HAND_QUANTITIES_FAILED, + /// + ///The inventory item is not stocked at the location. + /// + ITEM_NOT_STOCKED_AT_LOCATION, + /// + ///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, + /// + ///The total quantity can't be higher than 1,000,000,000. + /// + INVALID_QUANTITY_TOO_HIGH, + } + + /// + ///Return type for `inventorySetQuantities` mutation. + /// + public class InventorySetQuantitiesPayload : GraphQLObject + { + /// + ///The group of changes made by the operation. + /// + public InventoryAdjustmentGroup? inventoryAdjustmentGroup { 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 `InventorySetQuantities`. + /// + public class InventorySetQuantitiesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventorySetQuantitiesUserError`. + /// + public enum InventorySetQuantitiesUserErrorCode + { + /// + ///The specified inventory item could not be found. + /// + INVALID_INVENTORY_ITEM, + /// + ///The specified location could not be found. + /// + INVALID_LOCATION, + /// + ///The quantity can't be negative. + /// + INVALID_QUANTITY_NEGATIVE, + /// + ///The specified reason is invalid. + /// + INVALID_REASON, + /// + ///The specified reference document is invalid. + /// + INVALID_REFERENCE_DOCUMENT, + /// + ///The specified inventory item is not stocked at the location. + /// + ITEM_NOT_STOCKED_AT_LOCATION, + /// + ///The total quantity can't be higher than 1,000,000,000. + /// + INVALID_QUANTITY_TOO_HIGH, + /// + ///The total quantity can't be lower than -1,000,000,000. + /// + INVALID_QUANTITY_TOO_LOW, + /// + ///The compareQuantity argument must be given to each quantity or ignored using ignoreCompareQuantity. + /// + COMPARE_QUANTITY_REQUIRED, + /// + ///The compareQuantity value does not match persisted value. + /// + COMPARE_QUANTITY_STALE, + /// + ///The quantity name must be either 'available' or 'on_hand'. + /// + INVALID_NAME, + /// + ///The combination of inventoryItemId and locationId must be unique. + /// + NO_DUPLICATE_INVENTORY_ITEM_ID_GROUP_ID_PAIR, + } + + /// + ///Return type for `inventorySetScheduledChanges` mutation. + /// + public class InventorySetScheduledChangesPayload : GraphQLObject + { + /// + ///The scheduled changes that were created. + /// + public IEnumerable? scheduledChanges { 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 `InventorySetScheduledChanges`. + /// + public class InventorySetScheduledChangesUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `InventorySetScheduledChangesUserError`. + /// + public enum InventorySetScheduledChangesUserErrorCode + { + /// + ///There was an error updating the scheduled changes. + /// + ERROR_UPDATING_SCHEDULED, + /// + ///The from_name and to_name can't be the same. + /// + SAME_FROM_TO_NAMES, + /// + ///The specified fromName is invalid. + /// + INVALID_FROM_NAME, + /// + ///The specified toName is invalid. + /// + INVALID_TO_NAME, + /// + ///The item can only have one scheduled change for quantity name as the toName. + /// + DUPLICATE_TO_NAME, + /// + ///The specified reason is invalid. + /// + INVALID_REASON, + /// + ///The item can only have one scheduled change for quantity name as the fromName. + /// + DUPLICATE_FROM_NAME, + /// + ///The location couldn't be found. + /// + LOCATION_NOT_FOUND, + /// + ///The inventory item was not found at the location specified. + /// + INVENTORY_STATE_NOT_FOUND, + /// + ///At least 1 item must be provided. + /// + ITEMS_EMPTY, + /// + ///The inventory item was not found. + /// + INVENTORY_ITEM_NOT_FOUND, + /// + ///The specified field is invalid. + /// + INCLUSION, + /// + ///The ledger document URI is invalid. + /// + LEDGER_DOCUMENT_INVALID, + } + + /// + ///A job corresponds to some long running task that the client should poll for status. + /// + public class Job : GraphQLObject + { + /// + ///This indicates if the job is still queued or has been run. + /// + public bool? done { get; set; } + /// + ///A globally-unique ID that's returned when running an asynchronous mutation. + /// + public string? id { get; set; } + /// + ///This field will only resolve once the job is done. Can be used to ask for object(s) that have been changed by the job. + /// + public QueryRoot? query { get; set; } + } + + /// + ///A job corresponds to some long running task that the client should poll for status. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CustomerSegmentMembersQuery), typeDiscriminator: "CustomerSegmentMembersQuery")] + public interface IJobResult : IGraphQLObject + { + public CustomerSegmentMembersQuery? AsCustomerSegmentMembersQuery() => this as CustomerSegmentMembersQuery; + /// + ///This indicates if the job is still queued or has been run. + /// + public bool? done { get; } + /// + ///A globally-unique ID that's returned when running an asynchronous mutation. + /// + public string? id { get; } + } + + /// + ///Language codes supported by Shopify. + /// + public enum LanguageCode + { + /// + ///Afrikaans. + /// + AF, + /// + ///Akan. + /// + AK, + /// + ///Amharic. + /// + AM, + /// + ///Arabic. + /// + AR, + /// + ///Assamese. + /// + AS, + /// + ///Azerbaijani. + /// + AZ, + /// + ///Belarusian. + /// + BE, + /// + ///Bulgarian. + /// + BG, + /// + ///Bambara. + /// + BM, + /// + ///Bangla. + /// + BN, + /// + ///Tibetan. + /// + BO, + /// + ///Breton. + /// + BR, + /// + ///Bosnian. + /// + BS, + /// + ///Catalan. + /// + CA, + /// + ///Chechen. + /// + CE, + /// + ///Central Kurdish. + /// + CKB, + /// + ///Czech. + /// + CS, + /// + ///Welsh. + /// + CY, + /// + ///Danish. + /// + DA, + /// + ///German. + /// + DE, + /// + ///Dzongkha. + /// + DZ, + /// + ///Ewe. + /// + EE, + /// + ///Greek. + /// + EL, + /// + ///English. + /// + EN, + /// + ///Esperanto. + /// + EO, + /// + ///Spanish. + /// + ES, + /// + ///Estonian. + /// + ET, + /// + ///Basque. + /// + EU, + /// + ///Persian. + /// + FA, + /// + ///Fulah. + /// + FF, + /// + ///Finnish. + /// + FI, + /// + ///Filipino. + /// + FIL, + /// + ///Faroese. + /// + FO, + /// + ///French. + /// + FR, + /// + ///Western Frisian. + /// + FY, + /// + ///Irish. + /// + GA, + /// + ///Scottish Gaelic. + /// + GD, + /// + ///Galician. + /// + GL, + /// + ///Gujarati. + /// + GU, + /// + ///Manx. + /// + GV, + /// + ///Hausa. + /// + HA, + /// + ///Hebrew. + /// + HE, + /// + ///Hindi. + /// + HI, + /// + ///Croatian. + /// + HR, + /// + ///Hungarian. + /// + HU, + /// + ///Armenian. + /// + HY, + /// + ///Interlingua. + /// + IA, + /// + ///Indonesian. + /// + ID, + /// + ///Igbo. + /// + IG, + /// + ///Sichuan Yi. + /// + II, + /// + ///Icelandic. + /// + IS, + /// + ///Italian. + /// + IT, + /// + ///Japanese. + /// + JA, + /// + ///Javanese. + /// + JV, + /// + ///Georgian. + /// + KA, + /// + ///Kikuyu. + /// + KI, + /// + ///Kazakh. + /// + KK, + /// + ///Kalaallisut. + /// + KL, + /// + ///Khmer. + /// + KM, + /// + ///Kannada. + /// + KN, + /// + ///Korean. + /// + KO, + /// + ///Kashmiri. + /// + KS, + /// + ///Kurdish. + /// + KU, + /// + ///Cornish. + /// + KW, + /// + ///Kyrgyz. + /// + KY, + /// + ///Luxembourgish. + /// + LB, + /// + ///Ganda. + /// + LG, + /// + ///Lingala. + /// + LN, + /// + ///Lao. + /// + LO, + /// + ///Lithuanian. + /// + LT, + /// + ///Luba-Katanga. + /// + LU, + /// + ///Latvian. + /// + LV, + /// + ///Malagasy. + /// + MG, + /// + ///Māori. + /// + MI, + /// + ///Macedonian. + /// + MK, + /// + ///Malayalam. + /// + ML, + /// + ///Mongolian. + /// + MN, + /// + ///Marathi. + /// + MR, + /// + ///Malay. + /// + MS, + /// + ///Maltese. + /// + MT, + /// + ///Burmese. + /// + MY, + /// + ///Norwegian (Bokmål). + /// + NB, + /// + ///North Ndebele. + /// + ND, + /// + ///Nepali. + /// + NE, + /// + ///Dutch. + /// + NL, + /// + ///Norwegian Nynorsk. + /// + NN, + /// + ///Norwegian. + /// + NO, + /// + ///Oromo. + /// + OM, + /// + ///Odia. + /// + OR, + /// + ///Ossetic. + /// + OS, + /// + ///Punjabi. + /// + PA, + /// + ///Polish. + /// + PL, + /// + ///Pashto. + /// + PS, + /// + ///Portuguese (Brazil). + /// + PT_BR, + /// + ///Portuguese (Portugal). + /// + PT_PT, + /// + ///Quechua. + /// + QU, + /// + ///Romansh. + /// + RM, + /// + ///Rundi. + /// + RN, + /// + ///Romanian. + /// + RO, + /// + ///Russian. + /// + RU, + /// + ///Kinyarwanda. + /// + RW, + /// + ///Sanskrit. + /// + SA, + /// + ///Sardinian. + /// + SC, + /// + ///Sindhi. + /// + SD, + /// + ///Northern Sami. + /// + SE, + /// + ///Sango. + /// + SG, + /// + ///Sinhala. + /// + SI, + /// + ///Slovak. + /// + SK, + /// + ///Slovenian. + /// + SL, + /// + ///Shona. + /// + SN, + /// + ///Somali. + /// + SO, + /// + ///Albanian. + /// + SQ, + /// + ///Serbian. + /// + SR, + /// + ///Sundanese. + /// + SU, + /// + ///Swedish. + /// + SV, + /// + ///Swahili. + /// + SW, + /// + ///Tamil. + /// + TA, + /// + ///Telugu. + /// + TE, + /// + ///Tajik. + /// + TG, + /// + ///Thai. + /// + TH, + /// + ///Tigrinya. + /// + TI, + /// + ///Turkmen. + /// + TK, + /// + ///Tongan. + /// + TO, + /// + ///Turkish. + /// + TR, + /// + ///Tatar. + /// + TT, + /// + ///Uyghur. + /// + UG, + /// + ///Ukrainian. + /// + UK, + /// + ///Urdu. + /// + UR, + /// + ///Uzbek. + /// + UZ, + /// + ///Vietnamese. + /// + VI, + /// + ///Wolof. + /// + WO, + /// + ///Xhosa. + /// + XH, + /// + ///Yiddish. + /// + YI, + /// + ///Yoruba. + /// + YO, + /// + ///Chinese (Simplified). + /// + ZH_CN, + /// + ///Chinese (Traditional). + /// + ZH_TW, + /// + ///Zulu. + /// + ZU, + /// + ///Chinese. + /// + ZH, + /// + ///Portuguese. + /// + PT, + /// + ///Church Slavic. + /// + CU, + /// + ///Volapük. + /// + VO, + } + + /// + ///Interoperability metadata for types that directly correspond to a REST Admin API resource. + ///For example, on the Product type, LegacyInteroperability returns metadata for the corresponding [Product object](https://shopify.dev/api/admin-graphql/latest/objects/product) in the REST Admin API. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Fulfillment), typeDiscriminator: "Fulfillment")] + [JsonDerivedType(typeof(InventoryItem), typeDiscriminator: "InventoryItem")] + [JsonDerivedType(typeof(Location), typeDiscriminator: "Location")] + [JsonDerivedType(typeof(MarketingEvent), typeDiscriminator: "MarketingEvent")] + [JsonDerivedType(typeof(Metafield), typeDiscriminator: "Metafield")] + [JsonDerivedType(typeof(MetafieldStorefrontVisibility), typeDiscriminator: "MetafieldStorefrontVisibility")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(PriceRule), typeDiscriminator: "PriceRule")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + [JsonDerivedType(typeof(Refund), typeDiscriminator: "Refund")] + [JsonDerivedType(typeof(SavedSearch), typeDiscriminator: "SavedSearch")] + [JsonDerivedType(typeof(ScriptTag), typeDiscriminator: "ScriptTag")] + [JsonDerivedType(typeof(ShopifyPaymentsDispute), typeDiscriminator: "ShopifyPaymentsDispute")] + [JsonDerivedType(typeof(ShopifyPaymentsPayout), typeDiscriminator: "ShopifyPaymentsPayout")] + [JsonDerivedType(typeof(WebhookSubscription), typeDiscriminator: "WebhookSubscription")] + public interface ILegacyInteroperability : IGraphQLObject + { + public Customer? AsCustomer() => this as Customer; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Fulfillment? AsFulfillment() => this as Fulfillment; + public InventoryItem? AsInventoryItem() => this as InventoryItem; + public Location? AsLocation() => this as Location; + public MarketingEvent? AsMarketingEvent() => this as MarketingEvent; + public Metafield? AsMetafield() => this as Metafield; + public MetafieldStorefrontVisibility? AsMetafieldStorefrontVisibility() => this as MetafieldStorefrontVisibility; + public Order? AsOrder() => this as Order; + public PriceRule? AsPriceRule() => this as PriceRule; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + public Refund? AsRefund() => this as Refund; + public SavedSearch? AsSavedSearch() => this as SavedSearch; + public ScriptTag? AsScriptTag() => this as ScriptTag; + public ShopifyPaymentsDispute? AsShopifyPaymentsDispute() => this as ShopifyPaymentsDispute; + public ShopifyPaymentsPayout? AsShopifyPaymentsPayout() => this as ShopifyPaymentsPayout; + public WebhookSubscription? AsWebhookSubscription() => this as WebhookSubscription; + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; } + } + + /// + ///Units of measurement for length. + /// + public enum LengthUnit + { + /// + ///1000 millimeters equals 1 meter. + /// + MILLIMETERS, + /// + ///100 centimeters equals 1 meter. + /// + CENTIMETERS, + /// + ///Metric system unit of length. + /// + METERS, + /// + ///12 inches equals 1 foot. + /// + INCHES, + /// + ///Imperial system unit of length. + /// + FEET, + /// + ///1 yard equals 3 feet. + /// + YARDS, + } + + /// + ///The total number of pending orders on a shop if less then a maximum, or that maximum. + ///The atMax field indicates when this maximum has been reached. + /// + public class LimitedPendingOrderCount : GraphQLObject + { + /// + ///This is set when the number of pending orders has reached the maximum. + /// + public bool? atMax { get; set; } + /// + ///The number of pendings orders on the shop. + ///Limited to a maximum of 10000. + /// + public int? count { get; set; } + } + + /// + ///Represents individual products and quantities purchased in the associated order. + /// + public class LineItem : GraphQLObject, INode + { + /// + ///Whether the line item can be restocked. + /// + [Obsolete("Use `restockable` instead.")] + public bool? canRestock { get; set; } + /// + ///The subscription contract associated with this line item. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The number of units ordered, excluding refunded and removed units. + /// + public int? currentQuantity { get; set; } + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///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 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 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 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 or code-based discounts. + /// + [Obsolete("Use `discountedUnitPriceSet` instead.")] + public decimal? discountedUnitPrice { get; set; } + /// + ///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 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 or code-based discounts. + /// + public MoneyBag? discountedUnitPriceSet { get; set; } + /// + ///The duties associated with the line item. + /// + public IEnumerable? duties { get; set; } + + /// + ///The total number of units to fulfill. + /// + [Obsolete("Use [FulfillmentOrderLineItem#remainingQuantity](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderLineItem#field-fulfillmentorderlineitem-remainingquantity) instead.")] + public int? fulfillableQuantity { get; set; } + + /// + ///The fulfillment service that stocks the product variant belonging to a line item. + /// + ///This is a third-party fulfillment service in the following scenarios: + /// + ///**Scenario 1** + ///- The product variant is stocked by a single fulfillment service. + ///- The [FulfillmentService](/api/admin-graphql/latest/objects/FulfillmentService) is a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value `manual`. + /// + ///**Scenario 2** + ///- Multiple fulfillment services stock the product variant. + ///- The last time that the line item was unfulfilled, it was awaiting fulfillment by a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value `manual`. + /// + ///If none of the above conditions are met, then the fulfillment service has the `manual` handle. + /// + [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\nAltering the locations which stock a product variant won't change the value of this field for existing orders.\n\nLearn about [managing inventory quantities and states](/apps/fulfillment/inventory-management-apps/quantities-states).")] + public FulfillmentService? fulfillmentService { get; set; } + + /// + ///The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity, + ///'partial' if fulfillableQuantity > 0, and 'unfulfilled' otherwise. + /// + [Obsolete("Use [FulfillmentOrderLineItem#remainingQuantity](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderLineItem#field-fulfillmentorderlineitem-remainingquantity) instead")] + public string? fulfillmentStatus { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image associated to the line item's variant. + /// + 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; } + /// + ///Whether the line item can be edited or not. + /// + public bool? merchantEditable { get; set; } + /// + ///The title of the product, optionally appended with the title of the variant (if applicable). + /// + public string? name { get; set; } + /// + ///The total number of units that can't be fulfilled. For example, if items have been refunded, or the item is not something that can be fulfilled, like a tip. Please see the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object for more fulfillment details. + /// + public int? nonFulfillableQuantity { get; set; } + + /// + ///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; } + /// + ///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; } + + /// + ///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; } + /// + ///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; } + /// + ///The Product object associated with this line item's variant. + /// + public Product? product { get; set; } + /// + ///The number of units ordered, including refunded and removed units. + /// + public int? quantity { get; set; } + /// + ///The number of units ordered, excluding refunded units. + /// + public int? refundableQuantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///Whether the line item can be restocked. + /// + public bool? restockable { get; set; } + /// + ///The selling plan details associated with the line item. + /// + public LineItemSellingPlan? sellingPlan { get; set; } + /// + ///The variant SKU number. + /// + public string? sku { get; set; } + /// + ///Staff attributed to the line item. + /// + public StaffMember? staffMember { get; set; } + /// + ///The taxes charged for the line item, including taxes charged for refunded and removed quantities. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether the variant is taxable. + /// + public bool? taxable { get; set; } + /// + ///The title of the product at time of order creation. + /// + public string? title { get; set; } + + /// + ///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 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; } + + /// + ///In shop currency, the total discounted price of the unfulfilled quantity for the line item. + /// + [Obsolete("Use `unfulfilledDiscountedTotalSet` instead.")] + public decimal? unfulfilledDiscountedTotal { get; set; } + /// + ///In shop and presentment currencies, the total discounted price of the unfulfilled quantity for the line item. + /// + public MoneyBag? unfulfilledDiscountedTotalSet { get; set; } + + /// + ///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; } + /// + ///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; } + /// + ///The number of units not yet fulfilled. + /// + public int? unfulfilledQuantity { get; set; } + /// + ///The Variant object associated with this line item. + /// + public ProductVariant? variant { get; set; } + /// + ///The title of the variant at time of order creation. + /// + public string? variantTitle { get; set; } + /// + ///The name of the vendor who made the variant. + /// + public string? vendor { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple LineItems. + /// + public class LineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in LineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one LineItem and a cursor during pagination. + /// + public class LineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of LineItemEdge. + /// + public LineItem? node { get; set; } + } + + /// + ///A line item group (bundle) to which a line item belongs to. + /// + public class LineItemGroup : GraphQLObject, INode + { + /// + ///A list of attributes that represent custom features or special requests. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Quantity of the line item group on the order. + /// + public int? quantity { get; set; } + /// + ///Title of the line item group. + /// + public string? title { get; set; } + /// + ///ID of the variant of the line item group. + /// + public string? variantId { get; set; } + /// + ///SKU of the variant of the line item group. + /// + public string? variantSku { get; set; } + } + + /// + ///Represents the selling plan for a line item. + /// + public class LineItemSellingPlan : GraphQLObject + { + /// + ///The name of the selling plan for display purposes. + /// + public string? name { get; set; } + /// + ///The ID of the selling plan associated with the line item. + /// + public string? sellingPlanId { get; set; } + } + + /// + ///A link to direct users to. + /// + public class Link : GraphQLObject, IHasPublishedTranslations + { + /// + ///A context-sensitive label for the link. + /// + public string? label { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The URL that the link visits. + /// + 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; } + } + + /// + ///Local payment methods payment details related to a transaction. + /// + public class LocalPaymentMethodsPaymentDetails : GraphQLObject, IBasePaymentDetails, IPaymentDetails + { + /// + ///The descriptor by the payment provider. Only available for Amazon Pay and Buy with Prime. + /// + public string? paymentDescriptor { get; set; } + /// + ///The name of payment method used by the buyer. + /// + public string? paymentMethodName { get; set; } + } + + /// + ///A locale. + /// + public class Locale : GraphQLObject + { + /// + ///Locale ISO code. + /// + public string? isoCode { get; set; } + /// + ///Human-readable locale name. + /// + public string? name { get; set; } + } + + /// + ///Specifies the type of the underlying localizable content. This can be used to conditionally render different UI elements such as input fields. + /// + public enum LocalizableContentType + { + /// + ///A JSON string. + /// + JSON_STRING, + /// + ///A JSON. + /// + JSON, + /// + ///A list of multi-line texts. + /// + LIST_MULTI_LINE_TEXT_FIELD, + /// + ///A list of single-line texts. + /// + LIST_SINGLE_LINE_TEXT_FIELD, + /// + ///A list of URLs. + /// + LIST_URL, + /// + ///A multi-line text. + /// + MULTI_LINE_TEXT_FIELD, + /// + ///A rich text. + /// + RICH_TEXT_FIELD, + /// + ///A single-line text. + /// + SINGLE_LINE_TEXT_FIELD, + /// + ///A string. + /// + STRING, + /// + ///A URL. + /// + URL, + /// + ///A link. + /// + LINK, + /// + ///A list of links. + /// + LIST_LINK, + /// + ///A file reference. + /// + FILE_REFERENCE, + /// + ///A list of file references. + /// + LIST_FILE_REFERENCE, + /// + ///An HTML. + /// + HTML, + /// + ///A URI. + /// + URI, + /// + ///An inline rich text. + /// + INLINE_RICH_TEXT, + } + + /// + ///Represents the value captured by a localization extension. Localization extensions are additional fields required by certain countries on international orders. For example, some countries require additional fields for customs information or tax identification numbers. + /// + public class LocalizationExtension : GraphQLObject + { + /// + ///Country ISO 3166-1 alpha-2 code. + /// + public string? countryCode { get; set; } + /// + ///The localized extension keys that are allowed. + /// + public string? key { get; set; } + /// + ///The purpose of this localization extension. + /// + public string? purpose { get; set; } + /// + ///The localized extension title. + /// + public string? title { get; set; } + /// + ///The value of the field. + /// + public string? value { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple LocalizationExtensions. + /// + public class LocalizationExtensionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in LocalizationExtensionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one LocalizationExtension and a cursor during pagination. + /// + public class LocalizationExtensionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of LocalizationExtensionEdge. + /// + public LocalizationExtension? node { get; set; } + } + + /// + ///The key of a localization extension. + /// + public enum LocalizationExtensionKey + { + /// + ///Extension key 'tax_credential_br' for country BR. + /// + TAX_CREDENTIAL_BR, + /// + ///Extension key 'shipping_credential_br' for country BR. + /// + SHIPPING_CREDENTIAL_BR, + /// + ///Extension key 'tax_credential_cl' for country CL. + /// + TAX_CREDENTIAL_CL, + /// + ///Extension key 'shipping_credential_cl' for country CL. + /// + SHIPPING_CREDENTIAL_CL, + /// + ///Extension key 'shipping_credential_cn' for country CN. + /// + SHIPPING_CREDENTIAL_CN, + /// + ///Extension key 'tax_credential_co' for country CO. + /// + TAX_CREDENTIAL_CO, + /// + ///Extension key 'tax_credential_type_co' for country CO. + /// + TAX_CREDENTIAL_TYPE_CO, + /// + ///Extension key 'shipping_credential_co' for country CO. + /// + SHIPPING_CREDENTIAL_CO, + /// + ///Extension key 'shipping_credential_type_co' for country CO. + /// + SHIPPING_CREDENTIAL_TYPE_CO, + /// + ///Extension key 'tax_credential_cr' for country CR. + /// + TAX_CREDENTIAL_CR, + /// + ///Extension key 'shipping_credential_cr' for country CR. + /// + SHIPPING_CREDENTIAL_CR, + /// + ///Extension key 'tax_credential_ec' for country EC. + /// + TAX_CREDENTIAL_EC, + /// + ///Extension key 'shipping_credential_ec' for country EC. + /// + SHIPPING_CREDENTIAL_EC, + /// + ///Extension key 'tax_credential_gt' for country GT. + /// + TAX_CREDENTIAL_GT, + /// + ///Extension key 'shipping_credential_gt' for country GT. + /// + SHIPPING_CREDENTIAL_GT, + /// + ///Extension key 'tax_credential_id' for country ID. + /// + TAX_CREDENTIAL_ID, + /// + ///Extension key 'shipping_credential_id' for country ID. + /// + SHIPPING_CREDENTIAL_ID, + /// + ///Extension key 'tax_credential_it' for country IT. + /// + TAX_CREDENTIAL_IT, + /// + ///Extension key 'tax_email_it' for country IT. + /// + TAX_EMAIL_IT, + /// + ///Extension key 'tax_credential_my' for country MY. + /// + TAX_CREDENTIAL_MY, + /// + ///Extension key 'shipping_credential_my' for country MY. + /// + SHIPPING_CREDENTIAL_MY, + /// + ///Extension key 'tax_credential_mx' for country MX. + /// + TAX_CREDENTIAL_MX, + /// + ///Extension key 'tax_credential_type_mx' for country MX. + /// + TAX_CREDENTIAL_TYPE_MX, + /// + ///Extension key 'tax_credential_use_mx' for country MX. + /// + TAX_CREDENTIAL_USE_MX, + /// + ///Extension key 'tax_credential_py' for country PY. + /// + TAX_CREDENTIAL_PY, + /// + ///Extension key 'shipping_credential_py' for country PY. + /// + SHIPPING_CREDENTIAL_PY, + /// + ///Extension key 'tax_credential_pe' for country PE. + /// + TAX_CREDENTIAL_PE, + /// + ///Extension key 'shipping_credential_pe' for country PE. + /// + SHIPPING_CREDENTIAL_PE, + /// + ///Extension key 'tax_credential_pt' for country PT. + /// + TAX_CREDENTIAL_PT, + /// + ///Extension key 'shipping_credential_pt' for country PT. + /// + SHIPPING_CREDENTIAL_PT, + /// + ///Extension key 'shipping_credential_kr' for country KR. + /// + SHIPPING_CREDENTIAL_KR, + /// + ///Extension key 'tax_credential_es' for country ES. + /// + TAX_CREDENTIAL_ES, + /// + ///Extension key 'shipping_credential_es' for country ES. + /// + SHIPPING_CREDENTIAL_ES, + /// + ///Extension key 'shipping_credential_tw' for country TW. + /// + SHIPPING_CREDENTIAL_TW, + /// + ///Extension key 'tax_credential_tr' for country TR. + /// + TAX_CREDENTIAL_TR, + /// + ///Extension key 'shipping_credential_tr' for country TR. + /// + SHIPPING_CREDENTIAL_TR, + } + + /// + ///The purpose of a localization extension. + /// + public enum LocalizationExtensionPurpose + { + /// + ///Extensions that are used for shipping purposes, for example, customs clearance. + /// + SHIPPING, + /// + ///Extensions that are used for taxes purposes, for example, invoicing. + /// + TAX, + } + + /// + ///Represents the location where the physical good resides. + /// + public class Location : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, ILegacyInteroperability, INode, IMetafieldReferencer + { + /// + ///Whether this location can be reactivated. + /// + public bool? activatable { get; set; } + /// + ///The address of this location. + /// + public LocationAddress? address { get; set; } + /// + ///Whether the location address has been verified. + /// + 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; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) that the location was deactivated at. For example, 3:30 pm on September 7, 2019 in the time zone of UTC (Universal Time Coordinated) is represented as `"2019-09-07T15:50:00Z`". + /// + public string? deactivatedAt { get; set; } + /// + ///Whether this location can be deleted. + /// + public bool? deletable { get; set; } + /// + ///Name of the service provider that fulfills from this location. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///Whether this location can fulfill online orders. + /// + public bool? fulfillsOnlineOrders { get; set; } + /// + ///Whether this location has active inventory. + /// + public bool? hasActiveInventory { get; set; } + /// + ///Whether this location has orders that need to be fulfilled. + /// + public bool? hasUnfulfilledOrders { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The quantities of an inventory item at this location. + /// + public InventoryLevel? inventoryLevel { get; set; } + /// + ///A list of the quantities of the inventory items that can be stocked at this location. + /// + public InventoryLevelConnection? inventoryLevels { get; set; } + /// + ///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. + /// + [Obsolete("The concept of a primary location is deprecated, shipsInventory can be used to get a fallback location")] + public bool? isPrimary { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///Local pickup settings for the location. + /// + public DeliveryLocalPickupSettings? localPickupSettingsV2 { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The name of the location. + /// + public string? name { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + /// + ///Whether this location is used for calculating shipping rates. In multi-origin shipping mode, this flag is ignored. + /// + public bool? shipsInventory { get; set; } + /// + ///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; } + } + + /// + ///Return type for `locationActivate` mutation. + /// + public class LocationActivatePayload : GraphQLObject + { + /// + ///The location that was activated. + /// + public Location? location { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? locationActivateUserErrors { get; set; } + } + + /// + ///An error that occurs while activating a location. + /// + public class LocationActivateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `LocationActivateUserError`. + /// + public enum LocationActivateUserErrorCode + { + /// + ///An error occurred while activating the location. + /// + GENERIC_ERROR, + /// + ///Shop has reached its location limit. + /// + LOCATION_LIMIT, + /// + ///This location currently cannot be activated as inventory, pending orders or transfers are being relocated from this location. + /// + HAS_ONGOING_RELOCATION, + /// + ///Location not found. + /// + LOCATION_NOT_FOUND, + /// + ///There is already an active location with this name. + /// + HAS_NON_UNIQUE_NAME, + } + + /// + ///Return type for `locationAdd` mutation. + /// + public class LocationAddPayload : GraphQLObject + { + /// + ///The location that was added. + /// + public Location? location { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs while adding a location. + /// + public class LocationAddUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `LocationAddUserError`. + /// + public enum LocationAddUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The ZIP code is not a valid US ZIP code. + /// + INVALID_US_ZIPCODE, + /// + ///An error occurred while adding the location. + /// + GENERIC_ERROR, + /// + ///The type is invalid. + /// + INVALID_TYPE, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///ApiPermission metafields can only be created or updated by the app owner. + /// + APP_NOT_AUTHORIZED, + /// + ///Unstructured reserved namespace. + /// + UNSTRUCTURED_RESERVED_NAMESPACE, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + } + + /// + ///Represents the address of a location. + /// + public class LocationAddress : GraphQLObject + { + /// + ///The first line of the address for the location. + /// + public string? address1 { get; set; } + /// + ///The second line of the address for the location. + /// + public string? address2 { get; set; } + /// + ///The city of the location. + /// + public string? city { get; set; } + /// + ///The country of the location. + /// + public string? country { get; set; } + /// + ///The country code of the location. + /// + public string? countryCode { get; set; } + /// + ///A formatted version of the address for the location. + /// + public IEnumerable? formatted { get; set; } + /// + ///The approximate latitude coordinates of the location. + /// + public decimal? latitude { get; set; } + /// + ///The approximate longitude coordinates of the location. + /// + public decimal? longitude { get; set; } + /// + ///The phone number of the location. + /// + public string? phone { get; set; } + /// + ///The province of the location. + /// + public string? province { get; set; } + /// + ///The code for the province, state, or district of the address of the location. + /// + public string? provinceCode { get; set; } + /// + ///The ZIP code of the location. + /// + public string? zip { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Locations. + /// + public class LocationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in LocationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `locationDeactivate` mutation. + /// + public class LocationDeactivatePayload : GraphQLObject + { + /// + ///The location that was deactivated. + /// + public Location? location { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? locationDeactivateUserErrors { get; set; } + } + + /// + ///The possible errors that can be returned when executing the `locationDeactivate` mutation. + /// + public class LocationDeactivateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `LocationDeactivateUserError`. + /// + public enum LocationDeactivateUserErrorCode + { + /// + ///Location not found. + /// + LOCATION_NOT_FOUND, + /// + ///Location either has a fulfillment service or is the only location with a shipping address. + /// + PERMANENTLY_BLOCKED_FROM_DEACTIVATION_ERROR, + /// + ///Location has incoming inventory. The location can be deactivated after the inventory has been received. + /// + TEMPORARILY_BLOCKED_FROM_DEACTIVATION_ERROR, + /// + ///Location needs to be removed from Shopify POS for Retail subscription in Point of Sale channel. + /// + HAS_ACTIVE_RETAIL_SUBSCRIPTIONS, + /// + ///Destination location is the same as the location to be deactivated. + /// + DESTINATION_LOCATION_IS_THE_SAME_LOCATION, + /// + ///Destination location is not found or inactive. + /// + DESTINATION_LOCATION_NOT_FOUND_OR_INACTIVE, + /// + ///Location could not be deactivated without specifying where to relocate inventory at the location. + /// + HAS_ACTIVE_INVENTORY_ERROR, + /// + ///Location could not be deactivated because it has pending orders. + /// + HAS_FULFILLMENT_ORDERS_ERROR, + /// + ///Location could not be deactivated because it has open Shopify Fulfillment Network transfers. + /// + HAS_INCOMING_MOVEMENTS_ERROR, + /// + ///Location could not be deactivated because it has open purchase orders. + /// + HAS_OPEN_PURCHASE_ORDERS_ERROR, + /// + ///Failed to relocate active inventories to the destination location. + /// + FAILED_TO_RELOCATE_ACTIVE_INVENTORIES, + /// + ///Failed to relocate open purchase orders to the destination location. + /// + FAILED_TO_RELOCATE_OPEN_PURCHASE_ORDERS, + /// + ///Failed to relocate incoming movements to the destination location. + /// + FAILED_TO_RELOCATE_INCOMING_MOVEMENTS, + /// + ///At least one location must fulfill online orders. + /// + CANNOT_DISABLE_ONLINE_ORDER_FULFILLMENT, + } + + /// + ///Return type for `locationDelete` mutation. + /// + public class LocationDeletePayload : GraphQLObject + { + /// + ///The ID of the location that was deleted. + /// + public string? deletedLocationId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? locationDeleteUserErrors { get; set; } + } + + /// + ///An error that occurs while deleting a location. + /// + public class LocationDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `LocationDeleteUserError`. + /// + public enum LocationDeleteUserErrorCode + { + /// + ///Location not found. + /// + LOCATION_NOT_FOUND, + /// + ///The location cannot be deleted while it is active. + /// + LOCATION_IS_ACTIVE, + /// + ///An error occurred while deleting the location. + /// + GENERIC_ERROR, + /// + ///The location cannot be deleted while it has inventory. + /// + LOCATION_HAS_INVENTORY, + /// + ///The location cannot be deleted while it has pending orders. + /// + LOCATION_HAS_PENDING_ORDERS, + /// + ///The location cannot be deleted while it has any active Retail subscriptions in the Point of Sale channel. + /// + LOCATION_HAS_ACTIVE_RETAIL_SUBSCRIPTION, + } + + /// + ///An auto-generated type which holds one Location and a cursor during pagination. + /// + public class LocationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of LocationEdge. + /// + public Location? node { get; set; } + } + + /// + ///Return type for `locationEdit` mutation. + /// + public class LocationEditPayload : GraphQLObject + { + /// + ///The location that was edited. + /// + public Location? location { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs while editing a location. + /// + public class LocationEditUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `LocationEditUserError`. + /// + public enum LocationEditUserErrorCode + { + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The ZIP code is not a valid US ZIP code. + /// + INVALID_US_ZIPCODE, + /// + ///An error occurred while editing the location. + /// + GENERIC_ERROR, + /// + ///At least one location must fulfill online orders. + /// + CANNOT_DISABLE_ONLINE_ORDER_FULFILLMENT, + /// + ///Cannot modify the online order fulfillment preference for fulfillment service locations. + /// + CANNOT_MODIFY_ONLINE_ORDER_FULFILLMENT_FOR_FS_LOCATION, + /// + ///The type is invalid. + /// + INVALID_TYPE, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///ApiPermission metafields can only be created or updated by the app owner. + /// + APP_NOT_AUTHORIZED, + /// + ///Unstructured reserved namespace. + /// + UNSTRUCTURED_RESERVED_NAMESPACE, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + } + + /// + ///Return type for `locationLocalPickupDisable` mutation. + /// + public class LocationLocalPickupDisablePayload : GraphQLObject + { + /// + ///The ID of the location for which local pickup was disabled. + /// + public string? locationId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `locationLocalPickupEnable` mutation. + /// + public class LocationLocalPickupEnablePayload : GraphQLObject + { + /// + ///The local pickup settings that were enabled. + /// + public DeliveryLocalPickupSettings? localPickupSettings { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the Location query. + /// + public enum LocationSortKeys + { + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///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, + } + + /// + ///Represents a suggested address for a location. + /// + public class LocationSuggestedAddress : GraphQLObject + { + /// + ///The first line of the suggested address. + /// + public string? address1 { get; set; } + /// + ///The second line of the suggested address. + /// + public string? address2 { get; set; } + /// + ///The city of the suggested address. + /// + public string? city { get; set; } + /// + ///The country of the suggested address. + /// + public string? country { get; set; } + /// + ///The country code of the suggested address. + /// + public string? countryCode { get; set; } + /// + ///A formatted version of the suggested address. + /// + public IEnumerable? formatted { get; set; } + /// + ///The province of the suggested address. + /// + public string? province { get; set; } + /// + ///The code for the province, state, or district of the suggested address. + /// + public string? provinceCode { get; set; } + /// + ///The ZIP code of the suggested address. + /// + public string? zip { get; set; } + } + + /// + ///Represents a customer mailing address. + /// + ///For example, a customer's default address and an order's billing address are both mailling addresses. + /// + public class MailingAddress : GraphQLObject, INode + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the customer's company or organization. + /// + public string? company { get; set; } + /// + ///Whether the address coordinates are valid. + /// + public bool? coordinatesValidated { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + + /// + ///The two-letter code for the country of the address. + /// + ///For example, US. + /// + [Obsolete("Use `countryCodeV2` instead.")] + public string? countryCode { get; set; } + /// + ///The two-letter code for the country of the address. + /// + ///For example, US. + /// + public string? countryCodeV2 { get; set; } + /// + ///The first name of the customer. + /// + public string? firstName { get; set; } + /// + ///A formatted version of the address, customized by the provided arguments. + /// + public IEnumerable? formatted { get; set; } + /// + ///A comma-separated list of the values for city, province, and country. + /// + public string? formattedArea { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The last name of the customer. + /// + public string? lastName { get; set; } + /// + ///The latitude coordinate of the customer address. + /// + public decimal? latitude { get; set; } + /// + ///The longitude coordinate of the customer address. + /// + public decimal? longitude { get; set; } + /// + ///The full name of the customer, based on firstName and lastName. + /// + public string? name { get; set; } + /// + ///A unique phone number for the customer. + /// + public string? phone { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The alphanumeric code for the region. + /// + ///For example, ON. + /// + public string? provinceCode { get; set; } + /// + ///The time zone of the address. + /// + public string? timeZone { get; set; } + /// + ///Represents the state of validation of a mailing address. For more information, refer to [Validating shipping addresses on your orders](https://help.shopify.com/manual/orders/manage-orders/shipping-address-validation). + /// + public string? validationResultSummary { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MailingAddresses. + /// + public class MailingAddressConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MailingAddressEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MailingAddress and a cursor during pagination. + /// + public class MailingAddressEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MailingAddressEdge. + /// + public MailingAddress? node { get; set; } + } + + /// + ///Highest level of validation concerns identified for the address. + /// + public enum MailingAddressValidationResult + { + /// + ///Indicates that the address has been validated and no issues were found. + /// + NO_ISSUES, + /// + ///Indicates that the address has been validated and is very likely to contain invalid information. + /// + ERROR, + /// + ///Indicates that the address has been validated and might contain invalid information. + /// + WARNING, + } + + /// + ///Manual discount applications capture the intentions of a discount that was manually created for an order. + /// + ///Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object. + /// + public class ManualDiscountApplication : GraphQLObject, IDiscountApplication + { + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The description of the discount application. + /// + public string? description { get; set; } + /// + ///An ordered index that can be used to identify the discount application and indicate the precedence + ///of the discount application for calculations. + /// + public int? index { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The title of the discount application. + /// + public string? title { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///A market is a group of one or more regions that you want to target for international sales. + ///By creating a market, you can configure a distinct, localized shopping experience for + ///customers from a specific area of the world. For example, you can + ///[change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate), + ///[configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists), + ///or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence). + /// + public class Market : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The catalogs that belong to the market. + /// + 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; } + /// + ///Whether the market is enabled to receive visitors and sales. **Note**: Regions in inactive + ///markets can't be selected on the storefront or in checkout. + /// + public bool? enabled { get; set; } + /// + ///A short, human-readable unique identifier for the market. This is changeable by the merchant. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///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. + /// + public bool? primary { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 regions that comprise the market. + /// + public MarketRegionConnection? regions { get; set; } + /// + ///The market’s web presence, which defines its SEO strategy. This can be a different domain, + ///subdomain, or subfolders of the primary domain. Each web presence comprises one or more + ///language variants. If a market doesn't have its own web presence, then the market is accessible on the + ///primary market's domains using [country + ///selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector). + ///If it's the primary market and it has multiple web presences, then this field will return the primary domain web presence. + /// + public MarketWebPresence? webPresence { get; set; } + /// + ///The market’s web presences, which defines its SEO strategy. This can be a different domain, + ///subdomain, or subfolders of the primary domain. Each web presence comprises one or more + ///language variants. If a market doesn't have any web presences, then the market is accessible on the + ///primary market's domains using [country + ///selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector). + /// + public MarketWebPresenceConnection? webPresences { get; set; } + } + + /// + ///A list of products with publishing and pricing information associated with markets. + /// + public class MarketCatalog : GraphQLObject, ICatalog, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The markets associated with the catalog. + /// + public MarketConnection? markets { get; set; } + /// + ///Most recent catalog operations. + /// + public IEnumerable? operations { get; set; } + /// + ///The price list associated with the catalog. + /// + public PriceList? priceList { get; set; } + /// + ///A group of products and collections that's published to a catalog. + /// + public Publication? publication { get; set; } + /// + ///The status of the catalog. + /// + public string? status { get; set; } + /// + ///The name of the catalog. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MarketCatalogs. + /// + public class MarketCatalogConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketCatalogEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MarketCatalog and a cursor during pagination. + /// + public class MarketCatalogEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketCatalogEdge. + /// + public MarketCatalog? node { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Markets. + /// + public class MarketConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `marketCreate` mutation. + /// + public class MarketCreatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A market's currency settings. + /// + public class MarketCurrencySettings : GraphQLObject + { + /// + ///The currency which this market's prices are defined in, and the + ///currency which its customers must use if local currencies are disabled. + /// + public CurrencySetting? baseCurrency { get; set; } + /// + ///Whether or not local currencies are enabled. If enabled, then prices will + ///be converted to give each customer the best experience based on their + ///region. If disabled, then all customers in this market will see prices + ///in the market's base currency. For single country markets this will be true when + ///the market's base currency is the same as the default currency for the region. + /// + public bool? localCurrencies { get; set; } + } + + /// + ///Return type for `marketCurrencySettingsUpdate` mutation. + /// + public class MarketCurrencySettingsUpdatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed market multi-currency operations. + /// + public class MarketCurrencySettingsUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MarketCurrencySettingsUserError`. + /// + public enum MarketCurrencySettingsUserErrorCode + { + /// + ///The specified market wasn't found. + /// + MARKET_NOT_FOUND, + /// + ///The currency settings of the given market cannot be changed because the market manager has exclusive control of pricing. + /// + MANAGED_MARKET, + /// + ///The shop's payment gateway does not support enabling more than one currency. + /// + MULTIPLE_CURRENCIES_NOT_SUPPORTED, + /// + ///Can't enable or disable local currencies on a single country market. + /// + NO_LOCAL_CURRENCIES_ON_SINGLE_COUNTRY_MARKET, + /// + ///The specified currency is not supported. + /// + UNSUPPORTED_CURRENCY, + /// + ///The primary market must use the shop currency. + /// + PRIMARY_MARKET_USES_SHOP_CURRENCY, + } + + /// + ///Return type for `marketDelete` mutation. + /// + public class MarketDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted market. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Market and a cursor during pagination. + /// + public class MarketEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketEdge. + /// + public Market? node { get; set; } + } + + /// + ///The market localizable content of a resource's field. + /// + public class MarketLocalizableContent : GraphQLObject + { + /// + ///The hash digest representation of the content value. + /// + public string? digest { get; set; } + /// + ///The resource field that's being localized. + /// + public string? key { get; set; } + /// + ///The content value. + /// + public string? value { get; set; } + } + + /// + ///A resource that has market localizable fields. + /// + public class MarketLocalizableResource : GraphQLObject + { + /// + ///The market localizable content. + /// + public IEnumerable? marketLocalizableContent { get; set; } + /// + ///Market localizations for the market localizable content. + /// + public IEnumerable? marketLocalizations { get; set; } + /// + ///The GID of the resource. + /// + public string? resourceId { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MarketLocalizableResources. + /// + public class MarketLocalizableResourceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketLocalizableResourceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MarketLocalizableResource and a cursor during pagination. + /// + public class MarketLocalizableResourceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketLocalizableResourceEdge. + /// + public MarketLocalizableResource? node { get; set; } + } + + /// + ///The type of resources that are market localizable. + /// + public enum MarketLocalizableResourceType + { + /// + ///A metafield. Market localizable fields: `value`. + /// + METAFIELD, + /// + ///A Metaobject. Market Localizable fields are determined by the Metaobject type. + /// + METAOBJECT, + } + + /// + ///The market localization of a field within a resource, which is determined by the market ID. + /// + public class MarketLocalization : GraphQLObject + { + /// + ///A reference to the value being localized on the resource that this market localization belongs to. + /// + public string? key { get; set; } + /// + ///The market that the localization is specific to. + /// + public Market? market { get; set; } + /// + ///Whether the original content has changed since this market localization was updated. + /// + public bool? outdated { get; set; } + /// + ///The date and time when the market localization was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The value of the market localization. + /// + public string? value { get; set; } + } + + /// + ///Return type for `marketLocalizationsRegister` mutation. + /// + public class MarketLocalizationsRegisterPayload : GraphQLObject + { + /// + ///The market localizations that were created or updated. + /// + public IEnumerable? marketLocalizations { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketLocalizationsRemove` mutation. + /// + public class MarketLocalizationsRemovePayload : GraphQLObject + { + /// + ///The market localizations that were deleted. + /// + public IEnumerable? marketLocalizations { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A geographic region which comprises a market. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(MarketRegionCountry), typeDiscriminator: "MarketRegionCountry")] + public interface IMarketRegion : IGraphQLObject + { + public MarketRegionCountry? AsMarketRegionCountry() => this as MarketRegionCountry; + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///The name of the region. + /// + public string? name { get; } + } + + /// + ///An auto-generated type for paginating through multiple MarketRegions. + /// + public class MarketRegionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketRegionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///A country which comprises a market. + /// + public class MarketRegionCountry : GraphQLObject, IMarketRegion, INode + { + /// + ///The ISO code identifying the country. + /// + public string? code { get; set; } + /// + ///The currency which this country uses given its market settings. + /// + public CurrencySetting? currency { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the region. + /// + public string? name { get; set; } + } + + /// + ///Return type for `marketRegionDelete` mutation. + /// + public class MarketRegionDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted market region. + /// + public string? deletedId { get; set; } + /// + ///The parent market object of the deleted region. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MarketRegion and a cursor during pagination. + /// + public class MarketRegionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketRegionEdge. + /// + public IMarketRegion? node { get; set; } + } + + /// + ///Return type for `marketRegionsCreate` mutation. + /// + public class MarketRegionsCreatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketRegionsDelete` mutation. + /// + public class MarketRegionsDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted market region. + /// + public IEnumerable? deletedIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketUpdate` mutation. + /// + public class MarketUpdatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors encountered while managing a Market. + /// + public class MarketUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MarketUserError`. + /// + public enum MarketUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The market wasn't found. + /// + MARKET_NOT_FOUND, + /// + ///The market region wasn't found. + /// + REGION_NOT_FOUND, + /// + ///The market web presence wasn't found. + /// + WEB_PRESENCE_NOT_FOUND, + /// + ///Can't add regions to the primary market. + /// + CANNOT_ADD_REGIONS_TO_PRIMARY_MARKET, + /// + ///Can't delete the only region in a market. + /// + CANNOT_DELETE_ONLY_REGION, + /// + ///Exactly one input option is required. + /// + REQUIRES_EXACTLY_ONE_OPTION, + /// + ///Can't delete the primary market. + /// + CANNOT_DELETE_PRIMARY_MARKET, + /// + ///Domain was not found. + /// + DOMAIN_NOT_FOUND, + /// + ///The subfolder suffix must contain only letters. + /// + SUBFOLDER_SUFFIX_MUST_CONTAIN_ONLY_LETTERS, + /// + ///The subfolder suffix is invalid, please provide a different value. + /// + SUBFOLDER_SUFFIX_CANNOT_BE_SCRIPT_CODE, + /// + ///No languages selected. + /// + NO_LANGUAGES, + /// + ///Duplicates found in languages. + /// + DUPLICATE_LANGUAGES, + /// + ///Cannot add region-specific language. + /// + REGION_SPECIFIC_LANGUAGE, + /// + ///Can't pass both `subfolderSuffix` and `domainId`. + /// + CANNOT_HAVE_SUBFOLDER_AND_DOMAIN, + /// + ///Can't add the web presence to the primary market. + /// + CANNOT_ADD_WEB_PRESENCE_TO_PRIMARY_MARKET, + /// + ///Can't add another web presence to the market. + /// + MARKET_REACHED_WEB_PRESENCE_LIMIT, + /// + ///Can't have multiple subfolder web presences per market. + /// + CANNOT_HAVE_MULTIPLE_SUBFOLDERS_PER_MARKET, + /// + ///Can't have both subfolder and domain web presences. + /// + CANNOT_HAVE_BOTH_SUBFOLDER_AND_DOMAIN_WEB_PRESENCES, + /// + ///One of `subfolderSuffix` or `domainId` is required. + /// + REQUIRES_DOMAIN_OR_SUBFOLDER, + /// + ///The primary market must use the primary domain. + /// + PRIMARY_MARKET_MUST_USE_PRIMARY_DOMAIN, + /// + ///Can't delete the primary market's web presence. + /// + CANNOT_DELETE_PRIMARY_MARKET_WEB_PRESENCE, + /// + ///Can't have more than 50 markets. + /// + SHOP_REACHED_MARKETS_LIMIT, + /// + ///Can't disable the primary market. + /// + CANNOT_DISABLE_PRIMARY_MARKET, + /// + ///The language isn't published to the store. + /// + UNPUBLISHED_LANGUAGE, + /// + ///The language isn't enabled on the store. + /// + DISABLED_LANGUAGE, + /// + ///Can't set default locale to null. + /// + CANNOT_SET_DEFAULT_LOCALE_TO_NULL, + /// + ///Can't add unsupported country or region. + /// + UNSUPPORTED_COUNTRY_REGION, + /// + ///Can't add customer account domain to a market. + /// + CANNOT_ADD_CUSTOMER_DOMAIN, + } + + /// + ///The market’s web presence, which defines its SEO strategy. This can be a different domain + ///(e.g. `example.ca`), subdomain (e.g. `ca.example.com`), or subfolders of the primary + ///domain (e.g. `example.com/en-ca`). Each web presence comprises one or more language + ///variants. If a market does not have its own web presence, it is accessible on the shop’s + ///primary domain via [country + ///selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector). + /// + ///Note: while the domain/subfolders defined by a market’s web presence are not applicable to + ///custom storefronts, which must manage their own domains and routing, the languages chosen + ///here do govern [the languages available on the Storefront + ///API](https://shopify.dev/custom-storefronts/internationalization/multiple-languages) for the countries in + ///this market. + /// + public class MarketWebPresence : GraphQLObject, INode + { + /// + ///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; } + /// + ///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 ShopLocale? defaultLocale { get; set; } + /// + ///The web presence’s domain. + ///This field will be null if `subfolderSuffix` isn't null. + /// + public Domain? domain { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The associated market. + /// + public Market? market { get; set; } + /// + ///The list of root URLs for each of the web presence’s locales. As of version `2024-04` this value will no longer have a trailing slash. + /// + public IEnumerable? rootUrls { get; set; } + /// + ///The market-specific suffix of the subfolders defined by the web presence. Example: in `/en-us` the subfolder suffix is `us`. This field will be null if `domain` isn't null. + /// + public string? subfolderSuffix { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MarketWebPresences. + /// + public class MarketWebPresenceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketWebPresenceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `marketWebPresenceCreate` mutation. + /// + public class MarketWebPresenceCreatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketWebPresenceDelete` mutation. + /// + public class MarketWebPresenceDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted web presence. + /// + public string? deletedId { get; set; } + /// + ///The market for which the web presence was deleted. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MarketWebPresence and a cursor during pagination. + /// + public class MarketWebPresenceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketWebPresenceEdge. + /// + public MarketWebPresence? node { get; set; } + } + + /// + ///The URL for the homepage of the online store in the context of a particular market and a + ///particular locale. + /// + public class MarketWebPresenceRootUrl : GraphQLObject + { + /// + ///The locale that the storefront loads in. + /// + public string? locale { get; set; } + /// + ///The URL. + /// + public string? url { get; set; } + } + + /// + ///Return type for `marketWebPresenceUpdate` mutation. + /// + public class MarketWebPresenceUpdatePayload : GraphQLObject + { + /// + ///The market object. + /// + public Market? market { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingActivitiesDeleteAllExternal` mutation. + /// + public class MarketingActivitiesDeleteAllExternalPayload : GraphQLObject + { + /// + ///The asynchronous job that performs the deletion. The status of the job may be used to determine when it's safe again to create new activities. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The marketing activity resource represents marketing that a + /// merchant created through an app. + /// + public class MarketingActivity : GraphQLObject, INode + { + /// + ///The URL of the marketing activity listing page in the marketing section. + /// + public string? activityListUrl { get; set; } + /// + ///The amount spent on the marketing activity. + /// + public MoneyV2? adSpend { get; set; } + /// + ///The app which created this marketing activity. + /// + public App? app { get; set; } + /// + ///The errors generated when an app publishes the marketing activity. + /// + public MarketingActivityExtensionAppErrors? appErrors { get; set; } + /// + ///The allocated budget for the marketing activity. + /// + public MarketingBudget? budget { get; set; } + /// + ///The date and time when the marketing activity was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The completed content in the marketing activity creation form. + /// + public string? formData { get; set; } + /// + ///The hierarchy level of the marketing activity. + /// + public string? hierarchyLevel { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///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. + /// + [Obsolete("Use `marketingChannelType` instead.")] + public string? marketingChannel { get; set; } + /// + ///The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. + /// + public string? marketingChannelType { get; set; } + /// + ///Associated marketing event of this marketing activity. + /// + public MarketingEvent? marketingEvent { get; set; } + /// + ///ID of the parent activity of this marketing activity. + /// + public string? parentActivityId { get; set; } + /// + ///ID of the parent activity of this marketing activity. + /// + public string? parentRemoteId { get; set; } + /// + ///A contextual description of the marketing activity based on the platform and tactic used. + /// + public string? sourceAndMedium { get; set; } + /// + ///The current state of the marketing activity. + /// + public string? status { get; set; } + + /// + ///The severity of the marketing activity's status. + /// + [Obsolete("Use `statusBadgeTypeV2` instead.")] + public string? statusBadgeType { get; set; } + /// + ///The severity of the marketing activity's status. + /// + public string? statusBadgeTypeV2 { get; set; } + /// + ///The rendered status of the marketing activity. + /// + public string? statusLabel { get; set; } + /// + ///The [date and time]( + /// https://help.shopify.com/https://en.wikipedia.org/wiki/ISO_8601 + /// ) when the activity's status last changed. + /// + public DateTime? statusTransitionedAt { get; set; } + /// + ///The method of marketing used for this marketing activity. + /// + public string? tactic { get; set; } + /// + ///The status to which the marketing activity is currently transitioning. + /// + public string? targetStatus { get; set; } + /// + ///The marketing activity's title, which is rendered on the marketing listing page. + /// + public string? title { get; set; } + /// + ///The date and time when the marketing activity was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The value portion of the URL query parameter used in attributing sessions to this activity. + /// + public string? urlParameterValue { get; set; } + /// + ///The set of [Urchin Tracking Module]( + /// https://help.shopify.com/https://en.wikipedia.org/wiki/UTM_parameters + /// ) used in the URL for tracking this marketing activity. + /// + public UTMParameters? utmParameters { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MarketingActivities. + /// + public class MarketingActivityConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketingActivityEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `marketingActivityCreateExternal` mutation. + /// + public class MarketingActivityCreateExternalPayload : GraphQLObject + { + /// + ///The external marketing activity that was created. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingActivityCreate` mutation. + /// + public class MarketingActivityCreatePayload : GraphQLObject + { + /// + ///The created marketing activity. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///The path to return back to shopify admin from embedded editor. + /// + public string? redirectPath { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingActivityDeleteExternal` mutation. + /// + public class MarketingActivityDeleteExternalPayload : GraphQLObject + { + /// + ///The ID of the marketing activity that was deleted, if one was deleted. + /// + public string? deletedMarketingActivityId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MarketingActivity and a cursor during pagination. + /// + public class MarketingActivityEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketingActivityEdge. + /// + public MarketingActivity? node { get; set; } + } + + /// + ///The error code resulted from the marketing activity extension integration. + /// + public enum MarketingActivityExtensionAppErrorCode + { + /// + ///The shop/user must be onboarded to use the app. + /// + NOT_ONBOARDED_ERROR, + /// + ///The app has returned validation errors. + /// + VALIDATION_ERROR, + /// + ///The app is either not responding or returning unexpected data. + /// + API_ERROR, + /// + ///The app has returned an error when invoking the platform. + /// + PLATFORM_ERROR, + /// + ///The app needs to be installed. + /// + INSTALL_REQUIRED_ERROR, + } + + /// + ///Represents errors returned from apps when using the marketing activity extension. + /// + public class MarketingActivityExtensionAppErrors : GraphQLObject + { + /// + ///The app error type. + /// + public string? code { get; set; } + /// + ///The list of errors returned by the app. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Set of possible statuses for an external marketing activity. + /// + public enum MarketingActivityExternalStatus + { + /// + ///This marketing activity is currently running. + /// + ACTIVE, + /// + ///This marketing activity has completed running. + /// + INACTIVE, + /// + ///This marketing activity is currently not running. + /// + PAUSED, + /// + ///This marketing activity is scheduled to run. + /// + SCHEDULED, + /// + ///This marketing activity was deleted and it was triggered from outside of Shopify. + /// + DELETED_EXTERNALLY, + /// + ///The marketing activity's status is unknown. + /// + UNDEFINED, + } + + /// + ///Hierarchy levels for external marketing activities. + /// + public enum MarketingActivityHierarchyLevel + { + /// + ///An advertisement activity. Must be parented by an ad group or a campaign activity, and must be assigned tracking parameters (URL or UTM). + /// + AD, + /// + ///A group of advertisement activities. Must be parented by a campaign activity. + /// + AD_GROUP, + /// + ///A campaign activity. May contain either ad groups or ads as child activities. If childless, then the campaign activity should have tracking parameters assigned (URL or UTM) otherwise it won't appear in marketing reports. + /// + CAMPAIGN, + } + + /// + ///The set of valid sort keys for the MarketingActivity query. + /// + public enum MarketingActivitySortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Status helps to identify if this marketing activity has been completed, queued, failed etc. + /// + public enum MarketingActivityStatus + { + /// + ///This marketing activity is currently running. + /// + ACTIVE, + /// + ///This marketing activity is permanently unavailable. + /// + DELETED, + /// + ///This marketing activity was deleted and it was triggered from outside of Shopify. + /// + DELETED_EXTERNALLY, + /// + ///This marketing activity is disconnected and no longer editable. + /// + DISCONNECTED, + /// + ///This marketing activity has been edited, but it is not yet created. + /// + DRAFT, + /// + ///This marketing activity is unable to run. + /// + FAILED, + /// + ///This marketing activity has completed running. + /// + INACTIVE, + /// + ///This marketing activity is currently not running. + /// + PAUSED, + /// + ///This marketing activity is pending creation on the app's marketing platform. + /// + PENDING, + /// + ///This marketing activity is scheduled to run. + /// + SCHEDULED, + /// + ///The marketing activity's status is unknown. + /// + UNDEFINED, + } + + /// + ///StatusBadgeType helps to identify the color of the status badge. + /// + public enum MarketingActivityStatusBadgeType + { + /// + ///This status badge has type default. + /// + DEFAULT, + /// + ///This status badge has type success. + /// + SUCCESS, + /// + ///This status badge has type attention. + /// + ATTENTION, + /// + ///This status badge has type warning. + /// + WARNING, + /// + ///This status badge has type info. + /// + INFO, + } + + /// + ///Return type for `marketingActivityUpdateExternal` mutation. + /// + public class MarketingActivityUpdateExternalPayload : GraphQLObject + { + /// + ///The updated marketing activity. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingActivityUpdate` mutation. + /// + public class MarketingActivityUpdatePayload : GraphQLObject + { + /// + ///The updated marketing activity. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///The redirect path from the embedded editor to the Shopify admin. + /// + public string? redirectPath { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingActivityUpsertExternal` mutation. + /// + public class MarketingActivityUpsertExternalPayload : GraphQLObject + { + /// + ///The external marketing activity that was created or updated. + /// + public MarketingActivity? marketingActivity { 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 marketing activity and engagement mutations. + /// + public class MarketingActivityUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MarketingActivityUserError`. + /// + public enum MarketingActivityUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///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, + } + + /// + ///This type combines budget amount and its marketing budget type. + /// + public class MarketingBudget : GraphQLObject + { + /// + ///The budget type for a marketing activity. + /// + public string? budgetType { get; set; } + /// + ///The amount of budget for marketing activity. + /// + public MoneyV2? total { get; set; } + } + + /// + ///The budget type for a marketing activity. + /// + public enum MarketingBudgetBudgetType + { + /// + ///A daily budget. + /// + DAILY, + /// + ///A budget for the lifetime of a marketing activity. + /// + LIFETIME, + } + + /// + ///The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. + /// + public enum MarketingChannel + { + /// + ///Paid search. + /// + SEARCH, + /// + ///Displayed ads. + /// + DISPLAY, + /// + ///Social media. + /// + SOCIAL, + /// + ///Email. + /// + EMAIL, + /// + ///Referral links. + /// + REFERRAL, + } + + /// + ///Marketing engagement represents customer activity taken on a marketing activity or a marketing channel. + /// + public class MarketingEngagement : GraphQLObject + { + /// + ///The total ad spend for the marketing content. Recurring weekly, monthly, or yearly spend needs to be divided into daily amounts. + /// + public MoneyV2? adSpend { get; set; } + /// + ///The unique string identifier of the channel to which the engagement metrics are being provided. This should be set when and only when providing channel-level engagements. This should be nil when providing activity-level engagements. For the correct handle for your channel, contact your partner manager. + /// + public string? channelHandle { get; set; } + /// + ///The total number of interactions, such as a button press or a screen touch, that occurred on the marketing content. + /// + public int? clicksCount { get; set; } + /// + ///The total number of comments on the marketing content. + /// + public int? commentsCount { get; set; } + /// + ///The total number of complaints on the marketing content. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were marked as spam. For social media platforms, this represents the number of dislikes or the number of times marketing content was reported. + /// + public int? complaintsCount { get; set; } + /// + ///The total number of fails for the marketing content. For message-based platforms such as email or SMS, this represents the number of bounced marketing emails or messages. + /// + public int? failsCount { get; set; } + /// + ///The total number of favorites, likes, saves, or bookmarks on the marketing content. + /// + public int? favoritesCount { get; set; } + /// + ///The number of customers that have placed their first order. Doesn't include adjustments such as edits, exchanges, or returns. + /// + public decimal? firstTimeCustomers { get; set; } + /// + ///The total number of times marketing content was displayed to users, whether or not an interaction occurred. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were delivered. + /// + public int? impressionsCount { get; set; } + /// + ///Specifies how the provided metrics have been aggregated. Cumulative metrics are aggregated from the first day of reporting up to and including `occuredOn`. Non-cumulative metrics are aggregated over the single day indicated in `occuredOn`. Cumulative metrics will monotonically increase in time as each record includes the previous day's values, and so on. Non-cumulative is strongly preferred, and support for cumulative metrics may be deprecated in the future. + /// + public bool? isCumulative { get; set; } + /// + ///The marketing activity object related to this engagement. This corresponds to the marketingActivityId passed in on creation of the engagement. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///The date for which the metrics are being reported, from 0:00:00 to 23:59:59 in the time zone specified by `timeZone`. + /// + public DateOnly? occurredOn { get; set; } + /// + ///The number of orders generated from the marketing content. + /// + public decimal? orders { get; set; } + /// + ///The number of returning customers that have placed an order. Doesn't include adjustments such as edits, exchanges, or returns. + /// + public decimal? returningCustomers { get; set; } + /// + ///The amount of sales generated from the marketing content. + /// + public MoneyV2? sales { get; set; } + /// + ///The total number of marketing emails or messages that were sent. + /// + public int? sendsCount { get; set; } + /// + ///The number of online store sessions generated from the marketing content. + /// + public int? sessionsCount { get; set; } + /// + ///The total number of times marketing content was distributed or reposted to either one's own network of followers through a social media platform or other digital channels. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were forwarded. + /// + public int? sharesCount { get; set; } + /// + ///The total number of unique clicks on the marketing content. + /// + public int? uniqueClicksCount { get; set; } + /// + ///The total number of all users who saw marketing content since it was published. For message-based platforms such as email or SMS, this represents the number of unique users that opened a marketing email or message. For video-based content, this represents the number of unique users that played video content. + /// + public int? uniqueViewsCount { get; set; } + /// + ///The total number of unsubscribes on the marketing content. For social media platforms, this represents the number of unfollows. + /// + public int? unsubscribesCount { get; set; } + /// + ///The time difference, in hours, between UTC and the time zone used to aggregate these metrics. + /// + public TimeSpan? utcOffset { get; set; } + /// + ///The total number of views on the marketing content. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were opened. For video-based content, this represents the number of times videos were played. + /// + public int? viewsCount { get; set; } + } + + /// + ///Return type for `marketingEngagementCreate` mutation. + /// + public class MarketingEngagementCreatePayload : GraphQLObject + { + /// + ///The marketing engagement that was created. This represents customer activity taken on a marketing activity or a marketing channel. + /// + public MarketingEngagement? marketingEngagement { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `marketingEngagementsDelete` mutation. + /// + public class MarketingEngagementsDeletePayload : GraphQLObject + { + /// + ///Informational message about the engagement data that has been marked for deletion. + /// + public string? result { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents actions that market a merchant's store or products. + /// + public class MarketingEvent : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The app that the marketing event is attributed to. + /// + public App? app { get; set; } + + /// + ///The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. + /// + [Obsolete("Use `marketingChannelType` instead.")] + public string? channel { get; set; } + /// + ///The unique string identifier of the channel to which this activity belongs. For the correct handle for your channel, contact your partner manager. + /// + public string? channelHandle { get; set; } + /// + ///A human-readable description of the marketing event. + /// + public string? description { get; set; } + /// + ///The date and time when the marketing event ended. + /// + public DateTime? endedAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The URL where the marketing event can be managed. + /// + public string? manageUrl { get; set; } + /// + ///The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. + /// + public string? marketingChannelType { get; set; } + /// + ///The URL where the marketing event can be previewed. + /// + public string? previewUrl { get; set; } + /// + ///An optional ID that helps Shopify validate engagement data. + /// + public string? remoteId { get; set; } + /// + ///The date and time when the marketing event is scheduled to end. + /// + public DateTime? scheduledToEndAt { get; set; } + /// + ///Where the `MarketingEvent` occurred and what kind of content was used. + ///Because `utmSource` and `utmMedium` are often used interchangeably, this is + ///based on a combination of `marketingChannel`, `referringDomain`, and `type` to + ///provide a consistent representation for any given piece of marketing + ///regardless of the app that created it. + /// + public string? sourceAndMedium { get; set; } + /// + ///The date and time when the marketing event started. + /// + public DateTime? startedAt { get; set; } + + /// + ///The display text for the marketing event type. + /// + [Obsolete("Use `sourceAndMedium` instead.")] + public string? targetTypeDisplayText { get; set; } + /// + ///The marketing event type. + /// + public string? type { get; set; } + /// + ///The name of the marketing campaign. + /// + public string? utmCampaign { get; set; } + /// + ///The medium that the marketing campaign is using. Example values: `cpc`, `banner`. + /// + public string? utmMedium { get; set; } + /// + ///The referrer of the marketing event. Example values: `google`, `newsletter`. + /// + public string? utmSource { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MarketingEvents. + /// + public class MarketingEventConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MarketingEventEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MarketingEvent and a cursor during pagination. + /// + public class MarketingEventEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MarketingEventEdge. + /// + public MarketingEvent? node { get; set; } + } + + /// + ///The set of valid sort keys for the MarketingEvent query. + /// + public enum MarketingEventSortKeys + { + /// + ///Sort by the `started_at` value. + /// + STARTED_AT, + /// + ///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, + } + + /// + ///The available types of tactics for a marketing activity. + /// + public enum MarketingTactic + { + /// + ///An abandoned cart recovery email. + /// + ABANDONED_CART, + /// + ///An ad, such as a Facebook ad. + /// + AD, + /// + ///An affiliate link. + /// + AFFILIATE, + /// + ///A link. + /// + LINK, + /// + ///A loyalty program. + /// + LOYALTY, + /// + ///A messaging app, such as Facebook Messenger. + /// + MESSAGE, + /// + ///A newsletter. + /// + NEWSLETTER, + /// + ///A notification in the Shopify admin. + /// + NOTIFICATION, + /// + ///A blog post. + /// + POST, + /// + ///A retargeting ad. + /// + RETARGETING, + /// + ///A transactional email. + /// + TRANSACTIONAL, + /// + ///A popup on the online store. + /// + STOREFRONT_APP, + /// + ///Search engine optimization. + /// + SEO, + } + + /// + ///Represents a media interface. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ExternalVideo), typeDiscriminator: "ExternalVideo")] + [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] + [JsonDerivedType(typeof(Model3d), typeDiscriminator: "Model3d")] + [JsonDerivedType(typeof(Video), typeDiscriminator: "Video")] + public interface IMedia : IGraphQLObject + { + public ExternalVideo? AsExternalVideo() => this as ExternalVideo; + public MediaImage? AsMediaImage() => this as MediaImage; + public Model3d? AsModel3d() => this as Model3d; + public Video? AsVideo() => this as Video; + /// + ///A word or phrase to share the nature or contents of a media. + /// + public string? alt { get; } + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///The media content type. + /// + public string? mediaContentType { get; } + /// + ///Any errors which have occurred on the media. + /// + public IEnumerable? mediaErrors { get; } + /// + ///The warnings attached to the media. + /// + public IEnumerable? mediaWarnings { get; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; } + /// + ///Current status of the media. + /// + public string? status { get; } + } + + /// + ///An auto-generated type for paginating through multiple Media. + /// + public class MediaConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MediaEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The possible content types for a media object. + /// + public enum MediaContentType + { + /// + ///A Shopify-hosted video. + /// + VIDEO, + /// + ///An externally hosted video. + /// + EXTERNAL_VIDEO, + /// + ///A 3d model. + /// + MODEL_3D, + /// + ///A Shopify-hosted image. + /// + IMAGE, + } + + /// + ///An auto-generated type which holds one Media and a cursor during pagination. + /// + public class MediaEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MediaEdge. + /// + public IMedia? node { get; set; } + } + + /// + ///Represents a media error. This typically occurs when there is an issue with the media itself causing it to fail validation. + ///Check the media before attempting to upload again. + /// + public class MediaError : GraphQLObject + { + /// + ///Code representing the type of error. + /// + public string? code { get; set; } + /// + ///Additional details regarding the error. + /// + public string? details { get; set; } + /// + ///Translated error message. + /// + public string? message { get; set; } + } + + /// + ///Error types for media. + /// + public enum MediaErrorCode + { + /// + ///Media error has occured for unknown reason. + /// + UNKNOWN, + /// + ///Media could not be processed because the signed URL was invalid. + /// + INVALID_SIGNED_URL, + /// + ///Media could not be processed because the image could not be downloaded. + /// + IMAGE_DOWNLOAD_FAILURE, + /// + ///Media could not be processed because the image could not be processed. + /// + IMAGE_PROCESSING_FAILURE, + /// + ///Media timed out because it is currently being modified by another operation. + /// + MEDIA_TIMEOUT_ERROR, + /// + ///Media could not be created because the external video could not be found. + /// + EXTERNAL_VIDEO_NOT_FOUND, + /// + ///Media could not be created because the external video is not listed or is private. + /// + EXTERNAL_VIDEO_UNLISTED, + /// + ///Media could not be created because the external video has an invalid aspect ratio. + /// + EXTERNAL_VIDEO_INVALID_ASPECT_RATIO, + /// + ///Media could not be created because embed permissions are disabled for this video. + /// + EXTERNAL_VIDEO_EMBED_DISABLED, + /// + ///Media could not be created because video is either not found or still transcoding. + /// + EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING, + /// + ///File could not be processed because the source could not be downloaded. + /// + GENERIC_FILE_DOWNLOAD_FAILURE, + /// + ///File could not be created because the size is too large. + /// + GENERIC_FILE_INVALID_SIZE, + /// + ///Media could not be created because the metadata could not be read. + /// + VIDEO_METADATA_READ_ERROR, + /// + ///Media could not be created because it has an invalid file type. + /// + VIDEO_INVALID_FILETYPE_ERROR, + /// + ///Media could not be created because it does not meet the minimum width requirement. + /// + VIDEO_MIN_WIDTH_ERROR, + /// + ///Media could not be created because it does not meet the maximum width requirement. + /// + VIDEO_MAX_WIDTH_ERROR, + /// + ///Media could not be created because it does not meet the minimum height requirement. + /// + VIDEO_MIN_HEIGHT_ERROR, + /// + ///Media could not be created because it does not meet the maximum height requirement. + /// + VIDEO_MAX_HEIGHT_ERROR, + /// + ///Media could not be created because it does not meet the minimum duration requirement. + /// + VIDEO_MIN_DURATION_ERROR, + /// + ///Media could not be created because it does not meet the maximum duration requirement. + /// + VIDEO_MAX_DURATION_ERROR, + /// + ///Video failed validation. + /// + VIDEO_VALIDATION_ERROR, + /// + ///Model failed validation. + /// + MODEL3D_VALIDATION_ERROR, + /// + ///Media could not be created because the model's thumbnail generation failed. + /// + MODEL3D_THUMBNAIL_GENERATION_ERROR, + /// + ///There was an issue while trying to generate a new thumbnail. + /// + MODEL3D_THUMBNAIL_REGENERATION_ERROR, + /// + ///Media could not be created because the model can't be converted to USDZ format. + /// + MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR, + /// + ///Media could not be created because the model file failed processing. + /// + MODEL3D_GLB_OUTPUT_CREATION_ERROR, + /// + ///Media could not be created because the model file failed processing. + /// + MODEL3D_PROCESSING_FAILURE, + /// + ///Media could not be created because the image is an unsupported file type. + /// + UNSUPPORTED_IMAGE_FILE_TYPE, + /// + ///Media could not be created because the image size is too large. + /// + INVALID_IMAGE_FILE_SIZE, + /// + ///Media could not be created because the image has an invalid aspect ratio. + /// + INVALID_IMAGE_ASPECT_RATIO, + /// + ///Media could not be created because the image's resolution exceeds the max limit. + /// + INVALID_IMAGE_RESOLUTION, + /// + ///Media could not be created because the cumulative file storage limit would be exceeded. + /// + FILE_STORAGE_LIMIT_EXCEEDED, + /// + ///Media could not be created because a file with the same name already exists. + /// + DUPLICATE_FILENAME_ERROR, + } + + /// + ///Host for a Media Resource. + /// + public enum MediaHost + { + /// + ///Host for YouTube embedded videos. + /// + YOUTUBE, + /// + ///Host for Vimeo embedded videos. + /// + VIMEO, + } + + /// + ///An image hosted on Shopify. + /// + public class MediaImage : GraphQLObject, IFile, IHasMetafields, IMedia, INode, IMetafieldReference + { + /// + ///A word or phrase to share the nature or contents of a media. + /// + public string? alt { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Any errors that have occurred on the file. + /// + public IEnumerable? fileErrors { get; set; } + /// + ///The status of the file. + /// + public string? fileStatus { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The image for the media. Returns `null` until `status` is `READY`. + /// + public Image? image { get; set; } + /// + ///The media content type. + /// + public string? mediaContentType { get; set; } + /// + ///Any errors which have occurred on the media. + /// + public IEnumerable? mediaErrors { get; set; } + /// + ///The warnings attached to the media. + /// + public IEnumerable? mediaWarnings { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The MIME type of the image. + /// + public string? mimeType { get; set; } + /// + ///The original source of the image. + /// + public MediaImageOriginalSource? originalSource { get; set; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + /// + ///Current status of the media. + /// + public string? status { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///The original source for an image. + /// + public class MediaImageOriginalSource : GraphQLObject + { + /// + ///The size of the original file in bytes. + /// + public int? fileSize { get; set; } + /// + ///The URL of the original image, valid only for a short period. + /// + public string? url { get; set; } + } + + /// + ///Represents the preview image for a media. + /// + public class MediaPreviewImage : GraphQLObject + { + /// + ///The preview image for the media. Returns `null` until `status` is `READY`. + /// + public Image? image { get; set; } + /// + ///Current status of the preview image. + /// + public string? status { get; set; } + } + + /// + ///The possible statuses for a media preview image. + /// + public enum MediaPreviewImageStatus + { + /// + ///Preview image is uploaded but not yet processed. + /// + UPLOADED, + /// + ///Preview image is being processed. + /// + PROCESSING, + /// + ///Preview image is ready to be displayed. + /// + READY, + /// + ///Preview image processing has failed. + /// + FAILED, + } + + /// + ///The possible statuses for a media object. + /// + public enum MediaStatus + { + /// + ///Media has been uploaded but not yet processed. + /// + UPLOADED, + /// + ///Media is being processed. + /// + PROCESSING, + /// + ///Media is ready to be displayed. + /// + READY, + /// + ///Media processing has failed. + /// + FAILED, + } + + /// + ///Represents an error that happens during execution of a Media query or mutation. + /// + public class MediaUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MediaUserError`. + /// + public enum MediaUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///Video validation failed. + /// + VIDEO_VALIDATION_ERROR, + /// + ///Model validation failed. + /// + MODEL3D_VALIDATION_ERROR, + /// + ///Video creation throttle was exceeded. + /// + VIDEO_THROTTLE_EXCEEDED, + /// + ///Model3d creation throttle was exceeded. + /// + MODEL3D_THROTTLE_EXCEEDED, + /// + ///Exceeded the limit of media per product. + /// + PRODUCT_MEDIA_LIMIT_EXCEEDED, + /// + ///Exceeded the limit of media per shop. + /// + SHOP_MEDIA_LIMIT_EXCEEDED, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Media does not exist. + /// + MEDIA_DOES_NOT_EXIST, + /// + ///Media does not exist on the given product. + /// + MEDIA_DOES_NOT_EXIST_ON_PRODUCT, + /// + ///Only one mediaId is allowed per variant-media input pair. + /// + TOO_MANY_MEDIA_PER_INPUT_PAIR, + /// + ///Exceeded the maximum number of 100 variant-media pairs per mutation call. + /// + MAXIMUM_VARIANT_MEDIA_PAIRS_EXCEEDED, + /// + ///Invalid media type. + /// + INVALID_MEDIA_TYPE, + /// + ///Variant specified in more than one pair. + /// + PRODUCT_VARIANT_SPECIFIED_MULTIPLE_TIMES, + /// + ///Variant does not exist on the given product. + /// + PRODUCT_VARIANT_DOES_NOT_EXIST_ON_PRODUCT, + /// + ///Non-ready media are not supported. + /// + NON_READY_MEDIA, + /// + ///Product variant already has attached media. + /// + PRODUCT_VARIANT_ALREADY_HAS_MEDIA, + /// + ///The specified media is not attached to the specified variant. + /// + MEDIA_IS_NOT_ATTACHED_TO_VARIANT, + /// + ///Media cannot be modified. It is currently being modified by another operation. + /// + MEDIA_CANNOT_BE_MODIFIED, + /// + ///Missing arguments. + /// + MISSING_ARGUMENTS, + } + + /// + ///Represents a media warning. This occurs when there is a non-blocking concern regarding your media. + ///Consider reviewing your media to ensure it is correct and its parameters are as expected. + /// + public class MediaWarning : GraphQLObject + { + /// + ///The code representing the type of warning. + /// + public string? code { get; set; } + /// + ///Translated warning message. + /// + public string? message { get; set; } + } + + /// + ///Warning types for media. + /// + public enum MediaWarningCode + { + /// + ///3D model physical size might be invalid. The dimensions of your model are very small. Consider reviewing your model to ensure they are correct. + /// + MODEL_SMALL_PHYSICAL_SIZE, + /// + ///3D model physical size might be invalid. The dimensions of your model are very large. Consider reviewing your model to ensure they are correct. + /// + MODEL_LARGE_PHYSICAL_SIZE, + } + + /// + ///A menu for display on the storefront. + /// + public class Menu : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///The menus's handle. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the menu is a default. The handle for default menus can't be updated and default menus can't be deleted. + /// + public bool? isDefault { get; set; } + /// + ///A list of items on the menu sorted by position. + /// + public IEnumerable? items { get; set; } + /// + ///The menu's title. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Menus. + /// + public class MenuConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MenuEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `menuCreate` mutation. + /// + public class MenuCreatePayload : GraphQLObject + { + /// + ///The created menu. + /// + public Menu? menu { 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 `MenuCreate`. + /// + public class MenuCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MenuCreateUserError`. + /// + public enum MenuCreateUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The menu cannot be nested more than 3 level deep. + /// + NESTING_TOO_DEEP, + } + + /// + ///Return type for `menuDelete` mutation. + /// + public class MenuDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted menu. + /// + public string? deletedMenuId { 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 `MenuDelete`. + /// + public class MenuDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MenuDeleteUserError`. + /// + public enum MenuDeleteUserErrorCode + { + /// + ///Menu does not exist. + /// + MENU_DOES_NOT_EXIST, + /// + ///Default menu cannot be deleted. + /// + UNABLE_TO_DELETE_DEFAULT_MENU, + } + + /// + ///An auto-generated type which holds one Menu and a cursor during pagination. + /// + public class MenuEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MenuEdge. + /// + public Menu? node { get; set; } + } + + /// + ///A menu item for display on the storefront. + /// + public class MenuItem : GraphQLObject + { + /// + ///A globally-unique ID of the online store navigation menu item. + /// + public string? id { get; set; } + /// + ///List of the menu items nested under this item sorted by position. + /// + public IEnumerable? items { get; set; } + /// + ///The ID of the resource to link to. + /// + public string? resourceId { get; set; } + /// + ///The menu item's tags to filter a collection. + /// + public IEnumerable? tags { get; set; } + /// + ///The menu item's title. + /// + public string? title { get; set; } + /// + ///The menu item's type. + /// + public string? type { get; set; } + /// + ///The menu item's url. + /// + public string? url { get; set; } + } + + /// + ///A menu item type. + /// + public enum MenuItemType + { + /// + ///The frontpage menu item type. + /// + FRONTPAGE, + /// + ///The collection menu item type. + /// + COLLECTION, + /// + ///The collections menu item type. + /// + COLLECTIONS, + /// + ///The product menu item type. + /// + PRODUCT, + /// + ///The catalog menu item type. + /// + CATALOG, + /// + ///The page menu item type. + /// + PAGE, + /// + ///The blog menu item type. + /// + BLOG, + /// + ///The article menu item type. + /// + ARTICLE, + /// + ///The search menu item type. + /// + SEARCH, + /// + ///The shop_policy menu item type. + /// + SHOP_POLICY, + /// + ///The http menu item type. + /// + HTTP, + /// + ///The metaobject menu item type. + /// + METAOBJECT, + /// + ///The customer_account_page menu item type. + /// + CUSTOMER_ACCOUNT_PAGE, + } + + /// + ///The set of valid sort keys for the Menu query. + /// + public enum MenuSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///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, + } + + /// + ///Return type for `menuUpdate` mutation. + /// + public class MenuUpdatePayload : GraphQLObject + { + /// + ///The updated menu. + /// + public Menu? menu { 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 `MenuUpdate`. + /// + public class MenuUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MenuUpdateUserError`. + /// + public enum MenuUpdateUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The menu cannot be nested more than 3 level deep. + /// + NESTING_TOO_DEEP, + } + + /// + ///The class of the discount for combining purposes. + /// + public enum MerchandiseDiscountClass + { + /// + ///Combined as a product discount. + /// + PRODUCT, + /// + ///Combined as an order discount. + /// + ORDER, + } + + /// + ///Merchant approval for accelerated onboarding to channel integration apps. + /// + public class MerchantApprovalSignals : GraphQLObject + { + /// + ///Whether the shop's Shopify Payments account identity is verified. Returns `false` if the identity is unverified or if the shop doesn't have a Shopify Payments account. + /// + public bool? identityVerified { get; set; } + /// + ///Whether Shopify has pre-verified the merchant's business for onboarding to channel integration apps. Returns `false` if the shop isn't marked for verification. + /// + public bool? verifiedByShopify { get; set; } + /// + ///Which tier of the Shopify verification was determined for the merchant's business for onboarding to channel integration apps. + /// + public string? verifiedByShopifyTier { get; set; } + } + + /// + ///Metafields enable you to attach additional information to a Shopify resource, such as a [Product](https://shopify.dev/api/admin-graphql/latest/objects/product) or a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). + ///For more information about where you can attach metafields refer to [HasMetafields](https://shopify.dev/api/admin/graphql/reference/common-objects/HasMetafields). + ///Some examples of the data that metafields enable you to store are specifications, size charts, downloadable documents, release dates, images, or part numbers. + ///Metafields are identified by an owner resource, namespace, and key. and store a value along with type information for that value. + /// + public class Metafield : GraphQLObject, IHasCompareDigest, ILegacyInteroperability, INode + { + /// + ///The data stored in the resource, represented as a digest. + /// + public string? compareDigest { get; set; } + /// + ///The date and time when the metafield was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The metafield definition that the metafield belongs to, if any. + /// + public MetafieldDefinition? definition { get; set; } + /// + ///The description of the metafield. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The data stored in the metafield in JSON format. + /// + public string? jsonValue { get; set; } + /// + ///The unique identifier for the metafield within its namespace. + /// + public string? key { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The container for a group of metafields that the metafield is associated with. + /// + public string? @namespace { get; set; } + /// + ///The resource that the metafield is attached to. + /// + public IHasMetafields? owner { get; set; } + /// + ///The type of resource that the metafield is attached to. + /// + public string? ownerType { get; set; } + /// + ///Returns a reference object if the metafield definition's type is a resource reference. + /// + public IMetafieldReference? reference { get; set; } + /// + ///A list of reference objects if the metafield's type is a resource reference list. + /// + public MetafieldReferenceConnection? references { get; set; } + /// + ///The type of data that is stored in the metafield. + ///Refer to the list of [supported types](https://shopify.dev/apps/metafields/types). + /// + public string? type { get; set; } + /// + ///The date and time when the metafield was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The data stored in the metafield. Always stored as a string, regardless of the metafield's type. + /// + public string? value { get; set; } + } + + /// + ///The access settings for this metafield definition. + /// + public class MetafieldAccess : GraphQLObject + { + /// + ///The default admin access setting used for the metafields under this definition. + /// + public string? admin { get; set; } + /// + ///The customer account access setting used for the metafields under this definition. + /// + public string? customerAccount { get; set; } + + /// + ///The explicit grants for this metafield definition, superseding the default admin access + ///for the specified grantees. + /// + [Obsolete("Explicit grants are [deprecated](https://shopify.dev/changelog/deprecating-explicit-access-grants-for-app-owned-metafields).")] + public IEnumerable? grants { get; set; } + /// + ///The storefront access setting used for the metafields under this definition. + /// + public string? storefront { get; set; } + } + + /// + ///An explicit access grant for the metafields under this definition. + /// + ///Explicit grants are [deprecated](https://shopify.dev/changelog/deprecating-explicit-access-grants-for-app-owned-metafields). + /// + public class MetafieldAccessGrant : GraphQLObject + { + /// + ///The level of access the grantee has. + /// + public string? access { get; set; } + /// + ///The grantee being granted access. + /// + public string? grantee { get; set; } + } + + /// + ///Possible admin access settings for metafields. + /// + public enum MetafieldAdminAccess + { + /// + ///Owner gets full access. No one else has access rights. + /// + PRIVATE, + /// + ///Owner gets full access. All applications and the merchant have read-only access. + /// + PUBLIC_READ, + /// + ///Owner gets full access. All applications and the merchant have read and write access. + /// + PUBLIC_READ_WRITE, + /// + ///Owner gets full access. The merchant has read-only access. No one else has access rights. + /// + MERCHANT_READ, + /// + ///Owner gets full access. The merchant has read and write access. No one else has access rights. + /// + MERCHANT_READ_WRITE, + } + + /// + ///The possible values for setting metafield Admin API access. + /// + public enum MetafieldAdminAccessInput + { + /// + ///Owner gets full access. No one else has access rights. + /// + PRIVATE, + /// + ///Owner gets full access. All applications and the merchant have read-only access. + /// + PUBLIC_READ, + /// + ///Owner gets full access. All applications and the merchant have read and write access. + /// + PUBLIC_READ_WRITE, + /// + ///Owner gets full access. The merchant has read-only access. No one else has access rights. + /// + MERCHANT_READ, + /// + ///Owner gets full access. The merchant has read and write access. No one else has access rights. + /// + MERCHANT_READ_WRITE, + } + + /// + ///Provides the capabilities of a metafield definition. + /// + public class MetafieldCapabilities : GraphQLObject + { + /// + ///Indicate whether a metafield definition is configured for filtering. + /// + public MetafieldCapabilityAdminFilterable? adminFilterable { get; set; } + /// + ///Indicate whether a metafield definition can be used as a smart collection condition. + /// + public MetafieldCapabilitySmartCollectionCondition? smartCollectionCondition { get; set; } + } + + /// + ///Information about the admin filterable capability on a metafield definition. + /// + public class MetafieldCapabilityAdminFilterable : GraphQLObject + { + /// + ///Indicates if the definition is eligible to have the capability. + /// + public bool? eligible { get; set; } + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + /// + ///Determines the metafield definition's filter status for use in admin filtering. + /// + public string? status { get; set; } + } + + /// + ///Information about the smart collection condition capability on a metafield definition. + /// + public class MetafieldCapabilitySmartCollectionCondition : GraphQLObject + { + /// + ///Indicates if the definition is eligible to have the capability. + /// + public bool? eligible { get; set; } + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Metafields. + /// + public class MetafieldConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Defines how the metafields of a definition can be accessed in the Customer Account API. + /// + public enum MetafieldCustomerAccountAccess + { + /// + ///The Customer Account API can read and write metafields. + /// + READ_WRITE, + /// + ///The Customer Account API can read metafields. + /// + READ, + /// + ///The Customer Account API cannot access metafields. + /// + NONE, + } + + /// + ///The possible values for setting metafield Customer Account API access. + /// + public enum MetafieldCustomerAccountAccessInput + { + /// + ///The Customer Account API can read and write metafields. + /// + READ_WRITE, + /// + ///The Customer Account API can read metafields. + /// + READ, + /// + ///The Customer Account API cannot access metafields. + /// + NONE, + } + + /// + ///Metafield definitions enable you to define additional validation constraints for metafields, and enable the + ///merchant to edit metafield values in context. + /// + public class MetafieldDefinition : GraphQLObject, INode + { + /// + ///The access settings associated with the metafield definition. + /// + public MetafieldAccess? access { get; set; } + /// + ///The capabilities of the metafield definition. + /// + public MetafieldCapabilities? capabilities { get; set; } + /// + ///The constraints that determine what subtypes of resources a metafield definition applies to. + /// + public MetafieldDefinitionConstraints? constraints { get; set; } + /// + ///The description of the metafield definition. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The unique identifier for the metafield definition within its namespace. + /// + public string? key { get; set; } + /// + ///The metafields that belong to the metafield definition. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The count of the metafields that belong to the metafield definition. + /// + public int? metafieldsCount { get; set; } + /// + ///The human-readable name of the metafield definition. + /// + public string? name { get; set; } + /// + ///The container for a group of metafields that the metafield definition is associated with. + /// + public string? @namespace { get; set; } + /// + ///The resource type that the metafield definition is attached to. + /// + public string? ownerType { get; set; } + /// + ///The position of the metafield definition in the pinned list. + /// + public int? pinnedPosition { get; set; } + /// + ///The standard metafield definition template associated with the metafield definition. + /// + public StandardMetafieldDefinitionTemplate? standardTemplate { get; set; } + /// + ///The type of data that each of the metafields that belong to the metafield definition will store. + ///Refer to the list of [supported types](https://shopify.dev/apps/metafields/types). + /// + public MetafieldDefinitionType? type { get; set; } + /// + ///Whether the metafield definition can be used as a collection condition. + /// + public bool? useAsCollectionCondition { get; set; } + /// + ///The validation status for the metafields that belong to the metafield definition. + /// + public string? validationStatus { get; set; } + /// + ///A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for + ///the metafields that belong to the metafield definition. For example, for a metafield definition with the + ///type `date`, you can set a minimum date validation so that each of the metafields that belong to it can only + ///store dates after the specified minimum. + /// + public IEnumerable? validations { get; set; } + + /// + ///Whether each of the metafields that belong to the metafield definition are visible from the Storefront API. + /// + [Obsolete("Use `access.storefront` instead.")] + public bool? visibleToStorefrontApi { get; set; } + } + + /// + ///Possible filter statuses associated with a metafield definition for use in admin filtering. + /// + public enum MetafieldDefinitionAdminFilterStatus + { + /// + ///The metafield definition cannot be used for admin filtering. + /// + NOT_FILTERABLE, + /// + ///The metafield definition's metafields are currently being processed for admin filtering. + /// + IN_PROGRESS, + /// + ///The metafield definition allows admin filtering by matching metafield values. + /// + FILTERABLE, + /// + ///The metafield definition has failed to be enabled for admin filtering. + /// + FAILED, + } + + /// + ///An auto-generated type for paginating through multiple MetafieldDefinitions. + /// + public class MetafieldDefinitionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldDefinitionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Metafield definition constraint criteria to filter metafield definitions by. + /// + public enum MetafieldDefinitionConstraintStatus + { + /// + ///Returns both constrained and unconstrained metafield definitions. + /// + CONSTRAINED_AND_UNCONSTRAINED, + /// + ///Only returns metafield definitions that are constrained to a resource subtype. + /// + CONSTRAINED_ONLY, + /// + ///Only returns metafield definitions that are not constrained to a resource subtype. + /// + UNCONSTRAINED_ONLY, + } + + /// + ///A constraint subtype value that the metafield definition applies to. + /// + public class MetafieldDefinitionConstraintValue : GraphQLObject + { + /// + ///The subtype value of the constraint. + /// + public string? value { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MetafieldDefinitionConstraintValues. + /// + public class MetafieldDefinitionConstraintValueConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldDefinitionConstraintValueEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MetafieldDefinitionConstraintValue and a cursor during pagination. + /// + public class MetafieldDefinitionConstraintValueEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldDefinitionConstraintValueEdge. + /// + public MetafieldDefinitionConstraintValue? node { get; set; } + } + + /// + ///The constraints that determine what subtypes of resources a metafield definition applies to. + /// + public class MetafieldDefinitionConstraints : GraphQLObject + { + /// + ///The category of resource subtypes that the definition applies to. + /// + public string? key { get; set; } + /// + ///The specific constraint subtype values that the definition applies to. + /// + public MetafieldDefinitionConstraintValueConnection? values { get; set; } + } + + /// + ///Return type for `metafieldDefinitionCreate` mutation. + /// + public class MetafieldDefinitionCreatePayload : GraphQLObject + { + /// + ///The metafield definition that was created. + /// + public MetafieldDefinition? createdDefinition { 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 `MetafieldDefinitionCreate`. + /// + public class MetafieldDefinitionCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///The index of the array element that's causing the error. + /// + public int? elementIndex { 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 `MetafieldDefinitionCreateUserError`. + /// + public enum MetafieldDefinitionCreateUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The definition limit per owner type has exceeded. + /// + RESOURCE_TYPE_LIMIT_EXCEEDED, + /// + ///The maximum limit of definitions per owner type has exceeded. + /// + LIMIT_EXCEEDED, + /// + ///An invalid option. + /// + INVALID_OPTION, + /// + ///A duplicate option. + /// + DUPLICATE_OPTION, + /// + ///This namespace and key combination is reserved for standard definitions. + /// + RESERVED_NAMESPACE_KEY, + /// + ///The pinned limit has been reached for the owner type. + /// + PINNED_LIMIT_REACHED, + /// + ///This namespace and key combination is already in use for a set of your metafields. + /// + UNSTRUCTURED_ALREADY_EXISTS, + /// + ///A field contains an invalid character. + /// + INVALID_CHARACTER, + /// + ///The definition type is not eligible to be used as collection condition. + /// + TYPE_NOT_ALLOWED_FOR_CONDITIONS, + /// + ///You have reached the maximum allowed definitions for automated collections. + /// + OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS, + /// + ///The maximum limit of grants per definition type has been exceeded. + /// + GRANT_LIMIT_EXCEEDED, + /// + ///The input combination is invalid. + /// + INVALID_INPUT_COMBINATION, + /// + ///The metafield definition capability is invalid. + /// + INVALID_CAPABILITY, + } + + /// + ///Return type for `metafieldDefinitionDelete` mutation. + /// + public class MetafieldDefinitionDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted metafield definition. + /// + public string? deletedDefinitionId { 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 `MetafieldDefinitionDelete`. + /// + public class MetafieldDefinitionDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MetafieldDefinitionDeleteUserError`. + /// + public enum MetafieldDefinitionDeleteUserErrorCode + { + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///Definition not found. + /// + NOT_FOUND, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///Deleting a reference type metafield definition requires deletion of its associated metafields. + /// + REFERENCE_TYPE_DELETION_ERROR, + /// + ///Deleting a definition in a reserved namespace requires deletion of its associated metafields. + /// + RESERVED_NAMESPACE_ORPHANED_METAFIELDS, + /// + ///Action cannot proceed. Definition is currently in use. + /// + METAFIELD_DEFINITION_IN_USE, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + } + + /// + ///An auto-generated type which holds one MetafieldDefinition and a cursor during pagination. + /// + public class MetafieldDefinitionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldDefinitionEdge. + /// + public MetafieldDefinition? node { get; set; } + } + + /// + ///Return type for `metafieldDefinitionPin` mutation. + /// + public class MetafieldDefinitionPinPayload : GraphQLObject + { + /// + ///The metafield definition that was pinned. + /// + public MetafieldDefinition? pinnedDefinition { 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 `MetafieldDefinitionPin`. + /// + public class MetafieldDefinitionPinUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MetafieldDefinitionPinUserError`. + /// + public enum MetafieldDefinitionPinUserErrorCode + { + /// + ///The metafield definition was not found. + /// + NOT_FOUND, + /// + ///The pinned limit has been reached for owner type. + /// + PINNED_LIMIT_REACHED, + /// + ///The metafield definition is already pinned. + /// + ALREADY_PINNED, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + } + + /// + ///Possible metafield definition pinned statuses. + /// + public enum MetafieldDefinitionPinnedStatus + { + /// + ///All metafield definitions. + /// + ANY, + /// + ///Only metafield definitions that are pinned. + /// + PINNED, + /// + ///Only metafield definitions that are not pinned. + /// + UNPINNED, + } + + /// + ///The set of valid sort keys for the MetafieldDefinition query. + /// + public enum MetafieldDefinitionSortKeys + { + /// + ///Sort by the `id` value. + /// + ID, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `pinned_position` value. + /// + PINNED_POSITION, + /// + ///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, + } + + /// + ///The type and name for the optional validation configuration of a metafield. + /// + ///For example, a supported validation might consist of a `max` name and a `number_integer` type. + ///This validation can then be used to enforce a maximum character length for a `single_line_text_field` metafield. + /// + public class MetafieldDefinitionSupportedValidation : GraphQLObject + { + /// + ///The name of the metafield definition validation. + /// + public string? name { get; set; } + /// + ///The type of input for the validation. + /// + public string? type { get; set; } + } + + /// + ///A metafield definition type provides basic foundation and validation for a metafield. + /// + public class MetafieldDefinitionType : GraphQLObject + { + /// + ///The category associated with the metafield definition type. + /// + public string? category { get; set; } + /// + ///The name of the type for the metafield definition. + ///See the list of [supported types](https://shopify.dev/apps/metafields/types). + /// + public string? name { get; set; } + /// + ///The supported validations for a metafield definition type. + /// + public IEnumerable? supportedValidations { get; set; } + /// + ///Whether metafields without a definition can be migrated to a definition of this type. + /// + public bool? supportsDefinitionMigrations { get; set; } + + /// + ///The value type for a metafield created with this definition type. + /// + [Obsolete("`valueType` is deprecated and `name` should be used for type information.")] + public string? valueType { get; set; } + } + + /// + ///Return type for `metafieldDefinitionUnpin` mutation. + /// + public class MetafieldDefinitionUnpinPayload : GraphQLObject + { + /// + ///The metafield definition that was unpinned. + /// + public MetafieldDefinition? unpinnedDefinition { 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 `MetafieldDefinitionUnpin`. + /// + public class MetafieldDefinitionUnpinUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MetafieldDefinitionUnpinUserError`. + /// + public enum MetafieldDefinitionUnpinUserErrorCode + { + /// + ///The metafield definition was not found. + /// + NOT_FOUND, + /// + ///The metafield definition isn't pinned. + /// + NOT_PINNED, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + } + + /// + ///Return type for `metafieldDefinitionUpdate` mutation. + /// + public class MetafieldDefinitionUpdatePayload : GraphQLObject + { + /// + ///The metafield definition that was updated. + /// + public MetafieldDefinition? updatedDefinition { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The asynchronous job updating the metafield definition's validation_status. + /// + public Job? validationJob { get; set; } + } + + /// + ///An error that occurs during the execution of `MetafieldDefinitionUpdate`. + /// + public class MetafieldDefinitionUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///The index of the array element that's causing the error. + /// + public int? elementIndex { 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 `MetafieldDefinitionUpdateUserError`. + /// + public enum MetafieldDefinitionUpdateUserErrorCode + { + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The metafield definition wasn't found. + /// + NOT_FOUND, + /// + ///An invalid input. + /// + INVALID_INPUT, + /// + ///The pinned limit has been reached for the owner type. + /// + PINNED_LIMIT_REACHED, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + /// + ///The definition type is not eligible to be used as collection condition. + /// + TYPE_NOT_ALLOWED_FOR_CONDITIONS, + /// + ///Action cannot proceed. Definition is currently in use. + /// + METAFIELD_DEFINITION_IN_USE, + /// + ///You have reached the maximum allowed definitions for automated collections. + /// + OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS, + /// + ///You cannot change the metaobject definition pointed to by a metaobject reference metafield definition. + /// + METAOBJECT_DEFINITION_CHANGED, + /// + ///The maximum limit of grants per definition type has been exceeded. + /// + GRANT_LIMIT_EXCEEDED, + /// + ///The input combination is invalid. + /// + INVALID_INPUT_COMBINATION, + /// + ///The metafield definition capability is invalid. + /// + INVALID_CAPABILITY, + /// + ///The metafield definition capability cannot be disabled. + /// + CAPABILITY_CANNOT_BE_DISABLED, + } + + /// + ///A configured metafield definition validation. + /// + ///For example, for a metafield definition of `number_integer` type, you can set a validation with the name `max` + ///and a value of `15`. This validation will ensure that the value of the metafield is a number less than or equal to 15. + /// + ///Refer to the [list of supported validations](https://shopify.dev/api/admin/graphql/reference/common-objects/metafieldDefinitionTypes#examples-Fetch_all_metafield_definition_types). + /// + public class MetafieldDefinitionValidation : GraphQLObject + { + /// + ///The validation name. + /// + public string? name { get; set; } + /// + ///The name for the metafield type of this validation. + /// + public string? type { get; set; } + /// + ///The validation value. + /// + public string? value { get; set; } + } + + /// + ///Possible metafield definition validation statuses. + /// + public enum MetafieldDefinitionValidationStatus + { + /// + ///All of this definition's metafields are valid. + /// + ALL_VALID, + /// + ///Asynchronous validation of this definition's metafields is in progress. + /// + IN_PROGRESS, + /// + ///Some of this definition's metafields are invalid. + /// + SOME_INVALID, + } + + /// + ///Return type for `metafieldDelete` mutation. + /// + public class MetafieldDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted metafield. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Metafield and a cursor during pagination. + /// + public class MetafieldEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldEdge. + /// + public Metafield? node { get; set; } + } + + /// + ///Possible access levels for explicit metafield access grants. + /// + public enum MetafieldGrantAccessLevel + { + /// + ///Read metafield access. + /// + READ, + /// + ///Read and write metafield access. + /// + 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. + /// + public enum MetafieldOwnerType + { + /// + ///The Api Permission metafield owner type. + /// + API_PERMISSION, + /// + ///The Company metafield owner type. + /// + COMPANY, + /// + ///The Company Location metafield owner type. + /// + COMPANY_LOCATION, + /// + ///The Payment Customization metafield owner type. + /// + PAYMENT_CUSTOMIZATION, + /// + ///The Validation metafield owner type. + /// + VALIDATION, + /// + ///The Customer metafield owner type. + /// + CUSTOMER, + /// + ///The Delivery Customization metafield owner type. + /// + DELIVERY_CUSTOMIZATION, + /// + ///The draft order metafield owner type. + /// + DRAFTORDER, + /// + ///The GiftCardTransaction metafield owner type. + /// + GIFT_CARD_TRANSACTION, + /// + ///The Market metafield owner type. + /// + MARKET, + /// + ///The Cart Transform metafield owner type. + /// + CARTTRANSFORM, + /// + ///The Collection metafield owner type. + /// + COLLECTION, + /// + ///The Media Image metafield owner type. + /// + [Obsolete("`MEDIA_IMAGE` is deprecated.")] + MEDIA_IMAGE, + /// + ///The Product metafield owner type. + /// + PRODUCT, + /// + ///The Product Variant metafield owner type. + /// + PRODUCTVARIANT, + /// + ///The Selling Plan metafield owner type. + /// + SELLING_PLAN, + /// + ///The Article metafield owner type. + /// + ARTICLE, + /// + ///The Blog metafield owner type. + /// + BLOG, + /// + ///The Page metafield owner type. + /// + PAGE, + /// + ///The Fulfillment Constraint Rule metafield owner type. + /// + FULFILLMENT_CONSTRAINT_RULE, + /// + ///The Order Routing Location Rule metafield owner type. + /// + ORDER_ROUTING_LOCATION_RULE, + /// + ///The Discount metafield owner type. + /// + DISCOUNT, + /// + ///The Order metafield owner type. + /// + ORDER, + /// + ///The Location metafield owner type. + /// + LOCATION, + /// + ///The Shop metafield owner type. + /// + SHOP, + } + + /// + ///The resource referenced by the metafield value. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(GenericFile), typeDiscriminator: "GenericFile")] + [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] + [JsonDerivedType(typeof(Metaobject), typeDiscriminator: "Metaobject")] + [JsonDerivedType(typeof(Model3d), typeDiscriminator: "Model3d")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + [JsonDerivedType(typeof(TaxonomyValue), typeDiscriminator: "TaxonomyValue")] + [JsonDerivedType(typeof(Video), typeDiscriminator: "Video")] + public interface IMetafieldReference : IGraphQLObject + { + public Collection? AsCollection() => this as Collection; + public Company? AsCompany() => this as Company; + public Customer? AsCustomer() => this as Customer; + 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 Order? AsOrder() => this as Order; + public Page? AsPage() => this as Page; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + public TaxonomyValue? AsTaxonomyValue() => this as TaxonomyValue; + public Video? AsVideo() => this as Video; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MetafieldReferences. + /// + public class MetafieldReferenceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldReferenceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MetafieldReference and a cursor during pagination. + /// + public class MetafieldReferenceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldReferenceEdge. + /// + public IMetafieldReference? node { get; set; } + } + + /// + ///Types of resources that may use metafields to reference other resources. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AppInstallation), typeDiscriminator: "AppInstallation")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [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")] + [JsonDerivedType(typeof(DiscountCodeNode), typeDiscriminator: "DiscountCodeNode")] + [JsonDerivedType(typeof(DiscountNode), typeDiscriminator: "DiscountNode")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(FulfillmentOrder), typeDiscriminator: "FulfillmentOrder")] + [JsonDerivedType(typeof(Location), typeDiscriminator: "Location")] + [JsonDerivedType(typeof(Market), typeDiscriminator: "Market")] + [JsonDerivedType(typeof(Metaobject), typeDiscriminator: "Metaobject")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(PaymentCustomization), typeDiscriminator: "PaymentCustomization")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + [JsonDerivedType(typeof(Shop), typeDiscriminator: "Shop")] + public interface IMetafieldReferencer : IGraphQLObject + { + public AppInstallation? AsAppInstallation() => this as AppInstallation; + public Article? AsArticle() => this as Article; + public Blog? AsBlog() => this as Blog; + 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; + public DiscountCodeNode? AsDiscountCodeNode() => this as DiscountCodeNode; + public DiscountNode? AsDiscountNode() => this as DiscountNode; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public FulfillmentOrder? AsFulfillmentOrder() => this as FulfillmentOrder; + public Location? AsLocation() => this as Location; + public Market? AsMarket() => this as Market; + public Metaobject? AsMetaobject() => this as Metaobject; + public Order? AsOrder() => this as Order; + public Page? AsPage() => this as Page; + public PaymentCustomization? AsPaymentCustomization() => this as PaymentCustomization; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + public Shop? AsShop() => this as Shop; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///Defines a relation between two resources via a reference metafield. + ///The referencer owns the joining field with a given namespace and key, + ///while the target is referenced by the field. + /// + public class MetafieldRelation : GraphQLObject + { + /// + ///The key of the field making the reference. + /// + public string? key { get; set; } + /// + ///The name of the field making the reference. + /// + public string? name { get; set; } + /// + ///The namespace of the metafield making the reference, or type of the metaobject. + /// + public string? @namespace { get; set; } + /// + ///The resource making the reference. + /// + public IMetafieldReferencer? referencer { get; set; } + /// + ///The referenced resource. + /// + public IMetafieldReference? target { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MetafieldRelations. + /// + public class MetafieldRelationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldRelationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one MetafieldRelation and a cursor during pagination. + /// + public class MetafieldRelationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldRelationEdge. + /// + public MetafieldRelation? node { get; set; } + } + + /// + ///Defines how the metafields of a definition can be accessed in Storefront API surface areas, including Liquid and the GraphQL Storefront API. + /// + public enum MetafieldStorefrontAccess + { + /// + ///Metafields are accessible in the GraphQL Storefront API and online store Liquid templates. + /// + PUBLIC_READ, + /// + ///Metafields are not accessible in any Storefront API surface area. + /// + NONE, + /// + ///Metafields are accessible in online store Liquid templates but not in the GraphQL Storefront API. This access level is deprecated and can not be set. + /// + LEGACY_LIQUID_ONLY, + } + + /// + ///The possible values for setting metafield storefront access. + ///Storefront accesss governs both Liquid and the GraphQL Storefront API. + /// + public enum MetafieldStorefrontAccessInput + { + /// + ///Metafields are accessible in the GraphQL Storefront API and online store Liquid templates. + /// + PUBLIC_READ, + /// + ///Metafields are not accessible in any Storefront API surface area. + /// + NONE, + } + + /// + ///By default, the Storefront API can't read metafields. To make specific metafields visible in the Storefront API, + ///you need to create a `MetafieldStorefrontVisibility` record. A `MetafieldStorefrontVisibility` record is a list + ///of the metafields, defined by the `owner_type`, `namespace`, and `key`, to make visible in the Storefront API. + /// + ///Learn about [exposing metafields in the Storefront API] + ///(https://shopify.dev/custom-storefronts/products-collections/metafields) + ///for more details. + /// + public class MetafieldStorefrontVisibility : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The date and time when the metafield was set to visible in the Storefront API. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The key of a metafield to make visible in the Storefront API. + /// + public string? key { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The namespace of a metafield to make visible in the Storefront API. + /// + public string? @namespace { get; set; } + /// + ///The owner type of a metafield to make visible in the Storefront API. + /// + public string? ownerType { get; set; } + /// + ///The date and time when the `MetafieldStorefrontVisilibty` record was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MetafieldStorefrontVisibilities. + /// + public class MetafieldStorefrontVisibilityConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetafieldStorefrontVisibilityEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `metafieldStorefrontVisibilityCreate` mutation. + /// + public class MetafieldStorefrontVisibilityCreatePayload : GraphQLObject + { + /// + ///The `MetafieldStorefrontVisibility` that was created. + /// + public MetafieldStorefrontVisibility? metafieldStorefrontVisibility { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `metafieldStorefrontVisibilityDelete` mutation. + /// + public class MetafieldStorefrontVisibilityDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted `MetafieldStorefrontVisibility` record. + /// + public string? deletedMetafieldStorefrontVisibilityId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MetafieldStorefrontVisibility and a cursor during pagination. + /// + public class MetafieldStorefrontVisibilityEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetafieldStorefrontVisibilityEdge. + /// + public MetafieldStorefrontVisibility? node { get; set; } + } + + /// + ///Possible metafield validation statuses. + /// + public enum MetafieldValidationStatus + { + /// + ///Any validation status (valid or invalid). + /// + ANY, + /// + ///Valid (according to definition). + /// + VALID, + /// + ///Invalid (according to definition). + /// + INVALID, + } + + /// + ///Legacy type information for the stored value. + ///Replaced by `type`. + /// + public enum MetafieldValueType + { + /// + ///A text field. + /// + STRING, + /// + ///A whole number. + /// + INTEGER, + /// + ///A JSON string. + /// + JSON_STRING, + /// + ///A `true` or `false` value. + /// + 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. + /// + public class MetafieldsSetPayload : GraphQLObject + { + /// + ///The list of metafields that were set. + /// + public IEnumerable? metafields { 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 `MetafieldsSet`. + /// + public class MetafieldsSetUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///The index of the array element that's causing the error. + /// + public int? elementIndex { 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 `MetafieldsSetUserError`. + /// + public enum MetafieldsSetUserErrorCode + { + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, + /// + ///The metafield has been modified since it was loaded. + /// + STALE_OBJECT, + /// + ///The compareDigest is invalid. + /// + INVALID_COMPARE_DIGEST, + /// + ///The type is invalid. + /// + INVALID_TYPE, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///ApiPermission metafields can only be created or updated by the app owner. + /// + APP_NOT_AUTHORIZED, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + } + + /// + ///Provides an object instance represented by a MetaobjectDefinition. + /// + public class Metaobject : GraphQLObject, INode, IMetafieldReference, IMetafieldReferencer + { + /// + ///Metaobject capabilities for this Metaobject. + /// + public MetaobjectCapabilityData? capabilities { get; set; } + /// + ///The app used to create the object. + /// + public App? createdBy { get; set; } + /// + ///The app used to create the object. + /// + public App? createdByApp { get; set; } + /// + ///The staff member who created the metaobject. + /// + public StaffMember? createdByStaff { get; set; } + /// + ///The MetaobjectDefinition that models this object type. + /// + public MetaobjectDefinition? definition { get; set; } + /// + ///The preferred display name field value of the metaobject. + /// + public string? displayName { get; set; } + /// + ///The field for an object key, or null if the key has no field definition. + /// + public MetaobjectField? field { get; set; } + /// + ///All ordered fields of the metaobject with their definitions and values. + /// + public IEnumerable? fields { get; set; } + /// + ///The unique handle of the object, useful as a custom ID. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///List of back references metafields that belong to the resource. + /// + public MetafieldRelationConnection? referencedBy { get; set; } + + /// + ///The staff member who created the metaobject. + /// + [Obsolete("Use `createdByStaff` instead.")] + public StaffMember? staffMember { get; set; } + /// + ///The recommended field to visually represent this metaobject. May be a file reference or color field. + /// + public MetaobjectField? thumbnailField { get; set; } + /// + ///The type of the metaobject. + /// + public string? type { get; set; } + /// + ///When the object was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Provides metaobject definition's access configuration. + /// + public class MetaobjectAccess : GraphQLObject + { + /// + ///Access configuration for Admin API surface areas, including the GraphQL Admin API. + /// + public string? admin { get; set; } + /// + ///Access configuration for Storefront surface areas, including the GraphQL Storefront API and Liquid. + /// + public string? storefront { get; set; } + } + + /// + ///Defines how the metaobjects of a definition can be accessed in admin API surface areas. + /// + public enum MetaobjectAdminAccess + { + /// + ///Only the application that owns a metaobject can read and write to it. + /// + PRIVATE, + /// + ///Applications that act on behalf of merchants can read metaobjects. + ///Only the owning application can write metaobjects. + /// + MERCHANT_READ, + /// + ///The owning application, as well as applications that act on behalf of merchants can read and write metaobjects. + ///No other applications can read or write metaobjects. + /// + MERCHANT_READ_WRITE, + /// + ///All applications with the `metaobjects` access scope can read metaobjects. + ///Only the owning application can write metaobjects. + /// + PUBLIC_READ, + /// + ///All applications with the `metaobjects` access scope can read and write metaobjects. + /// + PUBLIC_READ_WRITE, + } + + /// + ///Return type for `metaobjectBulkDelete` mutation. + /// + public class MetaobjectBulkDeletePayload : GraphQLObject + { + /// + ///The asynchronous job that deletes the metaobjects. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Provides the capabilities of a metaobject definition. + /// + public class MetaobjectCapabilities : GraphQLObject + { + /// + ///Indicates whether a metaobject definition can be displayed as a page on the Online Store. + /// + public MetaobjectCapabilitiesOnlineStore? onlineStore { get; set; } + /// + ///Indicate whether a metaobject definition is publishable. + /// + public MetaobjectCapabilitiesPublishable? publishable { get; set; } + /// + ///Indicate whether a metaobject definition is renderable and exposes SEO data. + /// + public MetaobjectCapabilitiesRenderable? renderable { get; set; } + /// + ///Indicate whether a metaobject definition is translatable. + /// + public MetaobjectCapabilitiesTranslatable? translatable { get; set; } + } + + /// + ///The Online Store capability of a metaobject definition. + /// + public class MetaobjectCapabilitiesOnlineStore : GraphQLObject + { + /// + ///The data associated with the Online Store capability. + /// + public MetaobjectCapabilityDefinitionDataOnlineStore? data { get; set; } + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///The publishable capability of a metaobject definition. + /// + public class MetaobjectCapabilitiesPublishable : GraphQLObject + { + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///The renderable capability of a metaobject definition. + /// + public class MetaobjectCapabilitiesRenderable : GraphQLObject + { + /// + ///The data associated with the renderable capability. + /// + public MetaobjectCapabilityDefinitionDataRenderable? data { get; set; } + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///The translatable capability of a metaobject definition. + /// + public class MetaobjectCapabilitiesTranslatable : GraphQLObject + { + /// + ///Indicates if the capability is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///Provides the capabilities of a metaobject. + /// + public class MetaobjectCapabilityData : GraphQLObject + { + /// + ///The Online Store capability for this metaobject. + /// + public MetaobjectCapabilityDataOnlineStore? onlineStore { get; set; } + /// + ///The publishable capability for this metaobject. + /// + public MetaobjectCapabilityDataPublishable? publishable { get; set; } + } + + /// + ///The Online Store capability for the parent metaobject. + /// + public class MetaobjectCapabilityDataOnlineStore : GraphQLObject + { + /// + ///The theme template used when viewing the metaobject in a store. + /// + public string? templateSuffix { get; set; } + } + + /// + ///The publishable capability for the parent metaobject. + /// + public class MetaobjectCapabilityDataPublishable : GraphQLObject + { + /// + ///The visibility status of this metaobject across all channels. + /// + public string? status { get; set; } + } + + /// + ///The Online Store capability data for the metaobject definition. + /// + public class MetaobjectCapabilityDefinitionDataOnlineStore : GraphQLObject + { + /// + ///Flag indicating if a sufficient number of redirects are available to redirect all published entries. + /// + public bool? canCreateRedirects { get; set; } + /// + ///The URL handle for accessing pages of this metaobject type in the Online Store. + /// + public string? urlHandle { get; set; } + } + + /// + ///The renderable capability data for the metaobject definition. + /// + public class MetaobjectCapabilityDefinitionDataRenderable : GraphQLObject + { + /// + ///The metaobject field used as an alias for the SEO page description. + /// + public string? metaDescriptionKey { get; set; } + /// + ///The metaobject field used as an alias for the SEO page title. + /// + public string? metaTitleKey { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Metaobjects. + /// + public class MetaobjectConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetaobjectEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `metaobjectCreate` mutation. + /// + public class MetaobjectCreatePayload : GraphQLObject + { + /// + ///The created metaobject. + /// + public Metaobject? metaobject { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Provides the definition of a generic object structure composed of metafields. + /// + public class MetaobjectDefinition : GraphQLObject, INode + { + /// + ///Access configuration for the metaobject definition. + /// + public MetaobjectAccess? access { get; set; } + /// + ///The capabilities of the metaobject definition. + /// + public MetaobjectCapabilities? capabilities { get; set; } + /// + ///The app used to create the metaobject definition. + /// + public App? createdByApp { get; set; } + /// + ///The staff member who created the metaobject definition. + /// + public StaffMember? createdByStaff { get; set; } + /// + ///The administrative description. + /// + public string? description { get; set; } + /// + ///The key of a field to reference as the display name for each object. + /// + public string? displayNameKey { get; set; } + /// + ///The fields defined for this object type. + /// + public IEnumerable? fieldDefinitions { get; set; } + /// + ///Whether this metaobject definition has field whose type can visually represent a metaobject with the `thumbnailField`. + /// + public bool? hasThumbnailField { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A paginated connection to the metaobjects associated with the definition. + /// + public MetaobjectConnection? metaobjects { get; set; } + /// + ///The count of metaobjects created for the definition. + /// + public int? metaobjectsCount { get; set; } + /// + ///The human-readable name. + /// + public string? name { get; set; } + /// + ///The type of the object definition. Defines the namespace of associated metafields. + /// + public string? type { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MetaobjectDefinitions. + /// + public class MetaobjectDefinitionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MetaobjectDefinitionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `metaobjectDefinitionCreate` mutation. + /// + public class MetaobjectDefinitionCreatePayload : GraphQLObject + { + /// + ///The created metaobject definition. + /// + public MetaobjectDefinition? metaobjectDefinition { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `metaobjectDefinitionDelete` mutation. + /// + public class MetaobjectDefinitionDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted metaobjects definition. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MetaobjectDefinition and a cursor during pagination. + /// + public class MetaobjectDefinitionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetaobjectDefinitionEdge. + /// + public MetaobjectDefinition? node { get; set; } + } + + /// + ///Return type for `metaobjectDefinitionUpdate` mutation. + /// + public class MetaobjectDefinitionUpdatePayload : GraphQLObject + { + /// + ///The updated metaobject definition. + /// + public MetaobjectDefinition? metaobjectDefinition { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `metaobjectDelete` mutation. + /// + public class MetaobjectDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted metaobject. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Metaobject and a cursor during pagination. + /// + public class MetaobjectEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MetaobjectEdge. + /// + public Metaobject? node { get; set; } + } + + /// + ///Provides a field definition and the data value assigned to it. + /// + public class MetaobjectField : GraphQLObject + { + /// + ///The field definition for this object key. + /// + public MetaobjectFieldDefinition? definition { get; set; } + /// + ///The assigned field value in JSON format. + /// + public string? jsonValue { get; set; } + /// + ///The object key of this field. + /// + public string? key { get; set; } + /// + ///For resource reference fields, provides the referenced object. + /// + public IMetafieldReference? reference { get; set; } + /// + ///For resource reference list fields, provides the list of referenced objects. + /// + public MetafieldReferenceConnection? references { get; set; } + /// + ///For file reference or color fields, provides visual attributes for this field. + /// + public MetaobjectThumbnail? thumbnail { get; set; } + /// + ///The type of the field. + /// + public string? type { get; set; } + /// + ///The assigned field value, always stored as a string regardless of the field type. + /// + public string? value { get; set; } + } + + /// + ///Defines a field for a MetaobjectDefinition with properties + ///such as the field's data type and validations. + /// + public class MetaobjectFieldDefinition : GraphQLObject + { + /// + ///The administrative description. + /// + public string? description { get; set; } + /// + ///A key name used to identify the field within the metaobject composition. + /// + public string? key { get; set; } + /// + ///The human-readable name. + /// + public string? name { get; set; } + /// + ///Required status of the field within the metaobject composition. + /// + public bool? required { get; set; } + /// + ///The type of data that the field stores. + /// + public MetafieldDefinitionType? type { get; set; } + /// + ///A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for + ///the field. For example, a field with the type `date` can set a minimum date requirement. + /// + public IEnumerable? validations { get; set; } + } + + /// + ///Defines visibility status for metaobjects. + /// + public enum MetaobjectStatus + { + /// + ///The metaobjects is an internal record. + /// + DRAFT, + /// + ///The metaobjects is active for public use. + /// + ACTIVE, + } + + /// + ///Defines how the metaobjects of a definition can be accessed in Storefront API surface areas, including Liquid and the GraphQL Storefront API. + /// + public enum MetaobjectStorefrontAccess + { + /// + ///Metaobjects are not accessible in any Storefront API surface area. + /// + NONE, + /// + ///Metaobjects are accessible in the GraphQL Storefront API by any application with the `unauthenticated_read_metaobjects` access scope. + ///Metaobjects are accessible in online store Liquid templates. + /// + PUBLIC_READ, + } + + /// + ///Provides attributes for visual representation. + /// + public class MetaobjectThumbnail : GraphQLObject + { + /// + ///The file to be used for visual representation of this metaobject. + /// + public IFile? file { get; set; } + /// + ///The hexadecimal color code to be used for respresenting this metaobject. + /// + public string? hex { get; set; } + } + + /// + ///Return type for `metaobjectUpdate` mutation. + /// + public class MetaobjectUpdatePayload : GraphQLObject + { + /// + ///The updated metaobject. + /// + public Metaobject? metaobject { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `metaobjectUpsert` mutation. + /// + public class MetaobjectUpsertPayload : GraphQLObject + { + /// + ///The created or updated metaobject. + /// + public Metaobject? metaobject { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors encountered while managing metaobject resources. + /// + public class MetaobjectUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///The index of the failing list element in an array. + /// + public int? elementIndex { get; set; } + /// + ///The key of the failing object element. + /// + public string? elementKey { 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 `MetaobjectUserError`. + /// + public enum MetaobjectUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The metafield type is invalid. + /// + INVALID_TYPE, + /// + ///The value is invalid for the metafield type or the definition options. + /// + INVALID_VALUE, + /// + ///The value for the metafield definition option was invalid. + /// + INVALID_OPTION, + /// + ///Duplicate inputs were provided for this field key. + /// + DUPLICATE_FIELD_INPUT, + /// + ///No metaobject definition found for this type. + /// + UNDEFINED_OBJECT_TYPE, + /// + ///No field definition found for this key. + /// + UNDEFINED_OBJECT_FIELD, + /// + ///The specified field key is already in use. + /// + OBJECT_FIELD_TAKEN, + /// + ///Missing required fields were found for this object. + /// + OBJECT_FIELD_REQUIRED, + /// + ///The requested record couldn't be found. + /// + RECORD_NOT_FOUND, + /// + ///An unexpected error occurred. + /// + INTERNAL_ERROR, + /// + ///The maximum number of metaobjects definitions has been exceeded. + /// + MAX_DEFINITIONS_EXCEEDED, + /// + ///The maximum number of metaobjects per shop has been exceeded. + /// + MAX_OBJECTS_EXCEEDED, + /// + ///The targeted object cannot be modified. + /// + IMMUTABLE, + /// + ///Not authorized. + /// + NOT_AUTHORIZED, + /// + ///The provided name is reserved for system use. + /// + RESERVED_NAME, + /// + ///The display name cannot be the same when using the metaobject as a product option. + /// + DISPLAY_NAME_CONFLICT, + /// + ///The capability you are using is not enabled. + /// + CAPABILITY_NOT_ENABLED, + /// + ///The Online Store URL handle is already taken. + /// + URL_HANDLE_TAKEN, + /// + ///The Online Store URL handle is invalid. + /// + URL_HANDLE_INVALID, + /// + ///The Online Store URL handle cannot be blank. + /// + URL_HANDLE_BLANK, + /// + ///Renderable data input is referencing an invalid field. + /// + FIELD_TYPE_INVALID, + /// + ///The input is missing required keys. + /// + MISSING_REQUIRED_KEYS, + } + + /// + ///The set of valid sort keys for the MethodDefinition query. + /// + public enum MethodDefinitionSortKeys + { + /// + ///Sort by the `rate_provider_type` value. + /// + RATE_PROVIDER_TYPE, + /// + ///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, + } + + /// + ///You can use the `MobilePlatformApplication` resource to enable + ///[shared web credentials](https://developer.apple.com/documentation/security/shared_web_credentials) for Shopify iOS apps, + ///as well as to create [iOS universal link](https://developer.apple.com/ios/universal-links/) + ///or [Android app link](https://developer.android.com/training/app-links/) verification endpoints for merchant Shopify iOS or Android apps. + ///Shared web credentials let iOS users access a native app after logging into the respective website in Safari without re-entering + ///their username and password. If a user changes their credentials in the app, then those changes are reflected in Safari. + ///You must use a custom domain to integrate shared web credentials with Shopify. With each platform's link system, + ///users can tap a link to a shop's website and get seamlessly redirected to a merchant's installed app without going + ///through a browser or manually selecting an app. + /// + ///For full configuration instructions on iOS shared web credentials, + ///see the [associated domains setup](https://developer.apple.com/documentation/security/password_autofill/setting_up_an_app_s_associated_domains) technical documentation. + /// + ///For full configuration instructions on iOS universal links or Android App Links, + ///see the respective [iOS universal link](https://developer.apple.com/documentation/uikit/core_app/allowing_apps_and_websites_to_link_to_your_content) + ///or [Android app link](https://developer.android.com/training/app-links) technical documentation. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AndroidApplication), typeDiscriminator: "AndroidApplication")] + [JsonDerivedType(typeof(AppleApplication), typeDiscriminator: "AppleApplication")] + public interface IMobilePlatformApplication : IGraphQLObject + { + public AndroidApplication? AsAndroidApplication() => this as AndroidApplication; + public AppleApplication? AsAppleApplication() => this as AppleApplication; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple MobilePlatformApplications. + /// + public class MobilePlatformApplicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in MobilePlatformApplicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `mobilePlatformApplicationCreate` mutation. + /// + public class MobilePlatformApplicationCreatePayload : GraphQLObject + { + /// + ///Created mobile platform application. + /// + public IMobilePlatformApplication? mobilePlatformApplication { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `mobilePlatformApplicationDelete` mutation. + /// + public class MobilePlatformApplicationDeletePayload : GraphQLObject + { + /// + ///The ID of the mobile platform application that was just deleted. + /// + public string? deletedMobilePlatformApplicationId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one MobilePlatformApplication and a cursor during pagination. + /// + public class MobilePlatformApplicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of MobilePlatformApplicationEdge. + /// + public IMobilePlatformApplication? node { get; set; } + } + + /// + ///Return type for `mobilePlatformApplicationUpdate` mutation. + /// + public class MobilePlatformApplicationUpdatePayload : GraphQLObject + { + /// + ///Created mobile platform application. + /// + public IMobilePlatformApplication? mobilePlatformApplication { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error in the input of a mutation. + /// + public class MobilePlatformApplicationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `MobilePlatformApplicationUserError`. + /// + public enum MobilePlatformApplicationUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is too long. + /// + TOO_LONG, + } + + /// + ///Represents a Shopify hosted 3D model. + /// + public class Model3d : GraphQLObject, IFile, IMedia, INode, IMetafieldReference + { + /// + ///A word or phrase to describe the contents or the function of a file. + /// + public string? alt { get; set; } + /// + ///The 3d model's bounding box information. + /// + public Model3dBoundingBox? boundingBox { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Any errors that have occurred on the file. + /// + public IEnumerable? fileErrors { get; set; } + /// + ///The status of the file. + /// + public string? fileStatus { get; set; } + /// + ///The 3d model's filename. + /// + public string? filename { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The media content type. + /// + public string? mediaContentType { get; set; } + /// + ///Any errors which have occurred on the media. + /// + public IEnumerable? mediaErrors { get; set; } + /// + ///The warnings attached to the media. + /// + public IEnumerable? mediaWarnings { get; set; } + /// + ///The 3d model's original source. + /// + public Model3dSource? originalSource { get; set; } + /// + ///The preview image for the media. + /// + public MediaPreviewImage? preview { get; set; } + /// + ///The 3d model's sources. + /// + public IEnumerable? sources { get; set; } + /// + ///Current status of the media. + /// + public string? status { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Bounding box information of a 3d model. + /// + public class Model3dBoundingBox : GraphQLObject + { + /// + ///Size in meters of the smallest volume which contains the 3d model. + /// + public Vector3? size { get; set; } + } + + /// + ///A source for a Shopify-hosted 3d model. + /// + ///Types of sources include GLB and USDZ formatted 3d models, where the former + ///is an original 3d model and the latter has been converted from the original. + /// + ///If the original source is in GLB format and over 15 MBs in size, then both the + ///original and the USDZ formatted source are optimized to reduce the file size. + /// + public class Model3dSource : GraphQLObject + { + /// + ///The 3d model source's filesize. + /// + public int? filesize { get; set; } + /// + ///The 3d model source's format. + /// + public string? format { get; set; } + /// + ///The 3d model source's MIME type. + /// + public string? mimeType { get; set; } + /// + ///The 3d model source's URL. + /// + public string? url { get; set; } + } + + /// + ///A collection of monetary values in their respective currencies. Typically used in the context of multi-currency pricing and transactions, + ///when an amount in the shop's currency is converted to the customer's currency of choice (the presentment currency). + /// + public class MoneyBag : GraphQLObject + { + /// + ///Amount in presentment currency. + /// + public MoneyV2? presentmentMoney { get; set; } + /// + ///Amount in shop currency. + /// + public MoneyV2? shopMoney { get; set; } + } + + /// + ///A monetary value with currency. + /// + public class MoneyV2 : GraphQLObject, IDeliveryConditionCriteria, IPricingValue, ISellingPlanCheckoutChargeValue, ISellingPlanPricingPolicyAdjustmentValue + { + /// + ///Decimal money amount. + /// + public decimal? amount { get; set; } + /// + ///Currency of the money. + /// + public string? currencyCode { get; set; } + } + + /// + ///The schema's entry point for all mutation operations. + /// + public class Mutation : GraphQLObject + { + /// + ///Updates the email state value for an abandonment. + /// + [Obsolete("Use `abandonmentUpdateActivitiesDeliveryStatuses` instead.")] + public AbandonmentEmailStateUpdatePayload? abandonmentEmailStateUpdate { get; set; } + /// + ///Updates the marketing activities delivery statuses for an abandonment. + /// + public AbandonmentUpdateActivitiesDeliveryStatusesPayload? abandonmentUpdateActivitiesDeliveryStatuses { get; set; } + /// + ///Charges a shop for features or services one time. + ///This type of charge is recommended for apps that aren't billed on a recurring basis. + ///Test and demo shops aren't charged. + /// + public AppPurchaseOneTimeCreatePayload? appPurchaseOneTimeCreate { get; set; } + /// + ///Revokes access scopes previously granted for an app installation. + /// + public AppRevokeAccessScopesPayload? appRevokeAccessScopes { get; set; } + /// + ///Cancels an app subscription on a store. + /// + public AppSubscriptionCancelPayload? appSubscriptionCancel { get; set; } + /// + ///Allows an app to charge a store for features or services on a recurring basis. + /// + public AppSubscriptionCreatePayload? appSubscriptionCreate { get; set; } + /// + ///Updates the capped amount on the usage pricing plan of an app subscription line item. + /// + public AppSubscriptionLineItemUpdatePayload? appSubscriptionLineItemUpdate { get; set; } + /// + ///Extends the trial of an app subscription. + /// + public AppSubscriptionTrialExtendPayload? appSubscriptionTrialExtend { get; set; } + /// + ///Enables an app to charge a store for features or services on a per-use basis. + ///The usage charge value is counted towards the `cappedAmount` limit that was specified in the `appUsagePricingDetails` field when the app subscription was created. + ///If you create an app usage charge that causes the total usage charges in a billing interval to exceed the capped amount, then a `Total price exceeds balance remaining` error is returned. + /// + public AppUsageRecordCreatePayload? appUsageRecordCreate { get; set; } + /// + ///Creates an article. + /// + public ArticleCreatePayload? articleCreate { get; set; } + /// + ///Deletes an article. + /// + public ArticleDeletePayload? articleDelete { get; set; } + /// + ///Updates an article. + /// + public ArticleUpdatePayload? articleUpdate { get; set; } + /// + ///Creates a blog. + /// + public BlogCreatePayload? blogCreate { get; set; } + /// + ///Deletes a blog. + /// + public BlogDeletePayload? blogDelete { get; set; } + /// + ///Updates a blog. + /// + public BlogUpdatePayload? blogUpdate { get; set; } + /// + ///Starts the cancelation process of a running bulk operation. + /// + ///There may be a short delay from when a cancelation starts until the operation is actually canceled. + /// + public BulkOperationCancelPayload? bulkOperationCancel { get; set; } + /// + ///Creates and runs a bulk operation mutation. + /// + ///To learn how to bulk import large volumes of data asynchronously, refer to the + ///[bulk import data guide](https://shopify.dev/api/usage/bulk-operations/imports). + /// + public BulkOperationRunMutationPayload? bulkOperationRunMutation { get; set; } + /// + ///Creates and runs a bulk operation query. + /// + ///See the [bulk operations guide](https://shopify.dev/api/usage/bulk-operations/queries) for more details. + /// + public BulkOperationRunQueryPayload? bulkOperationRunQuery { get; set; } + /// + ///Creates product feedback for multiple products. + /// + public BulkProductResourceFeedbackCreatePayload? bulkProductResourceFeedbackCreate { get; set; } + /// + ///Creates a new carrier service. + /// + public CarrierServiceCreatePayload? carrierServiceCreate { get; set; } + /// + ///Removes an existing carrier service. + /// + public CarrierServiceDeletePayload? carrierServiceDelete { get; set; } + /// + ///Updates a carrier service. Only the app that creates a carrier service can update it. + /// + public CarrierServiceUpdatePayload? carrierServiceUpdate { get; set; } + /// + ///Create a CartTransform function to the Shop. + /// + public CartTransformCreatePayload? cartTransformCreate { get; set; } + /// + ///Destroy a cart transform function from the Shop. + /// + public CartTransformDeletePayload? cartTransformDelete { get; set; } + /// + ///Updates the context of a catalog. + /// + public CatalogContextUpdatePayload? catalogContextUpdate { get; set; } + /// + ///Creates a new catalog. + /// + public CatalogCreatePayload? catalogCreate { get; set; } + /// + ///Delete a catalog. + /// + public CatalogDeletePayload? catalogDelete { get; set; } + /// + ///Updates an existing catalog. + /// + 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. + /// + ///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; } + /// + ///Adds products to a collection. + /// + public CollectionAddProductsPayload? collectionAddProducts { get; set; } + /// + ///Asynchronously adds a set of products to a given collection. It can take a long time to run. Instead of returning a collection, it returns a job which should be polled. + /// + public CollectionAddProductsV2Payload? collectionAddProductsV2 { get; set; } + /// + ///Creates a collection. + /// + public CollectionCreatePayload? collectionCreate { get; set; } + /// + ///Deletes a collection. + /// + public CollectionDeletePayload? collectionDelete { get; set; } + + /// + ///Publishes a collection to a channel. + /// + [Obsolete("Use `publishablePublish` instead.")] + public CollectionPublishPayload? collectionPublish { get; set; } + /// + ///Removes a set of products from a given collection. The mutation can take a long time to run. Instead of returning an updated collection the mutation returns a job, which should be [polled](https://shopify.dev/api/admin-graphql/latest/queries/job). For use with manual collections only. + /// + public CollectionRemoveProductsPayload? collectionRemoveProducts { get; set; } + /// + ///Asynchronously reorders a set of products within a specified collection. Instead of returning an updated collection, this mutation returns a job, which should be [polled](https://shopify.dev/api/admin-graphql/latest/queries/job). The [`Collection.sortOrder`](https://shopify.dev/api/admin-graphql/latest/objects/Collection#field-collection-sortorder) must be `MANUAL`. Displaced products will have their position altered in a consistent manner, with no gaps. + /// + public CollectionReorderProductsPayload? collectionReorderProducts { get; set; } + + /// + ///Unpublishes a collection. + /// + [Obsolete("Use `publishableUnpublish` instead.")] + public CollectionUnpublishPayload? collectionUnpublish { get; set; } + /// + ///Updates a collection. + /// + public CollectionUpdatePayload? collectionUpdate { get; set; } + /// + ///Add, remove and update `CombinedListing`s of a given Product. + /// + ///`CombinedListing`s are comprised of multiple products to create a single listing. There are two kinds of products used in a `CombinedListing`: + /// + ///1. Parent products + ///2. Child products + /// + ///The parent product is created with a `productCreate` with a `CombinedListingRole` of `PARENT`. Once created, you can associate child products with the parent product using this mutation. Parent products represent the idea of a product (e.g. Shoe). + /// + ///Child products represent a particular option value (or combination of option values) of a parent product. For instance, with your Shoe parent product, you may have several child products representing specific colors of the shoe (e.g. Shoe - Blue). You could also have child products representing more than a single option (e.g. Shoe - Blue/Canvas, Shoe - Blue/Leather, etc...). + /// + ///The combined listing is the association of parent product to one or more child products. + /// + ///Learn more about [Combined Listings](https://shopify.dev/apps/selling-strategies/combined-listings). + /// + public CombinedListingUpdatePayload? combinedListingUpdate { get; set; } + /// + ///Approves a comment. + /// + public CommentApprovePayload? commentApprove { get; set; } + /// + ///Deletes a comment. + /// + public CommentDeletePayload? commentDelete { get; set; } + /// + ///Marks a comment as not spam. + /// + public CommentNotSpamPayload? commentNotSpam { get; set; } + /// + ///Marks a comment as spam. + /// + public CommentSpamPayload? commentSpam { get; set; } + /// + ///Deletes a list of companies. + /// + public CompaniesDeletePayload? companiesDelete { get; set; } + /// + ///Deletes a company address. + /// + public CompanyAddressDeletePayload? companyAddressDelete { get; set; } + /// + ///Assigns the customer as a company contact. + /// + public CompanyAssignCustomerAsContactPayload? companyAssignCustomerAsContact { get; set; } + /// + ///Assigns the main contact for the company. + /// + public CompanyAssignMainContactPayload? companyAssignMainContact { get; set; } + /// + ///Assigns a role to a contact for a location. + /// + public CompanyContactAssignRolePayload? companyContactAssignRole { get; set; } + /// + ///Assigns roles on a company contact. + /// + public CompanyContactAssignRolesPayload? companyContactAssignRoles { get; set; } + /// + ///Creates a company contact. + /// + public CompanyContactCreatePayload? companyContactCreate { get; set; } + /// + ///Deletes a company contact. + /// + public CompanyContactDeletePayload? companyContactDelete { get; set; } + /// + ///Removes a company contact from a Company. + /// + public CompanyContactRemoveFromCompanyPayload? companyContactRemoveFromCompany { get; set; } + /// + ///Revokes a role on a company contact. + /// + public CompanyContactRevokeRolePayload? companyContactRevokeRole { get; set; } + /// + ///Revokes roles on a company contact. + /// + public CompanyContactRevokeRolesPayload? companyContactRevokeRoles { get; set; } + /// + ///Sends the company contact a welcome email. + /// + public CompanyContactSendWelcomeEmailPayload? companyContactSendWelcomeEmail { get; set; } + /// + ///Updates a company contact. + /// + public CompanyContactUpdatePayload? companyContactUpdate { get; set; } + /// + ///Deletes one or more company contacts. + /// + public CompanyContactsDeletePayload? companyContactsDelete { get; set; } + /// + ///Creates a company. + /// + public CompanyCreatePayload? companyCreate { get; set; } + /// + ///Deletes a company. + /// + public CompanyDeletePayload? companyDelete { get; set; } + /// + ///Updates an address on a company location. + /// + public CompanyLocationAssignAddressPayload? companyLocationAssignAddress { get; set; } + /// + ///Assigns roles on a company location. + /// + public CompanyLocationAssignRolesPayload? companyLocationAssignRoles { get; set; } + /// + ///Creates one or more mappings between a staff member at a shop and a company location. + /// + public CompanyLocationAssignStaffMembersPayload? companyLocationAssignStaffMembers { get; set; } + /// + ///Assigns tax exemptions to the company location. + /// + public CompanyLocationAssignTaxExemptionsPayload? companyLocationAssignTaxExemptions { get; set; } + /// + ///Creates a company location. + /// + public CompanyLocationCreatePayload? companyLocationCreate { get; set; } + /// + ///Creates a tax registration for a company location. + /// + public CompanyLocationCreateTaxRegistrationPayload? companyLocationCreateTaxRegistration { get; set; } + /// + ///Deletes a company location. + /// + public CompanyLocationDeletePayload? companyLocationDelete { get; set; } + /// + ///Deletes one or more existing mappings between a staff member at a shop and a company location. + /// + public CompanyLocationRemoveStaffMembersPayload? companyLocationRemoveStaffMembers { get; set; } + /// + ///Revokes roles on a company location. + /// + public CompanyLocationRevokeRolesPayload? companyLocationRevokeRoles { get; set; } + /// + ///Revokes tax exemptions from the company location. + /// + public CompanyLocationRevokeTaxExemptionsPayload? companyLocationRevokeTaxExemptions { get; set; } + /// + ///Revokes tax registration on a company location. + /// + public CompanyLocationRevokeTaxRegistrationPayload? companyLocationRevokeTaxRegistration { get; set; } + /// + ///Updates a company location. + /// + public CompanyLocationUpdatePayload? companyLocationUpdate { get; set; } + /// + ///Deletes a list of company locations. + /// + public CompanyLocationsDeletePayload? companyLocationsDelete { get; set; } + /// + ///Revokes the main contact from the company. + /// + public CompanyRevokeMainContactPayload? companyRevokeMainContact { get; set; } + /// + ///Updates a company. + /// + public CompanyUpdatePayload? companyUpdate { get; set; } + /// + ///Add tax exemptions for the customer. + /// + public CustomerAddTaxExemptionsPayload? customerAddTaxExemptions { get; set; } + /// + ///Cancels a pending erasure of a customer's data. + /// + ///To request an erasure of a customer's data use the [customerRequestDataErasure mutation](https://shopify.dev/api/admin-graphql/unstable/mutations/customerRequestDataErasure). + /// + public CustomerCancelDataErasurePayload? customerCancelDataErasure { get; set; } + /// + ///Create a new customer. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). + /// + public CustomerCreatePayload? customerCreate { get; set; } + /// + ///Delete a customer. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). + /// + public CustomerDeletePayload? customerDelete { get; set; } + /// + ///Update a customer's email marketing information information. + /// + public CustomerEmailMarketingConsentUpdatePayload? customerEmailMarketingConsentUpdate { get; set; } + /// + ///Generate an account activation URL for a customer. + /// + public CustomerGenerateAccountActivationUrlPayload? customerGenerateAccountActivationUrl { get; set; } + /// + ///Merges two customers. + /// + public CustomerMergePayload? customerMerge { get; set; } + /// + ///Creates a vaulted payment method for a customer from duplication data. + /// + ///This data must be obtained from another shop within the same organization. + /// + ///Currently, this only supports Shop Pay payment methods. This is only available for selected partner apps. + /// + public CustomerPaymentMethodCreateFromDuplicationDataPayload? customerPaymentMethodCreateFromDuplicationData { get; set; } + /// + ///Creates a credit card payment method for a customer using a session id. + ///These values are only obtained through card imports happening from a PCI compliant environment. + ///Please use customerPaymentMethodRemoteCreate if you are not managing credit cards directly. + /// + public CustomerPaymentMethodCreditCardCreatePayload? customerPaymentMethodCreditCardCreate { get; set; } + /// + ///Updates the credit card payment method for a customer. + /// + public CustomerPaymentMethodCreditCardUpdatePayload? customerPaymentMethodCreditCardUpdate { get; set; } + /// + ///Returns encrypted data that can be used to duplicate the payment method in another shop within the same organization. + /// + ///Currently, this only supports Shop Pay payment methods. This is only available for selected partner apps. + /// + public CustomerPaymentMethodGetDuplicationDataPayload? customerPaymentMethodGetDuplicationData { get; set; } + /// + ///Returns a URL that allows the customer to update a specific payment method. + /// + ///Currently, `customerPaymentMethodGetUpdateUrl` only supports Shop Pay. + /// + public CustomerPaymentMethodGetUpdateUrlPayload? customerPaymentMethodGetUpdateUrl { get; set; } + /// + ///Creates a PayPal billing agreement for a customer. + /// + public CustomerPaymentMethodPaypalBillingAgreementCreatePayload? customerPaymentMethodPaypalBillingAgreementCreate { get; set; } + /// + ///Updates a PayPal billing agreement for a customer. + /// + public CustomerPaymentMethodPaypalBillingAgreementUpdatePayload? customerPaymentMethodPaypalBillingAgreementUpdate { get; set; } + /// + ///Create a payment method from remote gateway identifiers. + /// + public CustomerPaymentMethodRemoteCreatePayload? customerPaymentMethodRemoteCreate { get; set; } + + /// + ///Create a payment method from a credit card stored by Stripe. + /// + [Obsolete("Use `customerPaymentMethodRemoteCreate` instead.")] + public CustomerPaymentMethodRemoteCreditCardCreatePayload? customerPaymentMethodRemoteCreditCardCreate { get; set; } + /// + ///Revokes a customer's payment method. + /// + public CustomerPaymentMethodRevokePayload? customerPaymentMethodRevoke { get; set; } + /// + ///Sends a link to the customer so they can update a specific payment method. + /// + public CustomerPaymentMethodSendUpdateEmailPayload? customerPaymentMethodSendUpdateEmail { get; set; } + /// + ///Remove tax exemptions from a customer. + /// + public CustomerRemoveTaxExemptionsPayload? customerRemoveTaxExemptions { get; set; } + /// + ///Replace tax exemptions for a customer. + /// + public CustomerReplaceTaxExemptionsPayload? customerReplaceTaxExemptions { get; set; } + /// + ///Enqueues a request to erase customer's data. Read more [here](https://help.shopify.com/manual/privacy-and-security/privacy/processing-customer-data-requests#erase-customer-personal-data). + /// + ///To cancel the data erasure request use the [customerCancelDataErasure mutation](https://shopify.dev/api/admin-graphql/unstable/mutations/customerCancelDataErasure). + /// + public CustomerRequestDataErasurePayload? customerRequestDataErasure { get; set; } + /// + ///Creates a customer segment members query. + /// + public CustomerSegmentMembersQueryCreatePayload? customerSegmentMembersQueryCreate { get; set; } + /// + ///Sends the customer an account invite email. + /// + public CustomerSendAccountInviteEmailPayload? customerSendAccountInviteEmail { get; set; } + /// + ///Update a customer's SMS marketing consent information. + /// + public CustomerSmsMarketingConsentUpdatePayload? customerSmsMarketingConsentUpdate { get; set; } + /// + ///Update a customer's attributes. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). + /// + public CustomerUpdatePayload? customerUpdate { get; set; } + /// + ///Updates a customer's default address. + /// + public CustomerUpdateDefaultAddressPayload? customerUpdateDefaultAddress { get; set; } + /// + ///Opt out a customer from data sale. + /// + public DataSaleOptOutPayload? dataSaleOptOut { get; set; } + /// + ///Creates a delegate access token. + /// + ///To learn more about creating delegate access tokens, refer to + ///[Delegate OAuth access tokens to subsystems](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/use-delegate-tokens). + /// + public DelegateAccessTokenCreatePayload? delegateAccessTokenCreate { get; set; } + /// + ///Destroys a delegate access token. + /// + public DelegateAccessTokenDestroyPayload? delegateAccessTokenDestroy { get; set; } + /// + ///Activates and deactivates delivery customizations. + /// + public DeliveryCustomizationActivationPayload? deliveryCustomizationActivation { get; set; } + /// + ///Creates a delivery customization. + /// + public DeliveryCustomizationCreatePayload? deliveryCustomizationCreate { get; set; } + /// + ///Creates a delivery customization. + /// + public DeliveryCustomizationDeletePayload? deliveryCustomizationDelete { get; set; } + /// + ///Updates a delivery customization. + /// + public DeliveryCustomizationUpdatePayload? deliveryCustomizationUpdate { get; set; } + /// + ///Create a delivery profile. + /// + public DeliveryProfileCreatePayload? deliveryProfileCreate { get; set; } + /// + ///Enqueue the removal of a delivery profile. + /// + public DeliveryProfileRemovePayload? deliveryProfileRemove { get; set; } + /// + ///Update a delivery profile. + /// + public DeliveryProfileUpdatePayload? deliveryProfileUpdate { get; set; } + /// + ///Creates or updates a delivery promise provider. Currently restricted to select approved delivery promise partners. + /// + public DeliveryPromiseProviderUpsertPayload? deliveryPromiseProviderUpsert { get; set; } + /// + ///Set the delivery settings for a shop. + /// + public DeliverySettingUpdatePayload? deliverySettingUpdate { get; set; } + /// + ///Assigns a location as the shipping origin while using legacy compatibility mode for multi-location delivery profiles. + /// + public DeliveryShippingOriginAssignPayload? deliveryShippingOriginAssign { get; set; } + /// + ///Activates an automatic discount. + /// + public DiscountAutomaticActivatePayload? discountAutomaticActivate { get; set; } + /// + ///Creates an app discount. + /// + public DiscountAutomaticAppCreatePayload? discountAutomaticAppCreate { get; set; } + /// + ///Updates an automatic app discount. + /// + public DiscountAutomaticAppUpdatePayload? discountAutomaticAppUpdate { get; set; } + /// + ///Creates a basic automatic discount. + /// + public DiscountAutomaticBasicCreatePayload? discountAutomaticBasicCreate { get; set; } + /// + ///Updates a basic automatic discount. + /// + public DiscountAutomaticBasicUpdatePayload? discountAutomaticBasicUpdate { get; set; } + /// + ///Asynchronously delete automatic discounts in bulk if a `search` or `saved_search_id` argument is provided or if a + ///maximum discount threshold is reached (1,000). Otherwise, deletions will occur inline. + ///**Warning:** All automatic discounts will be deleted if a blank `search` argument is provided. + /// + public DiscountAutomaticBulkDeletePayload? discountAutomaticBulkDelete { get; set; } + /// + ///Creates a BXGY automatic discount. + /// + public DiscountAutomaticBxgyCreatePayload? discountAutomaticBxgyCreate { get; set; } + /// + ///Updates an existing Buy X, Get Y (BXGY) automatic discount. + /// + public DiscountAutomaticBxgyUpdatePayload? discountAutomaticBxgyUpdate { get; set; } + /// + ///Deactivates an automatic discount. + /// + public DiscountAutomaticDeactivatePayload? discountAutomaticDeactivate { get; set; } + /// + ///Deletes an automatic discount. + /// + public DiscountAutomaticDeletePayload? discountAutomaticDelete { get; set; } + /// + ///Creates a free shipping automatic discount. + /// + public DiscountAutomaticFreeShippingCreatePayload? discountAutomaticFreeShippingCreate { get; set; } + /// + ///Updates a free shipping automatic discount. + /// + public DiscountAutomaticFreeShippingUpdatePayload? discountAutomaticFreeShippingUpdate { get; set; } + /// + ///Activates a code discount. + /// + public DiscountCodeActivatePayload? discountCodeActivate { get; set; } + /// + ///Creates a code app discount. + /// + public DiscountCodeAppCreatePayload? discountCodeAppCreate { get; set; } + /// + ///Updates a code app discount. + /// + public DiscountCodeAppUpdatePayload? discountCodeAppUpdate { get; set; } + /// + ///Creates a basic code discount. + /// + public DiscountCodeBasicCreatePayload? discountCodeBasicCreate { get; set; } + /// + ///Updates a basic code discount. + /// + public DiscountCodeBasicUpdatePayload? discountCodeBasicUpdate { get; set; } + /// + ///Asynchronously activate code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs. + /// + public DiscountCodeBulkActivatePayload? discountCodeBulkActivate { get; set; } + /// + ///Asynchronously deactivate code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs. + /// + public DiscountCodeBulkDeactivatePayload? discountCodeBulkDeactivate { get; set; } + /// + ///Asynchronously delete code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs. + /// + public DiscountCodeBulkDeletePayload? discountCodeBulkDelete { get; set; } + /// + ///Creates a Buy X get Y (BXGY) code discount. + /// + public DiscountCodeBxgyCreatePayload? discountCodeBxgyCreate { get; set; } + /// + ///Updates a Buy X, Get Y (BXGY) code discount. + /// + public DiscountCodeBxgyUpdatePayload? discountCodeBxgyUpdate { get; set; } + /// + ///Deactivates a code discount. + /// + public DiscountCodeDeactivatePayload? discountCodeDeactivate { get; set; } + /// + ///Deletes a code discount. + /// + public DiscountCodeDeletePayload? discountCodeDelete { get; set; } + /// + ///Creates a free shipping code discount. + /// + public DiscountCodeFreeShippingCreatePayload? discountCodeFreeShippingCreate { get; set; } + /// + ///Updates a free shipping code discount. + /// + public DiscountCodeFreeShippingUpdatePayload? discountCodeFreeShippingUpdate { get; set; } + /// + ///Asynchronously delete discount redeem codes in bulk. Specify the redeem codes to delete by providing a + ///search query, a saved search ID, or a list of redeem code IDs. + /// + public DiscountCodeRedeemCodeBulkDeletePayload? discountCodeRedeemCodeBulkDelete { get; set; } + /// + ///Asynchronously add discount redeem codes in bulk. Specify the codes to add + ///and the discount code ID that the codes will belong to. + /// + public DiscountRedeemCodeBulkAddPayload? discountRedeemCodeBulkAdd { get; set; } + /// + ///Updates a dispute evidence. + /// + public DisputeEvidenceUpdatePayload? disputeEvidenceUpdate { get; set; } + /// + ///Adds tags to multiple draft orders. + /// + public DraftOrderBulkAddTagsPayload? draftOrderBulkAddTags { get; set; } + /// + ///Deletes multiple draft orders. + /// + public DraftOrderBulkDeletePayload? draftOrderBulkDelete { get; set; } + /// + ///Removes tags from multiple draft orders. + /// + public DraftOrderBulkRemoveTagsPayload? draftOrderBulkRemoveTags { get; set; } + /// + ///Calculates the properties of a draft order. Useful for determining information + ///such as total taxes or price without actually creating a draft order. + /// + public DraftOrderCalculatePayload? draftOrderCalculate { get; set; } + /// + ///Completes a draft order and creates an order. + /// + public DraftOrderCompletePayload? draftOrderComplete { get; set; } + /// + ///Creates a draft order. + /// + public DraftOrderCreatePayload? draftOrderCreate { get; set; } + /// + ///Creates a draft order from order. + /// + public DraftOrderCreateFromOrderPayload? draftOrderCreateFromOrder { get; set; } + /// + ///Creates a merchant checkout for the given draft order. + /// + public DraftOrderCreateMerchantCheckoutPayload? draftOrderCreateMerchantCheckout { get; set; } + /// + ///Deletes a draft order. + /// + public DraftOrderDeletePayload? draftOrderDelete { get; set; } + /// + ///Duplicates a draft order. + /// + public DraftOrderDuplicatePayload? draftOrderDuplicate { get; set; } + /// + ///Previews a draft order invoice email. + /// + public DraftOrderInvoicePreviewPayload? draftOrderInvoicePreview { get; set; } + /// + ///Sends an email invoice for a draft order. + /// + public DraftOrderInvoiceSendPayload? draftOrderInvoiceSend { get; set; } + /// + ///Updates a draft order. + /// + ///If a checkout has been started for a draft order, any update to the draft will unlink the checkout. Checkouts + ///are created but not immediately completed when opening the merchant credit card modal in the admin, and when a + ///buyer opens the invoice URL. This is usually fine, but there is an edge case where a checkout is in progress + ///and the draft is updated before the checkout completes. This will not interfere with the checkout and order + ///creation, but if the link from draft to checkout is broken the draft will remain open even after the order is + ///created. + /// + public DraftOrderUpdatePayload? draftOrderUpdate { get; set; } + /// + ///Updates the server pixel to connect to an EventBridge endpoint. + ///Running this mutation deletes any previous subscriptions for the server pixel. + /// + public EventBridgeServerPixelUpdatePayload? eventBridgeServerPixelUpdate { get; set; } + /// + ///Creates a new Amazon EventBridge webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public EventBridgeWebhookSubscriptionCreatePayload? eventBridgeWebhookSubscriptionCreate { get; set; } + /// + ///Updates an Amazon EventBridge webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public EventBridgeWebhookSubscriptionUpdatePayload? eventBridgeWebhookSubscriptionUpdate { get; set; } + /// + ///Acknowledges file update failure by resetting FAILED status to READY and clearing any media errors. + /// + public FileAcknowledgeUpdateFailedPayload? fileAcknowledgeUpdateFailed { get; set; } + /// + ///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; } + /// + ///Deletes existing file assets that were uploaded to Shopify. + /// + public FileDeletePayload? fileDelete { get; set; } + /// + ///Updates an existing file asset that was uploaded to Shopify. + /// + public FileUpdatePayload? fileUpdate { get; set; } + /// + ///Generates a signature for a Flow action payload. + /// + public FlowGenerateSignaturePayload? flowGenerateSignature { get; set; } + /// + ///Triggers any workflows that begin with the trigger specified in the request body. To learn more, refer to [_Create Shopify Flow triggers_](https://shopify.dev/apps/flow/triggers). + /// + public FlowTriggerReceivePayload? flowTriggerReceive { get; set; } + /// + ///Cancels a fulfillment. + /// + public FulfillmentCancelPayload? fulfillmentCancel { get; set; } + /// + ///Creates a fulfillment constraint rule and its metafield. + /// + public FulfillmentConstraintRuleCreatePayload? fulfillmentConstraintRuleCreate { get; set; } + /// + ///Deletes a fulfillment constraint rule and its metafields. + /// + public FulfillmentConstraintRuleDeletePayload? fulfillmentConstraintRuleDelete { get; set; } + /// + ///Update a fulfillment constraint rule. + /// + public FulfillmentConstraintRuleUpdatePayload? fulfillmentConstraintRuleUpdate { get; set; } + /// + ///Creates a fulfillment for one or many fulfillment orders. + ///The fulfillment orders are associated with the same order and are assigned to the same location. + /// + public FulfillmentCreatePayload? fulfillmentCreate { get; set; } + + /// + ///Creates a fulfillment for one or many fulfillment orders. + ///The fulfillment orders are associated with the same order and are assigned to the same location. + /// + [Obsolete("Use `fulfillmentCreate` instead.")] + public FulfillmentCreateV2Payload? fulfillmentCreateV2 { get; set; } + /// + ///Creates a fulfillment event for a specified fulfillment. + /// + public FulfillmentEventCreatePayload? fulfillmentEventCreate { get; set; } + /// + ///Accept a cancellation request sent to a fulfillment service for a fulfillment order. + /// + public FulfillmentOrderAcceptCancellationRequestPayload? fulfillmentOrderAcceptCancellationRequest { get; set; } + /// + ///Accepts a fulfillment request sent to a fulfillment service for a fulfillment order. + /// + public FulfillmentOrderAcceptFulfillmentRequestPayload? fulfillmentOrderAcceptFulfillmentRequest { get; set; } + /// + ///Marks a fulfillment order as canceled. + /// + public FulfillmentOrderCancelPayload? fulfillmentOrderCancel { get; set; } + /// + ///Marks an in-progress fulfillment order as incomplete, indicating the fulfillment service is unable to ship any remaining items and intends to close the fulfillment order. + /// + public FulfillmentOrderClosePayload? fulfillmentOrderClose { get; set; } + /// + ///Applies a fulfillment hold on an open fulfillment order. + /// + public FulfillmentOrderHoldPayload? fulfillmentOrderHold { get; set; } + /// + ///Mark line items associated with a fulfillment order as being ready for pickup by a customer. + /// + ///Sends a Ready For Pickup notification to the customer to let them know that their order is ready + ///to be picked up. + /// + public FulfillmentOrderLineItemsPreparedForPickupPayload? fulfillmentOrderLineItemsPreparedForPickup { get; set; } + /// + ///Merges a set or multiple sets of fulfillment orders together into one based on + ///line item inputs and quantities. + /// + public FulfillmentOrderMergePayload? fulfillmentOrderMerge { get; set; } + /// + ///Changes the location which is assigned to fulfill a number of unfulfilled fulfillment order line items. + /// + ///Moving a fulfillment order will fail in the following circumstances: + /// + ///* The fulfillment order is closed. + ///* The destination location has never stocked the requested inventory item. + ///* The API client doesn't have the correct permissions. + /// + ///Line items which have already been fulfilled can't be re-assigned + ///and will always remain assigned to the original location. + /// + ///You can't change the assigned location while a fulfillment order has a + ///[request status](https://shopify.dev/docs/api/admin-graphql/latest/enums/FulfillmentOrderRequestStatus) + ///of `SUBMITTED`, `ACCEPTED`, `CANCELLATION_REQUESTED`, or `CANCELLATION_REJECTED`. + ///These request statuses mean that a fulfillment order is awaiting action by a fulfillment service + ///and can't be re-assigned without first having the fulfillment service accept a cancellation request. + ///This behavior is intended to prevent items from being fulfilled by multiple locations or fulfillment services. + /// + ///### How re-assigning line items affects fulfillment orders + /// + ///**First scenario:** Re-assign all line items belonging to a fulfillment order to a new location. + /// + ///In this case, the + ///[assignedLocation](https://shopify.dev/docs/api/admin-graphql/latest/objects/fulfillmentorder#field-fulfillmentorder-assignedlocation) + ///of the original fulfillment order will be updated to the new location. + /// + ///**Second scenario:** Re-assign a subset of the line items belonging to a fulfillment order to a new location. + ///You can specify a subset of line items using the `fulfillmentOrderLineItems` parameter + ///(available as of the `2023-04` API version), + ///or specify that the original fulfillment order contains line items which have already been fulfilled. + /// + ///If the new location is already assigned to another active fulfillment order, on the same order, then + ///a new fulfillment order is created. The existing fulfillment order is closed and line items are recreated + ///in a new fulfillment order. + /// + public FulfillmentOrderMovePayload? fulfillmentOrderMove { get; set; } + /// + ///Marks a scheduled fulfillment order as open. + /// + public FulfillmentOrderOpenPayload? fulfillmentOrderOpen { get; set; } + /// + ///Rejects a cancellation request sent to a fulfillment service for a fulfillment order. + /// + public FulfillmentOrderRejectCancellationRequestPayload? fulfillmentOrderRejectCancellationRequest { get; set; } + /// + ///Rejects a fulfillment request sent to a fulfillment service for a fulfillment order. + /// + public FulfillmentOrderRejectFulfillmentRequestPayload? fulfillmentOrderRejectFulfillmentRequest { get; set; } + /// + ///Releases the fulfillment hold on a fulfillment order. + /// + public FulfillmentOrderReleaseHoldPayload? fulfillmentOrderReleaseHold { get; set; } + /// + ///Reschedules a scheduled fulfillment order. + /// + ///Updates the value of the `fulfillAt` field on a scheduled fulfillment order. + /// + ///The fulfillment order will be marked as ready for fulfillment at this date and time. + /// + public FulfillmentOrderReschedulePayload? fulfillmentOrderReschedule { get; set; } + /// + ///Splits a fulfillment order or orders based on line item inputs and quantities. + /// + public FulfillmentOrderSplitPayload? fulfillmentOrderSplit { get; set; } + /// + ///Sends a cancellation request to the fulfillment service of a fulfillment order. + /// + public FulfillmentOrderSubmitCancellationRequestPayload? fulfillmentOrderSubmitCancellationRequest { get; set; } + /// + ///Sends a fulfillment request to the fulfillment service of a fulfillment order. + /// + public FulfillmentOrderSubmitFulfillmentRequestPayload? fulfillmentOrderSubmitFulfillmentRequest { get; set; } + /// + ///Sets the latest date and time by which the fulfillment orders need to be fulfilled. + /// + public FulfillmentOrdersSetFulfillmentDeadlinePayload? fulfillmentOrdersSetFulfillmentDeadline { get; set; } + /// + ///Creates a fulfillment service. + /// + ///## Fulfillment service location + /// + ///When creating a fulfillment service, a new location will be automatically created on the shop + ///and will be associated with this fulfillment service. + ///This location will be named after the fulfillment service and inherit the shop's address. + /// + ///If you are using API version `2023-10` or later, and you need to specify custom attributes for the fulfillment service location + ///(for example, to change its address to a country different from the shop's country), + ///use the + ///[LocationEdit](https://shopify.dev/api/admin-graphql/latest/mutations/locationEdit) + ///mutation after creating the fulfillment service. + /// + public FulfillmentServiceCreatePayload? fulfillmentServiceCreate { get; set; } + /// + ///Deletes a fulfillment service. + /// + public FulfillmentServiceDeletePayload? fulfillmentServiceDelete { get; set; } + /// + ///Updates a fulfillment service. + /// + ///If you are using API version `2023-10` or later, + ///and you need to update the location managed by the fulfillment service + ///(for example, to change the address of a fulfillment service), + ///use the + ///[LocationEdit](https://shopify.dev/api/admin-graphql/latest/mutations/locationEdit) + ///mutation. + /// + public FulfillmentServiceUpdatePayload? fulfillmentServiceUpdate { get; set; } + /// + ///Updates tracking information for a fulfillment. + /// + public FulfillmentTrackingInfoUpdatePayload? fulfillmentTrackingInfoUpdate { get; set; } + + /// + ///Updates tracking information for a fulfillment. + /// + [Obsolete("Use `fulfillmentTrackingInfoUpdate` instead.")] + public FulfillmentTrackingInfoUpdateV2Payload? fulfillmentTrackingInfoUpdateV2 { get; set; } + /// + ///Create a gift card. + /// + public GiftCardCreatePayload? giftCardCreate { get; set; } + /// + ///Credit a gift card. + /// + public GiftCardCreditPayload? giftCardCredit { get; set; } + /// + ///Deactivate a gift card. A deactivated gift card cannot be used by a customer. + ///A deactivated gift card cannot be re-enabled. + /// + public GiftCardDeactivatePayload? giftCardDeactivate { get; set; } + /// + ///Debit a gift card. + /// + public GiftCardDebitPayload? giftCardDebit { get; set; } + /// + ///Send notification to the customer of a gift card. + /// + public GiftCardSendNotificationToCustomerPayload? giftCardSendNotificationToCustomer { get; set; } + /// + ///Send notification to the recipient of a gift card. + /// + public GiftCardSendNotificationToRecipientPayload? giftCardSendNotificationToRecipient { get; set; } + /// + ///Update a gift card. + /// + public GiftCardUpdatePayload? giftCardUpdate { get; set; } + /// + ///Activate an inventory item at a location. + /// + public InventoryActivatePayload? inventoryActivate { get; set; } + /// + ///Apply changes to inventory quantities. + /// + public InventoryAdjustQuantitiesPayload? inventoryAdjustQuantities { 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. + /// + public InventoryBulkToggleActivationPayload? inventoryBulkToggleActivation { get; set; } + /// + ///Removes an inventory item's quantities from a location, and turns off inventory at the location. + /// + public InventoryDeactivatePayload? inventoryDeactivate { get; set; } + /// + ///Updates an inventory item. + /// + public InventoryItemUpdatePayload? inventoryItemUpdate { get; set; } + /// + ///Moves inventory between inventory quantity names at a single location. + /// + public InventoryMoveQuantitiesPayload? inventoryMoveQuantities { get; set; } + + /// + ///Set inventory on-hand quantities using absolute values. + /// + [Obsolete("Use `inventorySetQuantities` to set on_hand or available quantites instead.")] + public InventorySetOnHandQuantitiesPayload? inventorySetOnHandQuantities { get; set; } + /// + ///Set quantities of specified name using absolute values. This mutation supports compare-and-set functionality to handle + ///concurrent requests properly. If `ignoreCompareQuantity` is not set to true, + ///the mutation will only update the quantity if the persisted quantity matches the `compareQuantity` value. + ///If the `compareQuantity` value does not match the persisted value, the mutation will return an error. In order to opt out + ///of the `compareQuantity` check, the `ignoreCompareQuantity` argument can be set to true. + /// + ///> Note: + ///> Only use this mutation if calling on behalf of a system that acts as the source of truth for inventory quantities, + ///> otherwise please consider using the [inventoryAdjustQuantities](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryAdjustQuantities) mutation. + ///> + ///> + ///> Opting out of the `compareQuantity` check can lead to inaccurate inventory quantities if multiple requests are made concurrently. + ///> It is recommended to always include the `compareQuantity` value to ensure the accuracy of the inventory quantities and to opt out + ///> of the check using `ignoreCompareQuantity` only when necessary. + /// + public InventorySetQuantitiesPayload? inventorySetQuantities { get; set; } + /// + ///Set up scheduled changes of inventory items. + /// + public InventorySetScheduledChangesPayload? inventorySetScheduledChanges { get; set; } + /// + ///Activates a location. + /// + public LocationActivatePayload? locationActivate { get; set; } + /// + ///Adds a new location. + /// + public LocationAddPayload? locationAdd { get; set; } + /// + ///Deactivates a location and moves inventory, pending orders, and moving transfers to a destination location. + /// + public LocationDeactivatePayload? locationDeactivate { get; set; } + /// + ///Deletes a location. + /// + public LocationDeletePayload? locationDelete { get; set; } + /// + ///Edits an existing location. + /// + ///[As of the 2023-10 API version](https://shopify.dev/changelog/apps-can-now-change-the-name-and-address-of-their-fulfillment-service-locations), apps can change the name and address of their fulfillment service locations. + /// + public LocationEditPayload? locationEdit { get; set; } + /// + ///Disables local pickup for a location. + /// + public LocationLocalPickupDisablePayload? locationLocalPickupDisable { get; set; } + /// + ///Enables local pickup for a location. + /// + public LocationLocalPickupEnablePayload? locationLocalPickupEnable { get; set; } + /// + ///Creates a new market. + /// + public MarketCreatePayload? marketCreate { get; set; } + /// + ///Updates currency settings of a market. + /// + public MarketCurrencySettingsUpdatePayload? marketCurrencySettingsUpdate { get; set; } + /// + ///Deletes a market definition. + /// + public MarketDeletePayload? marketDelete { get; set; } + /// + ///Creates or updates market localizations. + /// + public MarketLocalizationsRegisterPayload? marketLocalizationsRegister { get; set; } + /// + ///Deletes market localizations. + /// + public MarketLocalizationsRemovePayload? marketLocalizationsRemove { get; set; } + /// + ///Deletes a market region. + /// + public MarketRegionDeletePayload? marketRegionDelete { get; set; } + /// + ///Creates regions that belong to an existing market. + /// + public MarketRegionsCreatePayload? marketRegionsCreate { get; set; } + /// + ///Deletes a list of market regions. + /// + public MarketRegionsDeletePayload? marketRegionsDelete { get; set; } + /// + ///Updates the properties of a market. + /// + public MarketUpdatePayload? marketUpdate { get; set; } + /// + ///Creates a web presence for a market. + /// + public MarketWebPresenceCreatePayload? marketWebPresenceCreate { get; set; } + /// + ///Deletes a market web presence. + /// + public MarketWebPresenceDeletePayload? marketWebPresenceDelete { get; set; } + /// + ///Updates a market web presence. + /// + public MarketWebPresenceUpdatePayload? marketWebPresenceUpdate { get; set; } + /// + ///Deletes all external marketing activities. Deletion is performed by a background job, as it may take a bit of time to complete if a large number of activities are to be deleted. Attempting to create or modify external activities before the job has completed will result in the create/update/upsert mutation returning an error. + /// + public MarketingActivitiesDeleteAllExternalPayload? marketingActivitiesDeleteAllExternal { get; set; } + /// + ///Create new marketing activity. + /// + public MarketingActivityCreatePayload? marketingActivityCreate { get; set; } + /// + ///Creates a new external marketing activity. + /// + public MarketingActivityCreateExternalPayload? marketingActivityCreateExternal { get; set; } + /// + ///Deletes an external marketing activity. + /// + public MarketingActivityDeleteExternalPayload? marketingActivityDeleteExternal { get; set; } + /// + ///Updates a marketing activity with the latest information. + /// + public MarketingActivityUpdatePayload? marketingActivityUpdate { get; set; } + /// + ///Update an external marketing activity. + /// + public MarketingActivityUpdateExternalPayload? marketingActivityUpdateExternal { get; set; } + /// + ///Creates a new external marketing activity or updates an existing one. When optional fields are absent or null, associated information will be removed from an existing marketing activity. + /// + public MarketingActivityUpsertExternalPayload? marketingActivityUpsertExternal { get; set; } + /// + ///Creates a new marketing engagement for a marketing activity or a marketing channel. + /// + public MarketingEngagementCreatePayload? marketingEngagementCreate { get; set; } + /// + ///Marks channel-level engagement data such that it no longer appears in reports. + /// Activity-level data cannot be deleted directly, instead the MarketingActivity itself should be deleted to + /// hide it from reports. + /// + public MarketingEngagementsDeletePayload? marketingEngagementsDelete { get; set; } + /// + ///Creates a menu. + /// + public MenuCreatePayload? menuCreate { get; set; } + /// + ///Deletes a menu. + /// + public MenuDeletePayload? menuDelete { get; set; } + /// + ///Updates a menu. + /// + public MenuUpdatePayload? menuUpdate { get; set; } + /// + ///Creates a metafield definition. Any metafields existing under the same owner type, namespace, and key will be + ///checked against this definition and will have their type updated accordingly. For metafields that are not + ///valid, they will remain unchanged but any attempts to update them must align with this definition. + /// + public MetafieldDefinitionCreatePayload? metafieldDefinitionCreate { get; set; } + /// + ///Delete a metafield definition. + ///Optionally deletes all associated metafields asynchronously when specified. + /// + public MetafieldDefinitionDeletePayload? metafieldDefinitionDelete { get; set; } + /// + ///You can organize your metafields in your Shopify admin by pinning/unpinning metafield definitions. + ///The order of your pinned metafield definitions determines the order in which your metafields are displayed + ///on the corresponding pages in your Shopify admin. By default, only pinned metafields are automatically displayed. + /// + public MetafieldDefinitionPinPayload? metafieldDefinitionPin { get; set; } + /// + ///You can organize your metafields in your Shopify admin by pinning/unpinning metafield definitions. + ///The order of your pinned metafield definitions determines the order in which your metafields are displayed + ///on the corresponding pages in your Shopify admin. By default, only pinned metafields are automatically displayed. + /// + public MetafieldDefinitionUnpinPayload? metafieldDefinitionUnpin { get; set; } + /// + ///Updates a metafield definition. + /// + public MetafieldDefinitionUpdatePayload? metafieldDefinitionUpdate { get; set; } + + /// + ///Deletes a metafield. + /// + [Obsolete("This mutation will be removed in a future version. Use `metafieldsDelete` instead.")] + public MetafieldDeletePayload? metafieldDelete { get; set; } + + /// + ///Creates a `MetafieldStorefrontVisibility` record to make all metafields that belong to the specified resource + ///and have the established `namespace` and `key` combination visible in the Storefront API. + /// + [Obsolete("This mutation will be removed in a future version. Use the `metafieldDefinitionCreate` or `metafieldDefinitionUpdate` mutations with `access.storefront` set instead.")] + public MetafieldStorefrontVisibilityCreatePayload? metafieldStorefrontVisibilityCreate { get; set; } + + /// + ///Deletes a `MetafieldStorefrontVisibility` record. All metafields that belongs to the specified record will no + ///longer be visible in the Storefront API. + /// + [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. + /// + ///This operation is atomic, meaning no changes are persisted if an error is encountered. + /// + ///As of `2024-07`, this operation supports compare-and-set functionality to better handle concurrent requests. + ///If `compareDigest` is set for any metafield, the mutation will only set that metafield if the persisted metafield value matches the digest used on `compareDigest`. + ///If the metafield doesn't exist yet, but you want to guarantee that the operation will run in a safe manner, set `compareDigest` to `null`. + ///The `compareDigest` value can be acquired by querying the metafield object and selecting `compareDigest` as a field. + ///If the `compareDigest` value does not match the digest for the persisted value, the mutation will return an error. + ///You can opt out of write guarantees by not sending `compareDigest` in the request. + /// + public MetafieldsSetPayload? metafieldsSet { get; set; } + /// + ///Asynchronously delete metaobjects and their associated metafields in bulk. + /// + public MetaobjectBulkDeletePayload? metaobjectBulkDelete { get; set; } + /// + ///Creates a new metaobject. + /// + public MetaobjectCreatePayload? metaobjectCreate { get; set; } + /// + ///Creates a new metaobject definition. + /// + public MetaobjectDefinitionCreatePayload? metaobjectDefinitionCreate { get; set; } + /// + ///Deletes the specified metaobject definition. + ///Also deletes all related metafield definitions, metaobjects, and metafields asynchronously. + /// + public MetaobjectDefinitionDeletePayload? metaobjectDefinitionDelete { get; set; } + /// + ///Updates a metaobject definition with new settings and metafield definitions. + /// + public MetaobjectDefinitionUpdatePayload? metaobjectDefinitionUpdate { get; set; } + /// + ///Deletes the specified metaobject and its associated metafields. + /// + public MetaobjectDeletePayload? metaobjectDelete { get; set; } + /// + ///Updates an existing metaobject. + /// + public MetaobjectUpdatePayload? metaobjectUpdate { get; set; } + /// + ///Retrieves a metaobject by handle, then updates it with the provided input values. + ///If no matching metaobject is found, a new metaobject is created with the provided input values. + /// + public MetaobjectUpsertPayload? metaobjectUpsert { get; set; } + /// + ///Create a mobile platform application. + /// + public MobilePlatformApplicationCreatePayload? mobilePlatformApplicationCreate { get; set; } + /// + ///Delete a mobile platform application. + /// + public MobilePlatformApplicationDeletePayload? mobilePlatformApplicationDelete { get; set; } + /// + ///Update a mobile platform application. + /// + public MobilePlatformApplicationUpdatePayload? mobilePlatformApplicationUpdate { get; set; } + /// + ///Cancels an order. + /// + 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 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; } + /// + ///Closes an open order. + /// + public OrderClosePayload? orderClose { get; set; } + /// + ///Creates an order. + /// + public OrderCreatePayload? orderCreate { get; set; } + /// + ///Creates a payment for an order by mandate. + /// + public OrderCreateMandatePaymentPayload? orderCreateMandatePayment { get; set; } + /// + ///Deletes an order. For more information on which orders can be deleted, refer to [Delete an order](https://help.shopify.com/manual/orders/cancel-delete-order#delete-an-order). + /// + public OrderDeletePayload? orderDelete { get; set; } + /// + ///Adds a custom line item to an existing order. For example, you could add a gift wrapping service as a [custom line item](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing#add-a-custom-line-item). To learn how to edit existing orders, refer to [Edit an existing order with Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). + /// + public OrderEditAddCustomItemPayload? orderEditAddCustomItem { get; set; } + /// + ///Adds a discount to a line item 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 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; } + /// + ///Starts editing an order. Mutations are operating on `OrderEdit`. + ///All order edits start with `orderEditBegin`, have any number of `orderEdit`* mutations made, and end with `orderEditCommit`. + /// + public OrderEditBeginPayload? orderEditBegin { get; set; } + /// + ///Applies and saves staged changes to an order. Mutations are operating on `OrderEdit`. + ///All order edits start with `orderEditBegin`, have any number of `orderEdit`* mutations made, and end with `orderEditCommit`. + /// + public OrderEditCommitPayload? orderEditCommit { get; set; } + /// + ///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 `orderEditRemoveDiscount` 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; } + /// + ///Updates a manual line level 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 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; } + /// + ///Marks an order as paid. You can only mark an order as paid if it isn't already fully paid. + /// + public OrderMarkAsPaidPayload? orderMarkAsPaid { get; set; } + /// + ///Opens a closed order. + /// + 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; } + /// + ///Creates a page. + /// + public PageCreatePayload? pageCreate { get; set; } + /// + ///Deletes a page. + /// + public PageDeletePayload? pageDelete { get; set; } + /// + ///Updates a page. + /// + public PageUpdatePayload? pageUpdate { get; set; } + /// + ///Activates and deactivates payment customizations. + /// + public PaymentCustomizationActivationPayload? paymentCustomizationActivation { get; set; } + /// + ///Creates a payment customization. + /// + public PaymentCustomizationCreatePayload? paymentCustomizationCreate { get; set; } + /// + ///Deletes a payment customization. + /// + public PaymentCustomizationDeletePayload? paymentCustomizationDelete { get; set; } + /// + ///Updates a payment customization. + /// + public PaymentCustomizationUpdatePayload? paymentCustomizationUpdate { get; set; } + /// + ///Sends an email payment reminder for a payment schedule. + /// + public PaymentReminderSendPayload? paymentReminderSend { get; set; } + /// + ///Create payment terms on an order. To create payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. + /// + public PaymentTermsCreatePayload? paymentTermsCreate { get; set; } + /// + ///Delete payment terms for an order. To delete payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. + /// + public PaymentTermsDeletePayload? paymentTermsDelete { get; set; } + /// + ///Update payment terms on an order. To update payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. + /// + public PaymentTermsUpdatePayload? paymentTermsUpdate { get; set; } + /// + ///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; } + /// + ///Deletes a price list. For example, you can delete a price list so that it no longer applies for products in the associated market. + /// + public PriceListDeletePayload? priceListDelete { get; set; } + /// + ///Creates or updates fixed prices on a price list. You can use the `priceListFixedPricesAdd` mutation to set a fixed price for specific product variants. This lets you change product variant pricing on a per country basis. Any existing fixed price list prices for these variants will be overwritten. + /// + public PriceListFixedPricesAddPayload? priceListFixedPricesAdd { get; set; } + /// + ///Updates the fixed prices for all variants for a product on a price list. You can use the `priceListFixedPricesByProductUpdate` mutation to set or remove a fixed price for all variants of a product associated with the price list. + /// + public PriceListFixedPricesByProductUpdatePayload? priceListFixedPricesByProductUpdate { get; set; } + /// + ///Deletes specific fixed prices from a price list using a product variant ID. You can use the `priceListFixedPricesDelete` mutation to delete a set of fixed prices from a price list. After deleting the set of fixed prices from the price list, the price of each product variant reverts to the original price that was determined by the price list adjustment. + /// + public PriceListFixedPricesDeletePayload? priceListFixedPricesDelete { get; set; } + /// + ///Updates fixed prices on a price list. You can use the `priceListFixedPricesUpdate` mutation to set a fixed price for specific product variants or to delete prices for variants associated with the price list. + /// + public PriceListFixedPricesUpdatePayload? priceListFixedPricesUpdate { get; set; } + /// + ///Updates a price list. + ///If you modify the currency, then any fixed prices set on the price list will be deleted. + /// + public PriceListUpdatePayload? priceListUpdate { get; set; } + + /// + ///Deletes a private metafield. + ///Private metafields are automatically deleted when the app that created them is uninstalled. + /// + [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 PrivateMetafieldDeletePayload? privateMetafieldDelete { get; set; } + + /// + ///Creates or updates a private metafield. Use private metafields when you don't want the metafield data to be accessible by merchants or other apps. + ///Private metafields are accessible only by the application that created them and only from the GraphQL Admin API. + /// + ///An application can create a maximum of 10 private metafields per shop resource. + /// + [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 PrivateMetafieldUpsertPayload? privateMetafieldUpsert { get; set; } + /// + ///Creates a new componentized product. + /// + public ProductBundleCreatePayload? productBundleCreate { get; set; } + /// + ///Updates a componentized product. + /// + public ProductBundleUpdatePayload? productBundleUpdate { get; set; } + + /// + ///Changes the status of a product. This allows you to set the availability of the product across all channels. + /// + [Obsolete("Use `productUpdate` instead.")] + public ProductChangeStatusPayload? productChangeStatus { get; set; } + /// + ///Creates a product. + /// + ///Learn more about the [product model](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model) + ///and [adding product data](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/add-data). + /// + public ProductCreatePayload? productCreate { get; set; } + /// + ///Creates media for a product. + /// + public ProductCreateMediaPayload? productCreateMedia { get; set; } + /// + ///Deletes a product, including all associated variants and media. + /// + ///As of API version `2023-01`, if you need to delete a large product, such as one that has many + ///[variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput) + ///that are active at several + ///[locations](https://shopify.dev/api/admin-graphql/latest/input-objects/InventoryLevelInput), + ///you may encounter timeout errors. To avoid these timeout errors, you can instead use the asynchronous + ///[ProductDeleteAsync](https://shopify.dev/api/admin-graphql/latest/mutations/productDeleteAsync) + ///mutation. + /// + public ProductDeletePayload? productDelete { get; set; } + /// + ///Deletes media for a product. + /// + public ProductDeleteMediaPayload? productDeleteMedia { get; set; } + /// + ///Duplicates a product. + /// + ///If you need to duplicate a large product, such as one that has many + ///[variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput) + ///that are active at several + ///[locations](https://shopify.dev/api/admin-graphql/latest/input-objects/InventoryLevelInput), + ///you might encounter timeout errors. + /// + ///To avoid these timeout errors, you can instead duplicate the product asynchronously. + /// + ///In API version 2024-10 and higher, include `synchronous: false` argument in this mutation to perform the duplication asynchronously. + /// + ///In API version 2024-07 and lower, use the asynchronous [`ProductDuplicateAsyncV2`](https://shopify.dev/api/admin-graphql/2024-07/mutations/productDuplicateAsyncV2). + /// + public ProductDuplicatePayload? productDuplicate { get; set; } + /// + ///Creates a product feed for a specific publication. + /// + public ProductFeedCreatePayload? productFeedCreate { get; set; } + /// + ///Deletes a product feed for a specific publication. + /// + public ProductFeedDeletePayload? productFeedDelete { get; set; } + /// + ///Runs the full product sync for a given shop. + /// + public ProductFullSyncPayload? productFullSync { get; set; } + /// + ///Adds multiple selling plan groups to a product. + /// + public ProductJoinSellingPlanGroupsPayload? productJoinSellingPlanGroups { get; set; } + /// + ///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. + /// + [Obsolete("Use `publishablePublish` instead.")] + public ProductPublishPayload? productPublish { get; set; } + /// + ///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. + /// + [Obsolete("Use `publishableUnpublish` instead.")] + public ProductUnpublishPayload? productUnpublish { get; set; } + /// + ///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). + /// + public ProductUpdatePayload? productUpdate { get; set; } + /// + ///Updates media for a product. + /// + public ProductUpdateMediaPayload? productUpdateMedia { get; set; } + /// + ///Appends media from a product to variants of the product. + /// + public ProductVariantAppendMediaPayload? productVariantAppendMedia { get; set; } + /// + ///Detaches media from product variants. + /// + public ProductVariantDetachMediaPayload? productVariantDetachMedia { get; set; } + /// + ///Adds multiple selling plan groups to a product variant. + /// + public ProductVariantJoinSellingPlanGroupsPayload? productVariantJoinSellingPlanGroups { get; set; } + /// + ///Remove multiple groups from a product variant. + /// + public ProductVariantLeaveSellingPlanGroupsPayload? productVariantLeaveSellingPlanGroups { get; set; } + /// + ///Creates new bundles, updates existing bundles, and removes bundle components for one or multiple bundles. + /// + public ProductVariantRelationshipBulkUpdatePayload? productVariantRelationshipBulkUpdate { get; set; } + /// + ///Creates multiple variants in a single product. This mutation can be called directly or via the bulkOperation. + /// + public ProductVariantsBulkCreatePayload? productVariantsBulkCreate { get; set; } + /// + ///Deletes multiple variants in a single product. This mutation can be called directly or via the bulkOperation. + /// + public ProductVariantsBulkDeletePayload? productVariantsBulkDelete { get; set; } + /// + ///Reorders multiple variants in a single product. This mutation can be called directly or via the bulkOperation. + /// + public ProductVariantsBulkReorderPayload? productVariantsBulkReorder { get; set; } + /// + ///Updates multiple variants in a single product. This mutation can be called directly or via the bulkOperation. + /// + public ProductVariantsBulkUpdatePayload? productVariantsBulkUpdate { get; set; } + /// + ///Updates the server pixel to connect to a Google PubSub endpoint. + ///Running this mutation deletes any previous subscriptions for the server pixel. + /// + public PubSubServerPixelUpdatePayload? pubSubServerPixelUpdate { get; set; } + /// + ///Creates a new Google Cloud Pub/Sub webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public PubSubWebhookSubscriptionCreatePayload? pubSubWebhookSubscriptionCreate { get; set; } + /// + ///Updates a Google Cloud Pub/Sub webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public PubSubWebhookSubscriptionUpdatePayload? pubSubWebhookSubscriptionUpdate { get; set; } + /// + ///Creates a publication. + /// + public PublicationCreatePayload? publicationCreate { get; set; } + /// + ///Deletes a publication. + /// + public PublicationDeletePayload? publicationDelete { get; set; } + /// + ///Updates a publication. + /// + public PublicationUpdatePayload? publicationUpdate { get; set; } + /// + ///Publishes a resource to a channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can be published only on online stores. + /// + public PublishablePublishPayload? publishablePublish { get; set; } + /// + ///Publishes a resource to current channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can be published only on online stores. + /// + public PublishablePublishToCurrentChannelPayload? publishablePublishToCurrentChannel { get; set; } + /// + ///Unpublishes a resource from a channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. + /// + public PublishableUnpublishPayload? publishableUnpublish { get; set; } + /// + ///Unpublishes a resource from the current channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. + /// + public PublishableUnpublishToCurrentChannelPayload? publishableUnpublishToCurrentChannel { get; set; } + /// + ///Updates quantity pricing on a price list. You can use the `quantityPricingByVariantUpdate` mutation to set fixed prices, quantity rules, and quantity price breaks. This mutation does not allow partial successes. If any of the requested resources fail to update, none of the requested resources will be updated. Delete operations are executed before create operations. + /// + public QuantityPricingByVariantUpdatePayload? quantityPricingByVariantUpdate { get; set; } + /// + ///Creates or updates existing quantity rules on a price list. + ///You can use the `quantityRulesAdd` mutation to set order level minimums, maximumums and increments for specific product variants. + /// + public QuantityRulesAddPayload? quantityRulesAdd { get; set; } + /// + ///Deletes specific quantity rules from a price list using a product variant ID. + ///You can use the `quantityRulesDelete` mutation to delete a set of quantity rules from a price list. + /// + public QuantityRulesDeletePayload? quantityRulesDelete { get; set; } + /// + ///Creates a refund. + /// + public RefundCreatePayload? refundCreate { get; set; } + /// + ///Approves a customer's return request. + ///If this mutation is successful, then the `Return.status` field of the + ///approved return is set to `OPEN`. + /// + public ReturnApproveRequestPayload? returnApproveRequest { get; set; } + /// + ///Cancels a return and restores the items back to being fulfilled. + ///Canceling a return is only available before any work has been done + ///on the return (such as an inspection or refund). + /// + public ReturnCancelPayload? returnCancel { get; set; } + /// + ///Indicates a return is complete, either when a refund has been made and items restocked, + ///or simply when it has been marked as returned in the system. + /// + public ReturnClosePayload? returnClose { get; set; } + /// + ///Creates a return. + /// + public ReturnCreatePayload? returnCreate { get; set; } + /// + ///Declines a return on an order. + ///When a return is declined, each `ReturnLineItem.fulfillmentLineItem` can be associated to a new return. + ///Use the `ReturnCreate` or `ReturnRequest` mutation to initiate a new return. + /// + public ReturnDeclineRequestPayload? returnDeclineRequest { get; set; } + /// + ///Removes return lines from a return. + /// + public ReturnLineItemRemoveFromReturnPayload? returnLineItemRemoveFromReturn { get; set; } + /// + ///Refunds a return when its status is `OPEN` or `CLOSED` and associates it with the related return request. + /// + public ReturnRefundPayload? returnRefund { get; set; } + /// + ///Reopens a closed return. + /// + public ReturnReopenPayload? returnReopen { get; set; } + /// + ///A customer's return request that hasn't been approved or declined. + ///This mutation sets the value of the `Return.status` field to `REQUESTED`. + ///To create a return that has the `Return.status` field set to `OPEN`, use the `returnCreate` mutation. + /// + public ReturnRequestPayload? returnRequest { get; set; } + /// + ///Creates a new reverse delivery with associated external shipping information. + /// + public ReverseDeliveryCreateWithShippingPayload? reverseDeliveryCreateWithShipping { get; set; } + /// + ///Updates a reverse delivery with associated external shipping information. + /// + public ReverseDeliveryShippingUpdatePayload? reverseDeliveryShippingUpdate { get; set; } + /// + ///Disposes reverse fulfillment order line items. + /// + public ReverseFulfillmentOrderDisposePayload? reverseFulfillmentOrderDispose { get; set; } + /// + ///Creates a saved search. + /// + public SavedSearchCreatePayload? savedSearchCreate { get; set; } + /// + ///Delete a saved search. + /// + public SavedSearchDeletePayload? savedSearchDelete { get; set; } + /// + ///Updates a saved search. + /// + public SavedSearchUpdatePayload? savedSearchUpdate { get; set; } + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///Creates a new script tag. + ///
+ public ScriptTagCreatePayload? scriptTagCreate { get; set; } + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///Deletes a script tag. + ///
+ public ScriptTagDeletePayload? scriptTagDelete { get; set; } + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///Updates a script tag. + ///
+ public ScriptTagUpdatePayload? scriptTagUpdate { get; set; } + /// + ///Creates a segment. + /// + public SegmentCreatePayload? segmentCreate { get; set; } + /// + ///Deletes a segment. + /// + public SegmentDeletePayload? segmentDelete { get; set; } + /// + ///Updates a segment. + /// + public SegmentUpdatePayload? segmentUpdate { get; set; } + /// + ///Adds multiple product variants to a selling plan group. + /// + public SellingPlanGroupAddProductVariantsPayload? sellingPlanGroupAddProductVariants { get; set; } + /// + ///Adds multiple products to a selling plan group. + /// + public SellingPlanGroupAddProductsPayload? sellingPlanGroupAddProducts { get; set; } + /// + ///Creates a Selling Plan Group. + /// + public SellingPlanGroupCreatePayload? sellingPlanGroupCreate { get; set; } + /// + ///Delete a Selling Plan Group. This does not affect subscription contracts. + /// + public SellingPlanGroupDeletePayload? sellingPlanGroupDelete { get; set; } + /// + ///Removes multiple product variants from a selling plan group. + /// + public SellingPlanGroupRemoveProductVariantsPayload? sellingPlanGroupRemoveProductVariants { get; set; } + /// + ///Removes multiple products from a selling plan group. + /// + public SellingPlanGroupRemoveProductsPayload? sellingPlanGroupRemoveProducts { get; set; } + /// + ///Update a Selling Plan Group. + /// + public SellingPlanGroupUpdatePayload? sellingPlanGroupUpdate { get; set; } + /// + ///Creates a new unconfigured server pixel. A single server pixel can exist for an app and shop combination. If you call this mutation when a server pixel already exists, then an error will return. + /// + public ServerPixelCreatePayload? serverPixelCreate { get; set; } + /// + ///Deletes the Server Pixel associated with the current app & shop. + /// + public ServerPixelDeletePayload? serverPixelDelete { get; set; } + /// + ///Deletes a shipping package. + /// + public ShippingPackageDeletePayload? shippingPackageDelete { get; set; } + /// + ///Set a shipping package as the default. + ///The default shipping package is the one used to calculate shipping costs on checkout. + /// + public ShippingPackageMakeDefaultPayload? shippingPackageMakeDefault { get; set; } + /// + ///Updates a shipping package. + /// + public ShippingPackageUpdatePayload? shippingPackageUpdate { get; set; } + /// + ///Deletes a locale for a shop. This also deletes all translations of this locale. + /// + public ShopLocaleDisablePayload? shopLocaleDisable { get; set; } + /// + ///Adds a locale for a shop. The newly added locale is in the unpublished state. + /// + public ShopLocaleEnablePayload? shopLocaleEnable { get; set; } + /// + ///Updates a locale for a shop. + /// + public ShopLocaleUpdatePayload? shopLocaleUpdate { get; set; } + /// + ///Updates a shop policy. + /// + public ShopPolicyUpdatePayload? shopPolicyUpdate { get; set; } + /// + ///The `ResourceFeedback` object lets your app report the status of shops and their resources. For example, if + ///your app is a marketplace channel, then you can use resource feedback to alert merchants that they need to connect their marketplace account by signing in. + /// + ///Resource feedback notifications are displayed to the merchant on the home screen of their Shopify admin, and in the product details view for any products that are published to your app. + /// + ///This resource should be used only in cases where you're describing steps that a merchant is required to complete. If your app offers optional or promotional set-up steps, or if it makes recommendations, then don't use resource feedback to let merchants know about them. + /// + ///## Sending feedback on a shop + /// + ///You can send resource feedback on a shop to let the merchant know what steps they need to take to make sure that your app is set up correctly. Feedback can have one of two states: `requires_action` or `success`. You need to send a `requires_action` feedback request for each step that the merchant is required to complete. + /// + ///If there are multiple set-up steps that require merchant action, then send feedback with a state of `requires_action` as merchants complete prior steps. And to remove the feedback message from the Shopify admin, send a `success` feedback request. + /// + ///#### Important + ///Sending feedback replaces previously sent feedback for the shop. Send a new `shopResourceFeedbackCreate` mutation to push the latest state of a shop or its resources to Shopify. + /// + public ShopResourceFeedbackCreatePayload? shopResourceFeedbackCreate { get; set; } + + /// + ///Generates the URL and signed paramaters needed to upload an asset to Shopify. + /// + [Obsolete("Use `stagedUploadsCreate` instead.")] + public StagedUploadTargetGeneratePayload? stagedUploadTargetGenerate { get; set; } + + /// + ///Uploads multiple images. + /// + [Obsolete("Use `stagedUploadsCreate` instead.")] + public StagedUploadTargetsGeneratePayload? stagedUploadTargetsGenerate { get; set; } + /// + ///Creates staged upload targets for each input. This is the first step in the upload process. + ///The returned staged upload targets' URL and parameter fields can be used to send a request + ///to upload the file described in the corresponding input. + /// + ///For more information on the upload process, refer to + ///[Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify). + /// + public StagedUploadsCreatePayload? stagedUploadsCreate { get; set; } + /// + ///Activates the specified standard metafield definition from its template. + /// + ///Refer to the [list of standard metafield definition templates](https://shopify.dev/apps/metafields/definitions/standard-definitions). + /// + public StandardMetafieldDefinitionEnablePayload? standardMetafieldDefinitionEnable { get; set; } + /// + ///Enables the specified standard metaobject definition from its template. + /// + public StandardMetaobjectDefinitionEnablePayload? standardMetaobjectDefinitionEnable { get; set; } + /// + ///Creates a credit transaction that increases the store credit account balance by the given amount. + ///This operation will create an account if one does not already exist. + /// + public StoreCreditAccountCreditPayload? storeCreditAccountCredit { get; set; } + /// + ///Creates a debit transaction that decreases the store credit account balance by the given amount. + /// + public StoreCreditAccountDebitPayload? storeCreditAccountDebit { get; set; } + /// + ///Creates a storefront access token for use with the [Storefront API](https://shopify.dev/docs/api/storefront). + /// + ///An app can have a maximum of 100 active storefront access tokens for each shop. + /// + ///[Get started with the Storefront API](https://shopify.dev/docs/storefronts/headless/building-with-the-storefront-api/getting-started). + /// + public StorefrontAccessTokenCreatePayload? storefrontAccessTokenCreate { get; set; } + /// + ///Deletes a storefront access token. + /// + public StorefrontAccessTokenDeletePayload? storefrontAccessTokenDelete { get; set; } + /// + ///Creates a new subscription billing attempt. For more information, refer to [Create a subscription contract](https://shopify.dev/docs/apps/selling-strategies/subscriptions/contracts/create#step-4-create-a-billing-attempt). + /// + public SubscriptionBillingAttemptCreatePayload? subscriptionBillingAttemptCreate { get; set; } + /// + ///Asynchronously queries and charges all subscription billing cycles whose [billingAttemptExpectedDate](https://shopify.dev/api/admin-graphql/latest/objects/SubscriptionBillingCycle#field-billingattemptexpecteddate) values fall within a specified date range and meet additional filtering criteria. The results of this action can be retrieved using the [subscriptionBillingCycleBulkResults](https://shopify.dev/api/admin-graphql/latest/queries/subscriptionBillingCycleBulkResults) query. + /// + public SubscriptionBillingCycleBulkChargePayload? subscriptionBillingCycleBulkCharge { get; set; } + /// + ///Asynchronously queries all subscription billing cycles whose [billingAttemptExpectedDate](https://shopify.dev/api/admin-graphql/latest/objects/SubscriptionBillingCycle#field-billingattemptexpecteddate) values fall within a specified date range and meet additional filtering criteria. The results of this action can be retrieved using the [subscriptionBillingCycleBulkResults](https://shopify.dev/api/admin-graphql/latest/queries/subscriptionBillingCycleBulkResults) query. + /// + public SubscriptionBillingCycleBulkSearchPayload? subscriptionBillingCycleBulkSearch { get; set; } + /// + ///Creates a new subscription billing attempt for a specified billing cycle. This is the alternative mutation for [subscriptionBillingAttemptCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionBillingAttemptCreate). For more information, refer to [Create a subscription contract](https://shopify.dev/docs/apps/selling-strategies/subscriptions/contracts/create#step-4-create-a-billing-attempt). + /// + public SubscriptionBillingCycleChargePayload? subscriptionBillingCycleCharge { get; set; } + /// + ///Commits the updates of a Subscription Billing Cycle Contract draft. + /// + public SubscriptionBillingCycleContractDraftCommitPayload? subscriptionBillingCycleContractDraftCommit { get; set; } + /// + ///Concatenates a contract to a Subscription Draft. + /// + public SubscriptionBillingCycleContractDraftConcatenatePayload? subscriptionBillingCycleContractDraftConcatenate { get; set; } + /// + ///Edit the contents of a subscription contract for the specified billing cycle. + /// + public SubscriptionBillingCycleContractEditPayload? subscriptionBillingCycleContractEdit { get; set; } + /// + ///Delete the schedule and contract edits of the selected subscription billing cycle. + /// + public SubscriptionBillingCycleEditDeletePayload? subscriptionBillingCycleEditDelete { get; set; } + /// + ///Delete the current and future schedule and contract edits of a list of subscription billing cycles. + /// + public SubscriptionBillingCycleEditsDeletePayload? subscriptionBillingCycleEditsDelete { get; set; } + /// + ///Modify the schedule of a specific billing cycle. + /// + public SubscriptionBillingCycleScheduleEditPayload? subscriptionBillingCycleScheduleEdit { get; set; } + /// + ///Skips a Subscription Billing Cycle. + /// + public SubscriptionBillingCycleSkipPayload? subscriptionBillingCycleSkip { get; set; } + /// + ///Unskips a Subscription Billing Cycle. + /// + public SubscriptionBillingCycleUnskipPayload? subscriptionBillingCycleUnskip { get; set; } + /// + ///Activates a Subscription Contract. + /// + public SubscriptionContractActivatePayload? subscriptionContractActivate { get; set; } + /// + ///Creates a Subscription Contract. + /// + public SubscriptionContractAtomicCreatePayload? subscriptionContractAtomicCreate { get; set; } + /// + ///Cancels a Subscription Contract. + /// + public SubscriptionContractCancelPayload? subscriptionContractCancel { get; set; } + /// + ///Creates a Subscription Contract Draft. + ///You can submit all the desired information for the draft using [Subscription Draft Input object](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionDraftInput). + ///You can also update the draft using the [Subscription Contract Update](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionContractUpdate) mutation. + ///The draft is not saved until you call the [Subscription Draft Commit](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionDraftCommit) mutation. + /// + public SubscriptionContractCreatePayload? subscriptionContractCreate { get; set; } + /// + ///Expires a Subscription Contract. + /// + public SubscriptionContractExpirePayload? subscriptionContractExpire { get; set; } + /// + ///Fails a Subscription Contract. + /// + public SubscriptionContractFailPayload? subscriptionContractFail { get; set; } + /// + ///Pauses a Subscription Contract. + /// + public SubscriptionContractPausePayload? subscriptionContractPause { get; set; } + /// + ///Allows for the easy change of a Product in a Contract or a Product price change. + /// + public SubscriptionContractProductChangePayload? subscriptionContractProductChange { get; set; } + /// + ///Sets the next billing date of a 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), + /// which provide auto-computed billing dates and additional functionalities. + /// + public SubscriptionContractSetNextBillingDatePayload? subscriptionContractSetNextBillingDate { get; set; } + /// + ///The subscriptionContractUpdate mutation allows you to create a draft of an existing subscription contract. This [draft](https://shopify.dev/api/admin-graphql/latest/objects/SubscriptionDraft) can be reviewed and modified as needed. Once the draft is committed with [subscriptionDraftCommit](https://shopify.dev/api/admin-graphql/latest/mutations/subscriptionDraftCommit), the changes are applied to the original subscription contract. + /// + public SubscriptionContractUpdatePayload? subscriptionContractUpdate { get; set; } + /// + ///Commits the updates of a Subscription Contract draft. + /// + public SubscriptionDraftCommitPayload? subscriptionDraftCommit { get; set; } + /// + ///Adds a subscription discount to a subscription draft. + /// + public SubscriptionDraftDiscountAddPayload? subscriptionDraftDiscountAdd { get; set; } + /// + ///Applies a code discount on the subscription draft. + /// + public SubscriptionDraftDiscountCodeApplyPayload? subscriptionDraftDiscountCodeApply { get; set; } + /// + ///Removes a subscription discount from a subscription draft. + /// + public SubscriptionDraftDiscountRemovePayload? subscriptionDraftDiscountRemove { get; set; } + /// + ///Updates a subscription discount on a subscription draft. + /// + public SubscriptionDraftDiscountUpdatePayload? subscriptionDraftDiscountUpdate { get; set; } + /// + ///Adds a subscription free shipping discount to a subscription draft. + /// + public SubscriptionDraftFreeShippingDiscountAddPayload? subscriptionDraftFreeShippingDiscountAdd { get; set; } + /// + ///Updates a subscription free shipping discount on a subscription draft. + /// + public SubscriptionDraftFreeShippingDiscountUpdatePayload? subscriptionDraftFreeShippingDiscountUpdate { get; set; } + /// + ///Adds a subscription line to a subscription draft. + /// + public SubscriptionDraftLineAddPayload? subscriptionDraftLineAdd { get; set; } + /// + ///Removes a subscription line from a subscription draft. + /// + public SubscriptionDraftLineRemovePayload? subscriptionDraftLineRemove { get; set; } + /// + ///Updates a subscription line on a subscription draft. + /// + public SubscriptionDraftLineUpdatePayload? subscriptionDraftLineUpdate { get; set; } + /// + ///Updates a Subscription Draft. + /// + public SubscriptionDraftUpdatePayload? subscriptionDraftUpdate { get; set; } + /// + ///Add tags to an order, a draft order, a customer, a product, or an online store article. + /// + public TagsAddPayload? tagsAdd { get; set; } + /// + ///Remove tags from an order, a draft order, a customer, a product, or an online store article. + /// + public TagsRemovePayload? tagsRemove { get; set; } + /// + ///Allows tax app configurations for tax partners. + /// + public TaxAppConfigurePayload? taxAppConfigure { get; set; } + /// + ///Creates a theme 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 themes are added to the [Themes page](https://admin.shopify.com/themes) in Shopify admin. + /// + public ThemeCreatePayload? themeCreate { get; set; } + /// + ///Deletes a theme. + /// + public ThemeDeletePayload? themeDelete { get; set; } + /// + ///Copy theme files. Copying to existing theme files will overwrite them. + /// + public ThemeFilesCopyPayload? themeFilesCopy { get; set; } + /// + ///Deletes a theme's files. + /// + public ThemeFilesDeletePayload? themeFilesDelete { get; set; } + /// + ///Create or update theme files. + /// + public ThemeFilesUpsertPayload? themeFilesUpsert { get; set; } + /// + ///Publishes a theme. + /// + public ThemePublishPayload? themePublish { get; set; } + /// + ///Updates a theme. + /// + public ThemeUpdatePayload? themeUpdate { get; set; } + /// + ///Trigger the voiding of an uncaptured authorization transaction. + /// + public TransactionVoidPayload? transactionVoid { get; set; } + /// + ///Creates or updates translations. + /// + public TranslationsRegisterPayload? translationsRegister { get; set; } + /// + ///Deletes translations. + /// + public TranslationsRemovePayload? translationsRemove { get; set; } + /// + ///Asynchronously delete [URL redirects](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) in bulk. + /// + public UrlRedirectBulkDeleteAllPayload? urlRedirectBulkDeleteAll { get; set; } + /// + ///Asynchronously delete [URLRedirect](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) + ///objects in bulk by IDs. + ///Learn more about [URLRedirect](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect) + ///objects. + /// + public UrlRedirectBulkDeleteByIdsPayload? urlRedirectBulkDeleteByIds { get; set; } + /// + ///Asynchronously delete redirects in bulk. + /// + public UrlRedirectBulkDeleteBySavedSearchPayload? urlRedirectBulkDeleteBySavedSearch { get; set; } + /// + ///Asynchronously delete redirects in bulk. + /// + public UrlRedirectBulkDeleteBySearchPayload? urlRedirectBulkDeleteBySearch { get; set; } + /// + ///Creates a [`UrlRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object. + /// + public UrlRedirectCreatePayload? urlRedirectCreate { get; set; } + /// + ///Deletes a [`UrlRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object. + /// + public UrlRedirectDeletePayload? urlRedirectDelete { get; set; } + /// + ///Creates a [`UrlRedirectImport`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirectImport) object. + /// + ///After creating the `UrlRedirectImport` object, the `UrlRedirectImport` request can be performed using the [`urlRedirectImportSubmit`](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportSubmit) mutation. + /// + public UrlRedirectImportCreatePayload? urlRedirectImportCreate { get; set; } + /// + ///Submits a `UrlRedirectImport` request to be processed. + /// + ///The `UrlRedirectImport` request is first created with the [`urlRedirectImportCreate`](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportCreate) mutation. + /// + public UrlRedirectImportSubmitPayload? urlRedirectImportSubmit { get; set; } + /// + ///Updates a URL redirect. + /// + public UrlRedirectUpdatePayload? urlRedirectUpdate { get; set; } + /// + ///Creates a validation. + /// + public ValidationCreatePayload? validationCreate { get; set; } + /// + ///Deletes a validation. + /// + public ValidationDeletePayload? validationDelete { get; set; } + /// + ///Update a validation. + /// + public ValidationUpdatePayload? validationUpdate { get; set; } + /// + ///Creates a new web pixel settings. + /// + public WebPixelCreatePayload? webPixelCreate { get; set; } + /// + ///Deletes the web pixel shop settings. + /// + public WebPixelDeletePayload? webPixelDelete { get; set; } + /// + ///Updates the web pixel settings. + /// + public WebPixelUpdatePayload? webPixelUpdate { get; set; } + /// + ///Creates a new webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public WebhookSubscriptionCreatePayload? webhookSubscriptionCreate { get; set; } + /// + ///Deletes a webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public WebhookSubscriptionDeletePayload? webhookSubscriptionDelete { get; set; } + /// + ///Updates a webhook subscription. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public WebhookSubscriptionUpdatePayload? webhookSubscriptionUpdate { get; set; } + } + + /// + ///A signed upload parameter for uploading an asset to Shopify. + /// + ///Deprecated in favor of + ///[StagedUploadParameter](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadParameter), + ///which is used in + ///[StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget) + ///and returned by the + ///[stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate). + /// + public class MutationsStagedUploadTargetGenerateUploadParameter : GraphQLObject + { + /// + ///The upload parameter name. + /// + public string? name { get; set; } + /// + ///The upload parameter value. + /// + public string? value { get; set; } + } + + /// + ///A default cursor that you can use in queries to paginate your results. Each edge in a connection can + ///return a cursor, which is a reference to the edge's position in the connection. You can use an edge's cursor as + ///the starting point to retrieve the nodes before or after it in a connection. + /// + ///To learn more about using cursor-based pagination, refer to + ///[Paginating results with GraphQL](https://shopify.dev/api/usage/pagination-graphql). + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AbandonedCheckout), typeDiscriminator: "AbandonedCheckout")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] + [JsonDerivedType(typeof(CustomerAccountAppExtensionPage), typeDiscriminator: "CustomerAccountAppExtensionPage")] + [JsonDerivedType(typeof(CustomerAccountNativePage), typeDiscriminator: "CustomerAccountNativePage")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductVariant), typeDiscriminator: "ProductVariant")] + public interface INavigable : IGraphQLObject + { + public AbandonedCheckout? AsAbandonedCheckout() => this as AbandonedCheckout; + public Article? AsArticle() => this as Article; + public Company? AsCompany() => this as Company; + public CompanyLocation? AsCompanyLocation() => this as CompanyLocation; + public CustomerAccountAppExtensionPage? AsCustomerAccountAppExtensionPage() => this as CustomerAccountAppExtensionPage; + public CustomerAccountNativePage? AsCustomerAccountNativePage() => this as CustomerAccountNativePage; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + public Page? AsPage() => this as Page; + public Product? AsProduct() => this as Product; + public ProductVariant? AsProductVariant() => this as ProductVariant; + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; } + } + + /// + ///A navigation item, holding basic link attributes. + /// + public class NavigationItem : GraphQLObject + { + /// + ///The unique identifier of the navigation item. + /// + public string? id { get; set; } + /// + ///The name of the navigation item. + /// + public string? title { get; set; } + /// + ///The URL of the page that the navigation item links to. + /// + public string? url { get; set; } + } + + /// + ///An object with an ID field to support global identification, in accordance with the + ///[Relay specification](https://relay.dev/graphql/objectidentification.htm#sec-Node-Interface). + ///This interface is used by the [node](https://shopify.dev/api/admin-graphql/unstable/queries/node) + ///and [nodes](https://shopify.dev/api/admin-graphql/unstable/queries/nodes) queries. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AbandonedCheckout), typeDiscriminator: "AbandonedCheckout")] + [JsonDerivedType(typeof(AbandonedCheckoutLineItem), typeDiscriminator: "AbandonedCheckoutLineItem")] + [JsonDerivedType(typeof(Abandonment), typeDiscriminator: "Abandonment")] + [JsonDerivedType(typeof(AddAllProductsOperation), typeDiscriminator: "AddAllProductsOperation")] + [JsonDerivedType(typeof(AdditionalFee), typeDiscriminator: "AdditionalFee")] + [JsonDerivedType(typeof(App), typeDiscriminator: "App")] + [JsonDerivedType(typeof(AppCatalog), typeDiscriminator: "AppCatalog")] + [JsonDerivedType(typeof(AppCredit), typeDiscriminator: "AppCredit")] + [JsonDerivedType(typeof(AppInstallation), typeDiscriminator: "AppInstallation")] + [JsonDerivedType(typeof(AppPurchaseOneTime), typeDiscriminator: "AppPurchaseOneTime")] + [JsonDerivedType(typeof(AppRevenueAttributionRecord), typeDiscriminator: "AppRevenueAttributionRecord")] + [JsonDerivedType(typeof(AppSubscription), typeDiscriminator: "AppSubscription")] + [JsonDerivedType(typeof(AppUsageRecord), typeDiscriminator: "AppUsageRecord")] + [JsonDerivedType(typeof(Article), typeDiscriminator: "Article")] + [JsonDerivedType(typeof(BasicEvent), typeDiscriminator: "BasicEvent")] + [JsonDerivedType(typeof(Blog), typeDiscriminator: "Blog")] + [JsonDerivedType(typeof(BulkOperation), typeDiscriminator: "BulkOperation")] + [JsonDerivedType(typeof(BusinessEntity), typeDiscriminator: "BusinessEntity")] + [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")] + [JsonDerivedType(typeof(ChannelInformation), typeDiscriminator: "ChannelInformation")] + [JsonDerivedType(typeof(CheckoutProfile), typeDiscriminator: "CheckoutProfile")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Comment), typeDiscriminator: "Comment")] + [JsonDerivedType(typeof(CommentEvent), typeDiscriminator: "CommentEvent")] + [JsonDerivedType(typeof(Company), typeDiscriminator: "Company")] + [JsonDerivedType(typeof(CompanyAddress), typeDiscriminator: "CompanyAddress")] + [JsonDerivedType(typeof(CompanyContact), typeDiscriminator: "CompanyContact")] + [JsonDerivedType(typeof(CompanyContactRole), typeDiscriminator: "CompanyContactRole")] + [JsonDerivedType(typeof(CompanyContactRoleAssignment), typeDiscriminator: "CompanyContactRoleAssignment")] + [JsonDerivedType(typeof(CompanyLocation), typeDiscriminator: "CompanyLocation")] + [JsonDerivedType(typeof(CompanyLocationCatalog), typeDiscriminator: "CompanyLocationCatalog")] + [JsonDerivedType(typeof(CompanyLocationStaffMemberAssignment), typeDiscriminator: "CompanyLocationStaffMemberAssignment")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(CustomerAccountAppExtensionPage), typeDiscriminator: "CustomerAccountAppExtensionPage")] + [JsonDerivedType(typeof(CustomerAccountNativePage), typeDiscriminator: "CustomerAccountNativePage")] + [JsonDerivedType(typeof(CustomerPaymentMethod), typeDiscriminator: "CustomerPaymentMethod")] + [JsonDerivedType(typeof(CustomerSegmentMembersQuery), typeDiscriminator: "CustomerSegmentMembersQuery")] + [JsonDerivedType(typeof(CustomerVisit), typeDiscriminator: "CustomerVisit")] + [JsonDerivedType(typeof(DeliveryCarrierService), typeDiscriminator: "DeliveryCarrierService")] + [JsonDerivedType(typeof(DeliveryCondition), typeDiscriminator: "DeliveryCondition")] + [JsonDerivedType(typeof(DeliveryCountry), typeDiscriminator: "DeliveryCountry")] + [JsonDerivedType(typeof(DeliveryCustomization), typeDiscriminator: "DeliveryCustomization")] + [JsonDerivedType(typeof(DeliveryLocationGroup), typeDiscriminator: "DeliveryLocationGroup")] + [JsonDerivedType(typeof(DeliveryMethod), typeDiscriminator: "DeliveryMethod")] + [JsonDerivedType(typeof(DeliveryMethodDefinition), typeDiscriminator: "DeliveryMethodDefinition")] + [JsonDerivedType(typeof(DeliveryParticipant), typeDiscriminator: "DeliveryParticipant")] + [JsonDerivedType(typeof(DeliveryProfile), typeDiscriminator: "DeliveryProfile")] + [JsonDerivedType(typeof(DeliveryProfileItem), typeDiscriminator: "DeliveryProfileItem")] + [JsonDerivedType(typeof(DeliveryPromiseProvider), typeDiscriminator: "DeliveryPromiseProvider")] + [JsonDerivedType(typeof(DeliveryProvince), typeDiscriminator: "DeliveryProvince")] + [JsonDerivedType(typeof(DeliveryRateDefinition), typeDiscriminator: "DeliveryRateDefinition")] + [JsonDerivedType(typeof(DeliveryZone), typeDiscriminator: "DeliveryZone")] + [JsonDerivedType(typeof(DiscountAutomaticBxgy), typeDiscriminator: "DiscountAutomaticBxgy")] + [JsonDerivedType(typeof(DiscountAutomaticNode), typeDiscriminator: "DiscountAutomaticNode")] + [JsonDerivedType(typeof(DiscountCodeNode), typeDiscriminator: "DiscountCodeNode")] + [JsonDerivedType(typeof(DiscountNode), typeDiscriminator: "DiscountNode")] + [JsonDerivedType(typeof(DiscountRedeemCodeBulkCreation), typeDiscriminator: "DiscountRedeemCodeBulkCreation")] + [JsonDerivedType(typeof(Domain), typeDiscriminator: "Domain")] + [JsonDerivedType(typeof(DraftOrder), typeDiscriminator: "DraftOrder")] + [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")] + [JsonDerivedType(typeof(FulfillmentConstraintRule), typeDiscriminator: "FulfillmentConstraintRule")] + [JsonDerivedType(typeof(FulfillmentEvent), typeDiscriminator: "FulfillmentEvent")] + [JsonDerivedType(typeof(FulfillmentHold), typeDiscriminator: "FulfillmentHold")] + [JsonDerivedType(typeof(FulfillmentLineItem), typeDiscriminator: "FulfillmentLineItem")] + [JsonDerivedType(typeof(FulfillmentOrder), typeDiscriminator: "FulfillmentOrder")] + [JsonDerivedType(typeof(FulfillmentOrderDestination), typeDiscriminator: "FulfillmentOrderDestination")] + [JsonDerivedType(typeof(FulfillmentOrderLineItem), typeDiscriminator: "FulfillmentOrderLineItem")] + [JsonDerivedType(typeof(FulfillmentOrderMerchantRequest), typeDiscriminator: "FulfillmentOrderMerchantRequest")] + [JsonDerivedType(typeof(GenericFile), typeDiscriminator: "GenericFile")] + [JsonDerivedType(typeof(GiftCard), typeDiscriminator: "GiftCard")] + [JsonDerivedType(typeof(GiftCardCreditTransaction), typeDiscriminator: "GiftCardCreditTransaction")] + [JsonDerivedType(typeof(GiftCardDebitTransaction), typeDiscriminator: "GiftCardDebitTransaction")] + [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")] + [JsonDerivedType(typeof(LineItemGroup), typeDiscriminator: "LineItemGroup")] + [JsonDerivedType(typeof(Location), typeDiscriminator: "Location")] + [JsonDerivedType(typeof(MailingAddress), typeDiscriminator: "MailingAddress")] + [JsonDerivedType(typeof(Market), typeDiscriminator: "Market")] + [JsonDerivedType(typeof(MarketCatalog), typeDiscriminator: "MarketCatalog")] + [JsonDerivedType(typeof(MarketRegionCountry), typeDiscriminator: "MarketRegionCountry")] + [JsonDerivedType(typeof(MarketWebPresence), typeDiscriminator: "MarketWebPresence")] + [JsonDerivedType(typeof(MarketingActivity), typeDiscriminator: "MarketingActivity")] + [JsonDerivedType(typeof(MarketingEvent), typeDiscriminator: "MarketingEvent")] + [JsonDerivedType(typeof(MediaImage), typeDiscriminator: "MediaImage")] + [JsonDerivedType(typeof(Menu), typeDiscriminator: "Menu")] + [JsonDerivedType(typeof(Metafield), typeDiscriminator: "Metafield")] + [JsonDerivedType(typeof(MetafieldDefinition), typeDiscriminator: "MetafieldDefinition")] + [JsonDerivedType(typeof(MetafieldStorefrontVisibility), typeDiscriminator: "MetafieldStorefrontVisibility")] + [JsonDerivedType(typeof(Metaobject), typeDiscriminator: "Metaobject")] + [JsonDerivedType(typeof(MetaobjectDefinition), typeDiscriminator: "MetaobjectDefinition")] + [JsonDerivedType(typeof(Model3d), typeDiscriminator: "Model3d")] + [JsonDerivedType(typeof(OnlineStoreTheme), typeDiscriminator: "OnlineStoreTheme")] + [JsonDerivedType(typeof(Order), typeDiscriminator: "Order")] + [JsonDerivedType(typeof(OrderAdjustment), typeDiscriminator: "OrderAdjustment")] + [JsonDerivedType(typeof(OrderDisputeSummary), typeDiscriminator: "OrderDisputeSummary")] + [JsonDerivedType(typeof(OrderTransaction), typeDiscriminator: "OrderTransaction")] + [JsonDerivedType(typeof(Page), typeDiscriminator: "Page")] + [JsonDerivedType(typeof(PaymentCustomization), typeDiscriminator: "PaymentCustomization")] + [JsonDerivedType(typeof(PaymentMandate), typeDiscriminator: "PaymentMandate")] + [JsonDerivedType(typeof(PaymentSchedule), typeDiscriminator: "PaymentSchedule")] + [JsonDerivedType(typeof(PaymentTerms), typeDiscriminator: "PaymentTerms")] + [JsonDerivedType(typeof(PaymentTermsTemplate), typeDiscriminator: "PaymentTermsTemplate")] + [JsonDerivedType(typeof(PriceList), typeDiscriminator: "PriceList")] + [JsonDerivedType(typeof(PriceRule), typeDiscriminator: "PriceRule")] + [JsonDerivedType(typeof(PriceRuleDiscountCode), typeDiscriminator: "PriceRuleDiscountCode")] + [JsonDerivedType(typeof(PrivateMetafield), typeDiscriminator: "PrivateMetafield")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + [JsonDerivedType(typeof(ProductBundleOperation), typeDiscriminator: "ProductBundleOperation")] + [JsonDerivedType(typeof(ProductDeleteOperation), typeDiscriminator: "ProductDeleteOperation")] + [JsonDerivedType(typeof(ProductDuplicateOperation), typeDiscriminator: "ProductDuplicateOperation")] + [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")] + [JsonDerivedType(typeof(Publication), typeDiscriminator: "Publication")] + [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")] + [JsonDerivedType(typeof(ReverseDelivery), typeDiscriminator: "ReverseDelivery")] + [JsonDerivedType(typeof(ReverseDeliveryLineItem), typeDiscriminator: "ReverseDeliveryLineItem")] + [JsonDerivedType(typeof(ReverseFulfillmentOrder), typeDiscriminator: "ReverseFulfillmentOrder")] + [JsonDerivedType(typeof(ReverseFulfillmentOrderDisposition), typeDiscriminator: "ReverseFulfillmentOrderDisposition")] + [JsonDerivedType(typeof(ReverseFulfillmentOrderLineItem), typeDiscriminator: "ReverseFulfillmentOrderLineItem")] + [JsonDerivedType(typeof(SaleAdditionalFee), typeDiscriminator: "SaleAdditionalFee")] + [JsonDerivedType(typeof(SavedSearch), typeDiscriminator: "SavedSearch")] + [JsonDerivedType(typeof(ScriptTag), typeDiscriminator: "ScriptTag")] + [JsonDerivedType(typeof(Segment), typeDiscriminator: "Segment")] + [JsonDerivedType(typeof(SellingPlan), typeDiscriminator: "SellingPlan")] + [JsonDerivedType(typeof(SellingPlanGroup), typeDiscriminator: "SellingPlanGroup")] + [JsonDerivedType(typeof(ServerPixel), typeDiscriminator: "ServerPixel")] + [JsonDerivedType(typeof(Shop), typeDiscriminator: "Shop")] + [JsonDerivedType(typeof(ShopAddress), typeDiscriminator: "ShopAddress")] + [JsonDerivedType(typeof(ShopPolicy), typeDiscriminator: "ShopPolicy")] + [JsonDerivedType(typeof(ShopifyPaymentsAccount), typeDiscriminator: "ShopifyPaymentsAccount")] + [JsonDerivedType(typeof(ShopifyPaymentsBalanceTransaction), typeDiscriminator: "ShopifyPaymentsBalanceTransaction")] + [JsonDerivedType(typeof(ShopifyPaymentsBankAccount), typeDiscriminator: "ShopifyPaymentsBankAccount")] + [JsonDerivedType(typeof(ShopifyPaymentsDispute), typeDiscriminator: "ShopifyPaymentsDispute")] + [JsonDerivedType(typeof(ShopifyPaymentsDisputeEvidence), typeDiscriminator: "ShopifyPaymentsDisputeEvidence")] + [JsonDerivedType(typeof(ShopifyPaymentsDisputeFileUpload), typeDiscriminator: "ShopifyPaymentsDisputeFileUpload")] + [JsonDerivedType(typeof(ShopifyPaymentsDisputeFulfillment), typeDiscriminator: "ShopifyPaymentsDisputeFulfillment")] + [JsonDerivedType(typeof(ShopifyPaymentsPayout), typeDiscriminator: "ShopifyPaymentsPayout")] + [JsonDerivedType(typeof(ShopifyPaymentsVerification), typeDiscriminator: "ShopifyPaymentsVerification")] + [JsonDerivedType(typeof(StaffMember), typeDiscriminator: "StaffMember")] + [JsonDerivedType(typeof(StandardMetafieldDefinitionTemplate), typeDiscriminator: "StandardMetafieldDefinitionTemplate")] + [JsonDerivedType(typeof(StoreCreditAccount), typeDiscriminator: "StoreCreditAccount")] + [JsonDerivedType(typeof(StoreCreditAccountCreditTransaction), typeDiscriminator: "StoreCreditAccountCreditTransaction")] + [JsonDerivedType(typeof(StoreCreditAccountDebitRevertTransaction), typeDiscriminator: "StoreCreditAccountDebitRevertTransaction")] + [JsonDerivedType(typeof(StoreCreditAccountDebitTransaction), typeDiscriminator: "StoreCreditAccountDebitTransaction")] + [JsonDerivedType(typeof(StorefrontAccessToken), typeDiscriminator: "StorefrontAccessToken")] + [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(UnverifiedReturnLineItem), typeDiscriminator: "UnverifiedReturnLineItem")] + [JsonDerivedType(typeof(UrlRedirect), typeDiscriminator: "UrlRedirect")] + [JsonDerivedType(typeof(UrlRedirectImport), typeDiscriminator: "UrlRedirectImport")] + [JsonDerivedType(typeof(Validation), typeDiscriminator: "Validation")] + [JsonDerivedType(typeof(Video), typeDiscriminator: "Video")] + [JsonDerivedType(typeof(WebPixel), typeDiscriminator: "WebPixel")] + [JsonDerivedType(typeof(WebhookSubscription), typeDiscriminator: "WebhookSubscription")] + public interface INode : IGraphQLObject + { + public AbandonedCheckout? AsAbandonedCheckout() => this as AbandonedCheckout; + public AbandonedCheckoutLineItem? AsAbandonedCheckoutLineItem() => this as AbandonedCheckoutLineItem; + public Abandonment? AsAbandonment() => this as Abandonment; + public AddAllProductsOperation? AsAddAllProductsOperation() => this as AddAllProductsOperation; + public AdditionalFee? AsAdditionalFee() => this as AdditionalFee; + public App? AsApp() => this as App; + public AppCatalog? AsAppCatalog() => this as AppCatalog; + public AppCredit? AsAppCredit() => this as AppCredit; + public AppInstallation? AsAppInstallation() => this as AppInstallation; + public AppPurchaseOneTime? AsAppPurchaseOneTime() => this as AppPurchaseOneTime; + public AppRevenueAttributionRecord? AsAppRevenueAttributionRecord() => this as AppRevenueAttributionRecord; + public AppSubscription? AsAppSubscription() => this as AppSubscription; + public AppUsageRecord? AsAppUsageRecord() => this as AppUsageRecord; + public Article? AsArticle() => this as Article; + public BasicEvent? AsBasicEvent() => this as BasicEvent; + public Blog? AsBlog() => this as Blog; + public BulkOperation? AsBulkOperation() => this as BulkOperation; + public BusinessEntity? AsBusinessEntity() => this as BusinessEntity; + 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; + public ChannelInformation? AsChannelInformation() => this as ChannelInformation; + public CheckoutProfile? AsCheckoutProfile() => this as CheckoutProfile; + public Collection? AsCollection() => this as Collection; + public Comment? AsComment() => this as Comment; + public CommentEvent? AsCommentEvent() => this as CommentEvent; + public Company? AsCompany() => this as Company; + public CompanyAddress? AsCompanyAddress() => this as CompanyAddress; + public CompanyContact? AsCompanyContact() => this as CompanyContact; + public CompanyContactRole? AsCompanyContactRole() => this as CompanyContactRole; + public CompanyContactRoleAssignment? AsCompanyContactRoleAssignment() => this as CompanyContactRoleAssignment; + public CompanyLocation? AsCompanyLocation() => this as CompanyLocation; + public CompanyLocationCatalog? AsCompanyLocationCatalog() => this as CompanyLocationCatalog; + public CompanyLocationStaffMemberAssignment? AsCompanyLocationStaffMemberAssignment() => this as CompanyLocationStaffMemberAssignment; + public Customer? AsCustomer() => this as Customer; + public CustomerAccountAppExtensionPage? AsCustomerAccountAppExtensionPage() => this as CustomerAccountAppExtensionPage; + public CustomerAccountNativePage? AsCustomerAccountNativePage() => this as CustomerAccountNativePage; + public CustomerPaymentMethod? AsCustomerPaymentMethod() => this as CustomerPaymentMethod; + public CustomerSegmentMembersQuery? AsCustomerSegmentMembersQuery() => this as CustomerSegmentMembersQuery; + public CustomerVisit? AsCustomerVisit() => this as CustomerVisit; + public DeliveryCarrierService? AsDeliveryCarrierService() => this as DeliveryCarrierService; + public DeliveryCondition? AsDeliveryCondition() => this as DeliveryCondition; + public DeliveryCountry? AsDeliveryCountry() => this as DeliveryCountry; + public DeliveryCustomization? AsDeliveryCustomization() => this as DeliveryCustomization; + public DeliveryLocationGroup? AsDeliveryLocationGroup() => this as DeliveryLocationGroup; + public DeliveryMethod? AsDeliveryMethod() => this as DeliveryMethod; + public DeliveryMethodDefinition? AsDeliveryMethodDefinition() => this as DeliveryMethodDefinition; + public DeliveryParticipant? AsDeliveryParticipant() => this as DeliveryParticipant; + public DeliveryProfile? AsDeliveryProfile() => this as DeliveryProfile; + public DeliveryProfileItem? AsDeliveryProfileItem() => this as DeliveryProfileItem; + public DeliveryPromiseProvider? AsDeliveryPromiseProvider() => this as DeliveryPromiseProvider; + public DeliveryProvince? AsDeliveryProvince() => this as DeliveryProvince; + public DeliveryRateDefinition? AsDeliveryRateDefinition() => this as DeliveryRateDefinition; + public DeliveryZone? AsDeliveryZone() => this as DeliveryZone; + public DiscountAutomaticBxgy? AsDiscountAutomaticBxgy() => this as DiscountAutomaticBxgy; + public DiscountAutomaticNode? AsDiscountAutomaticNode() => this as DiscountAutomaticNode; + public DiscountCodeNode? AsDiscountCodeNode() => this as DiscountCodeNode; + public DiscountNode? AsDiscountNode() => this as DiscountNode; + public DiscountRedeemCodeBulkCreation? AsDiscountRedeemCodeBulkCreation() => this as DiscountRedeemCodeBulkCreation; + public Domain? AsDomain() => this as Domain; + public DraftOrder? AsDraftOrder() => this as DraftOrder; + 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; + public FulfillmentConstraintRule? AsFulfillmentConstraintRule() => this as FulfillmentConstraintRule; + public FulfillmentEvent? AsFulfillmentEvent() => this as FulfillmentEvent; + public FulfillmentHold? AsFulfillmentHold() => this as FulfillmentHold; + public FulfillmentLineItem? AsFulfillmentLineItem() => this as FulfillmentLineItem; + public FulfillmentOrder? AsFulfillmentOrder() => this as FulfillmentOrder; + public FulfillmentOrderDestination? AsFulfillmentOrderDestination() => this as FulfillmentOrderDestination; + public FulfillmentOrderLineItem? AsFulfillmentOrderLineItem() => this as FulfillmentOrderLineItem; + public FulfillmentOrderMerchantRequest? AsFulfillmentOrderMerchantRequest() => this as FulfillmentOrderMerchantRequest; + public GenericFile? AsGenericFile() => this as GenericFile; + public GiftCard? AsGiftCard() => this as GiftCard; + public GiftCardCreditTransaction? AsGiftCardCreditTransaction() => this as GiftCardCreditTransaction; + public GiftCardDebitTransaction? AsGiftCardDebitTransaction() => this as GiftCardDebitTransaction; + 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; + public LineItemGroup? AsLineItemGroup() => this as LineItemGroup; + public Location? AsLocation() => this as Location; + public MailingAddress? AsMailingAddress() => this as MailingAddress; + public Market? AsMarket() => this as Market; + public MarketCatalog? AsMarketCatalog() => this as MarketCatalog; + public MarketRegionCountry? AsMarketRegionCountry() => this as MarketRegionCountry; + public MarketWebPresence? AsMarketWebPresence() => this as MarketWebPresence; + public MarketingActivity? AsMarketingActivity() => this as MarketingActivity; + public MarketingEvent? AsMarketingEvent() => this as MarketingEvent; + public MediaImage? AsMediaImage() => this as MediaImage; + public Menu? AsMenu() => this as Menu; + public Metafield? AsMetafield() => this as Metafield; + public MetafieldDefinition? AsMetafieldDefinition() => this as MetafieldDefinition; + public MetafieldStorefrontVisibility? AsMetafieldStorefrontVisibility() => this as MetafieldStorefrontVisibility; + public Metaobject? AsMetaobject() => this as Metaobject; + public MetaobjectDefinition? AsMetaobjectDefinition() => this as MetaobjectDefinition; + public Model3d? AsModel3d() => this as Model3d; + public OnlineStoreTheme? AsOnlineStoreTheme() => this as OnlineStoreTheme; + public Order? AsOrder() => this as Order; + public OrderAdjustment? AsOrderAdjustment() => this as OrderAdjustment; + public OrderDisputeSummary? AsOrderDisputeSummary() => this as OrderDisputeSummary; + public OrderTransaction? AsOrderTransaction() => this as OrderTransaction; + public Page? AsPage() => this as Page; + public PaymentCustomization? AsPaymentCustomization() => this as PaymentCustomization; + public PaymentMandate? AsPaymentMandate() => this as PaymentMandate; + public PaymentSchedule? AsPaymentSchedule() => this as PaymentSchedule; + public PaymentTerms? AsPaymentTerms() => this as PaymentTerms; + public PaymentTermsTemplate? AsPaymentTermsTemplate() => this as PaymentTermsTemplate; + public PriceList? AsPriceList() => this as PriceList; + public PriceRule? AsPriceRule() => this as PriceRule; + public PriceRuleDiscountCode? AsPriceRuleDiscountCode() => this as PriceRuleDiscountCode; + public PrivateMetafield? AsPrivateMetafield() => this as PrivateMetafield; + public Product? AsProduct() => this as Product; + public ProductBundleOperation? AsProductBundleOperation() => this as ProductBundleOperation; + public ProductDeleteOperation? AsProductDeleteOperation() => this as ProductDeleteOperation; + public ProductDuplicateOperation? AsProductDuplicateOperation() => this as ProductDuplicateOperation; + 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; + public Publication? AsPublication() => this as Publication; + 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; + public ReverseDelivery? AsReverseDelivery() => this as ReverseDelivery; + public ReverseDeliveryLineItem? AsReverseDeliveryLineItem() => this as ReverseDeliveryLineItem; + public ReverseFulfillmentOrder? AsReverseFulfillmentOrder() => this as ReverseFulfillmentOrder; + public ReverseFulfillmentOrderDisposition? AsReverseFulfillmentOrderDisposition() => this as ReverseFulfillmentOrderDisposition; + public ReverseFulfillmentOrderLineItem? AsReverseFulfillmentOrderLineItem() => this as ReverseFulfillmentOrderLineItem; + public SaleAdditionalFee? AsSaleAdditionalFee() => this as SaleAdditionalFee; + public SavedSearch? AsSavedSearch() => this as SavedSearch; + public ScriptTag? AsScriptTag() => this as ScriptTag; + public Segment? AsSegment() => this as Segment; + public SellingPlan? AsSellingPlan() => this as SellingPlan; + public SellingPlanGroup? AsSellingPlanGroup() => this as SellingPlanGroup; + public ServerPixel? AsServerPixel() => this as ServerPixel; + public Shop? AsShop() => this as Shop; + public ShopAddress? AsShopAddress() => this as ShopAddress; + public ShopPolicy? AsShopPolicy() => this as ShopPolicy; + public ShopifyPaymentsAccount? AsShopifyPaymentsAccount() => this as ShopifyPaymentsAccount; + public ShopifyPaymentsBalanceTransaction? AsShopifyPaymentsBalanceTransaction() => this as ShopifyPaymentsBalanceTransaction; + public ShopifyPaymentsBankAccount? AsShopifyPaymentsBankAccount() => this as ShopifyPaymentsBankAccount; + public ShopifyPaymentsDispute? AsShopifyPaymentsDispute() => this as ShopifyPaymentsDispute; + public ShopifyPaymentsDisputeEvidence? AsShopifyPaymentsDisputeEvidence() => this as ShopifyPaymentsDisputeEvidence; + public ShopifyPaymentsDisputeFileUpload? AsShopifyPaymentsDisputeFileUpload() => this as ShopifyPaymentsDisputeFileUpload; + public ShopifyPaymentsDisputeFulfillment? AsShopifyPaymentsDisputeFulfillment() => this as ShopifyPaymentsDisputeFulfillment; + public ShopifyPaymentsPayout? AsShopifyPaymentsPayout() => this as ShopifyPaymentsPayout; + public ShopifyPaymentsVerification? AsShopifyPaymentsVerification() => this as ShopifyPaymentsVerification; + public StaffMember? AsStaffMember() => this as StaffMember; + public StandardMetafieldDefinitionTemplate? AsStandardMetafieldDefinitionTemplate() => this as StandardMetafieldDefinitionTemplate; + public StoreCreditAccount? AsStoreCreditAccount() => this as StoreCreditAccount; + public StoreCreditAccountCreditTransaction? AsStoreCreditAccountCreditTransaction() => this as StoreCreditAccountCreditTransaction; + public StoreCreditAccountDebitRevertTransaction? AsStoreCreditAccountDebitRevertTransaction() => this as StoreCreditAccountDebitRevertTransaction; + public StoreCreditAccountDebitTransaction? AsStoreCreditAccountDebitTransaction() => this as StoreCreditAccountDebitTransaction; + public StorefrontAccessToken? AsStorefrontAccessToken() => this as StorefrontAccessToken; + 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 UnverifiedReturnLineItem? AsUnverifiedReturnLineItem() => this as UnverifiedReturnLineItem; + public UrlRedirect? AsUrlRedirect() => this as UrlRedirect; + public UrlRedirectImport? AsUrlRedirectImport() => this as UrlRedirectImport; + public Validation? AsValidation() => this as Validation; + public Video? AsVideo() => this as Video; + public WebPixel? AsWebPixel() => this as WebPixel; + public WebhookSubscription? AsWebhookSubscription() => this as WebhookSubscription; + /// + ///A globally-unique ID. + /// + public string? id { get; } + } + + /// + ///The shop's online store channel. + /// + public class OnlineStore : GraphQLObject + { + /// + ///Storefront password information. + /// + public OnlineStorePasswordProtection? passwordProtection { get; set; } + } + + /// + ///Storefront password information. + /// + public class OnlineStorePasswordProtection : GraphQLObject + { + /// + ///Whether the storefront password is enabled. + /// + public bool? enabled { get; set; } + } + + /// + ///Online Store preview URL of the object. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + public interface IOnlineStorePreviewable : IGraphQLObject + { + public Product? AsProduct() => this as Product; + /// + ///The [preview URL](https://help.shopify.com/manual/online-store/setting-up#preview-your-store) for the online store. + /// + public string? onlineStorePreviewUrl { get; } + } + + /// + ///A theme for display on the storefront. + /// + public class OnlineStoreTheme : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///The date and time when the theme was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The files in the theme. + /// + public OnlineStoreThemeFileConnection? files { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the theme, set by the merchant. + /// + public string? name { get; set; } + /// + ///The prefix of the theme. + /// + public string? prefix { get; set; } + /// + ///Whether the theme is processing. + /// + public bool? processing { get; set; } + /// + ///Whether the theme processing failed. + /// + public bool? processingFailed { get; set; } + /// + ///The role of the theme. + /// + public string? role { get; set; } + /// + ///The theme store ID. + /// + public int? themeStoreId { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The date and time when the theme was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple OnlineStoreThemes. + /// + public class OnlineStoreThemeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OnlineStoreThemeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one OnlineStoreTheme and a cursor during pagination. + /// + public class OnlineStoreThemeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OnlineStoreThemeEdge. + /// + public OnlineStoreTheme? node { get; set; } + } + + /// + ///Represents a theme file. + /// + public class OnlineStoreThemeFile : GraphQLObject + { + /// + ///The body of the theme file. + /// + public IOnlineStoreThemeFileBody? body { get; set; } + /// + ///The md5 digest of the theme file for data integrity. + /// + public string? checksumMd5 { get; set; } + /// + ///The content type of the theme file. + /// + public string? contentType { get; set; } + /// + ///The date and time when the theme file was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The unique identifier of the theme file. + /// + public string? filename { get; set; } + /// + ///The size of the theme file in bytes. + /// + public ulong? size { get; set; } + /// + ///The date and time when the theme file was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Represents the body of a theme file. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(OnlineStoreThemeFileBodyBase64), typeDiscriminator: "OnlineStoreThemeFileBodyBase64")] + [JsonDerivedType(typeof(OnlineStoreThemeFileBodyText), typeDiscriminator: "OnlineStoreThemeFileBodyText")] + [JsonDerivedType(typeof(OnlineStoreThemeFileBodyUrl), typeDiscriminator: "OnlineStoreThemeFileBodyUrl")] + public interface IOnlineStoreThemeFileBody : IGraphQLObject + { + public OnlineStoreThemeFileBodyBase64? AsOnlineStoreThemeFileBodyBase64() => this as OnlineStoreThemeFileBodyBase64; + public OnlineStoreThemeFileBodyText? AsOnlineStoreThemeFileBodyText() => this as OnlineStoreThemeFileBodyText; + public OnlineStoreThemeFileBodyUrl? AsOnlineStoreThemeFileBodyUrl() => this as OnlineStoreThemeFileBodyUrl; + } + + /// + ///Represents the base64 encoded body of a theme file. + /// + public class OnlineStoreThemeFileBodyBase64 : GraphQLObject, IOnlineStoreThemeFileBody + { + /// + ///The body of the theme file, base64 encoded. + /// + public string? contentBase64 { get; set; } + } + + /// + ///The input type for a theme file body. + /// + public enum OnlineStoreThemeFileBodyInputType + { + /// + ///The text body of the theme file. + /// + TEXT, + /// + ///The base64 encoded body of a theme file. + /// + BASE64, + /// + ///The url of the body of a theme file. + /// + URL, + } + + /// + ///Represents the body of a theme file. + /// + public class OnlineStoreThemeFileBodyText : GraphQLObject, IOnlineStoreThemeFileBody + { + /// + ///The body of the theme file. + /// + public string? content { get; set; } + } + + /// + ///Represents the url of the body of a theme file. + /// + public class OnlineStoreThemeFileBodyUrl : GraphQLObject, IOnlineStoreThemeFileBody + { + /// + ///The url for the body of the theme file. + /// + public string? url { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple OnlineStoreThemeFiles. + /// + public class OnlineStoreThemeFileConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OnlineStoreThemeFileEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + /// + ///List of errors that occurred during the request. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one OnlineStoreThemeFile and a cursor during pagination. + /// + public class OnlineStoreThemeFileEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OnlineStoreThemeFileEdge. + /// + public OnlineStoreThemeFile? node { get; set; } + } + + /// + ///Represents the result of a copy, delete, or write operation performed on a theme file. + /// + public class OnlineStoreThemeFileOperationResult : GraphQLObject + { + /// + ///Unique identifier of the theme file. + /// + public string? filename { get; set; } + } + + /// + ///Represents the result of a read operation performed on a theme asset. + /// + public class OnlineStoreThemeFileReadResult : GraphQLObject + { + /// + ///Type that indicates the result of the operation. + /// + public string? code { get; set; } + /// + ///Unique identifier associated with the operation and the theme file. + /// + public string? filename { get; set; } + } + + /// + ///Type of a theme file operation result. + /// + public enum OnlineStoreThemeFileResultType + { + /// + ///Operation was successful. + /// + SUCCESS, + /// + ///Operation encountered an error. + /// + ERROR, + /// + ///Operation faced a conflict with the current state of the file. + /// + CONFLICT, + /// + ///Operation could not be processed due to issues with input data. + /// + UNPROCESSABLE_ENTITY, + /// + ///Operation was malformed or invalid. + /// + BAD_REQUEST, + /// + ///Operation timed out. + /// + TIMEOUT, + /// + ///Operation file could not be found. + /// + NOT_FOUND, + } + + /// + ///User errors for theme file operations. + /// + public class OnlineStoreThemeFilesUserErrors : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? code { get; set; } + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The filename of the theme file. + /// + public string? filename { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///Possible error codes that can be returned by `OnlineStoreThemeFilesUserErrors`. + /// + public enum OnlineStoreThemeFilesUserErrorsCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///There are theme files with conflicts. + /// + THEME_FILES_CONFLICT, + /// + ///There are files with the same filename. + /// + DUPLICATE_FILE_INPUT, + /// + ///Access denied. + /// + ACCESS_DENIED, + /// + ///This action is not available on your current plan. Please upgrade to access theme editing features. + /// + THEME_LIMITED_PLAN, + /// + ///The file is invalid. + /// + FILE_VALIDATION_ERROR, + /// + ///Error. + /// + ERROR, + } + + /// + ///An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object. + ///Learn more about + ///[editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). + /// + ///Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders, + ///then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted + ///access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`. + ///[Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope. + /// + ///**Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data. + /// + public class Order : GraphQLObject, ICommentEventSubject, IHasEvents, IHasLocalizationExtensions, IHasMetafieldDefinitions, IHasMetafields, ILegacyInteroperability, INode, ICommentEventEmbed, IMetafieldReference, IMetafieldReferencer + { + /// + ///A list of additional fees applied to the order. + /// + public IEnumerable? additionalFees { get; set; } + /// + ///A list of sales agreements associated with the order. + /// + public SalesAgreementConnection? agreements { get; set; } + /// + ///A list of messages that appear on the order page in the Shopify admin. + /// + public IEnumerable? alerts { get; set; } + /// + ///The application that created the order. + /// + public OrderApp? app { get; set; } + /// + ///The billing address of the customer. + /// + public MailingAddress? billingAddress { get; set; } + /// + ///Whether the billing address matches the shipping address. + /// + public bool? billingAddressMatchesShippingAddress { get; set; } + /// + ///Whether the order can be manually marked as paid. + /// + public bool? canMarkAsPaid { get; set; } + /// + ///Whether a customer email exists for the order. + /// + public bool? canNotifyCustomer { get; set; } + /// + ///The reason provided when the order was canceled. + ///Returns `null` if the order wasn't canceled. + /// + public string? cancelReason { get; set; } + /// + ///Cancellation details for the order. + /// + public OrderCancellation? cancellation { get; set; } + /// + ///The date and time when the order was canceled. + ///Returns `null` if the order wasn't canceled. + /// + public DateTime? cancelledAt { get; set; } + /// + ///Whether payment for the order can be captured. + /// + public bool? capturable { get; set; } + + /// + ///The total order-level discount amount, before returns, in shop currency. + /// + [Obsolete("Use `cartDiscountAmountSet` instead.")] + public decimal? cartDiscountAmount { get; set; } + /// + ///The total order-level discount amount, before returns, in shop and presentment currencies. + /// + public MoneyBag? cartDiscountAmountSet { get; set; } + + /// + ///The channel that created the order. + /// + [Obsolete("Use `publication` instead.")] + public Channel? channel { get; set; } + /// + ///Details about the channel that created the order. + /// + public ChannelInformation? channelInformation { get; set; } + /// + ///The IP address of the API client that created the order. + /// + public string? clientIp { get; set; } + /// + ///Whether the order is closed. + /// + public bool? closed { get; set; } + /// + ///The date and time when the order was closed. + ///Returns `null` if the order isn't closed. + /// + public DateTime? closedAt { get; set; } + /// + ///A randomly generated alpha-numeric identifier for the order that may be shown to the customer + ///instead of the sequential order name. For example, "XPAV284CT", "R50KELTJP" or "35PKUN0UJ". + ///This value isn't guaranteed to be unique. + /// + public string? confirmationNumber { get; set; } + /// + ///Whether inventory has been reserved for the order. + /// + public bool? confirmed { get; set; } + /// + ///Date and time when the order was created in Shopify. + /// + public DateTime? createdAt { get; set; } + /// + ///The shop currency when the order was placed. + /// + public string? currencyCode { get; set; } + /// + ///The current order-level discount amount after all order updates, in shop and presentment currencies. + /// + public MoneyBag? currentCartDiscountAmountSet { get; set; } + /// + ///The current shipping price after applying refunds and discounts. If the parent `order.taxesIncluded` field is true, then this price includes taxes. Otherwise, this field is the pre-tax price. + /// + public MoneyBag? currentShippingPriceSet { get; set; } + /// + ///The sum of the quantities for all line items that contribute to the order's current subtotal price. + /// + public int? currentSubtotalLineItemsQuantity { get; set; } + /// + ///The sum of the prices for all line items after discounts and returns, in shop and presentment currencies. + ///If `taxesIncluded` is `true`, then the subtotal also includes tax. + /// + public MoneyBag? currentSubtotalPriceSet { get; set; } + /// + ///A list of all tax lines applied to line items on the order, after returns. + ///Tax line prices represent the total price for all tax lines with the same `rate` and `title`. + /// + public IEnumerable? currentTaxLines { get; set; } + /// + ///The total amount of additional fees after returns, in shop and presentment currencies. + ///Returns `null` if there are no additional fees for the order. + /// + public MoneyBag? currentTotalAdditionalFeesSet { get; set; } + /// + ///The total amount discounted on the order after returns, in shop and presentment currencies. + ///This includes both order and line level discounts. + /// + public MoneyBag? currentTotalDiscountsSet { get; set; } + /// + ///The total amount of duties after returns, in shop and presentment currencies. + ///Returns `null` if duties aren't applicable. + /// + public MoneyBag? currentTotalDutiesSet { get; set; } + /// + ///The total price of the order, after returns, in shop and presentment currencies. + ///This includes taxes and discounts. + /// + public MoneyBag? currentTotalPriceSet { get; set; } + /// + ///The sum of the prices of all tax lines applied to line items on the order, after returns, in shop and presentment currencies. + /// + public MoneyBag? currentTotalTaxSet { get; set; } + /// + ///The total weight of the order after returns, in grams. + /// + public ulong? currentTotalWeight { get; set; } + /// + ///A list of additional merchant-facing details that have been added to the order. For example, whether an order is a customer's first. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer that placed the order. + /// + public Customer? customer { get; set; } + /// + ///Whether the customer agreed to receive marketing materials. + /// + public bool? customerAcceptsMarketing { get; set; } + + /// + ///The customer's visits and interactions with the online store before placing the order. + /// + [Obsolete("Use `customerJourneySummary` instead.")] + public CustomerJourney? customerJourney { get; set; } + /// + ///The customer's visits and interactions with the online store before placing the order. + /// + public CustomerJourneySummary? customerJourneySummary { get; set; } + /// + ///A two-letter or three-letter language code, optionally followed by a region modifier. + /// + public string? customerLocale { get; set; } + /// + ///A list of discounts that are applied to the order, not including order edits and refunds. + /// + public DiscountApplicationConnection? discountApplications { get; set; } + /// + ///The discount code used for the order. + /// + public string? discountCode { get; set; } + /// + ///The discount codes used for the order. + /// + public IEnumerable? discountCodes { get; set; } + /// + ///The primary address of the customer. + ///Returns `null` if neither the shipping address nor the billing address was provided. + /// + public MailingAddress? displayAddress { get; set; } + /// + ///The financial status of the order that can be shown to the merchant. + ///This field doesn't capture all the details of an order's financial state. It should only be used for display summary purposes. + /// + public string? displayFinancialStatus { get; set; } + /// + ///The fulfillment status for the order that can be shown to the merchant. + ///This field does not capture all the details of an order's fulfillment state. It should only be used for display summary purposes. + ///For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object. + /// + public string? displayFulfillmentStatus { get; set; } + /// + ///A list of the disputes associated with the order. + /// + public IEnumerable? disputes { get; set; } + /// + ///Whether duties are included in the subtotal price of the order. + /// + public bool? dutiesIncluded { get; set; } + /// + ///Whether the order has had any edits applied. + /// + public bool? edited { get; set; } + /// + ///The email address associated with the customer. + /// + public string? email { get; set; } + /// + ///Whether taxes on the order are estimated. + ///This field returns `false` when taxes on the order are finalized and aren't subject to any changes. + /// + public bool? estimatedTaxes { get; set; } + /// + ///A list of events associated with the order. + /// + public EventConnection? events { get; set; } + /// + ///A list of ExchangeV2s for the order. + /// + public ExchangeV2Connection? exchangeV2s { get; set; } + /// + ///Whether there are line items that can be fulfilled. + ///This field returns `false` when the order has no fulfillable line items. + ///For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object. + /// + public bool? fulfillable { get; set; } + /// + ///A list of fulfillment orders for a specific order. + /// + ///[FulfillmentOrder API access scopes](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder#api-access-scopes) + ///govern which fulfillments orders are returned. + ///An API client will only receive a subset of the fulfillment orders which belong to an order + ///if they don't have the necessary access scopes to view all of the fulfillment orders. + ///In the case that an API client does not have the access scopes necessary to view + ///any of the fulfillment orders that belong to an order, an empty array will be returned. + /// + public FulfillmentOrderConnection? fulfillmentOrders { get; set; } + /// + ///List of shipments for the order. + /// + public IEnumerable? fulfillments { get; set; } + /// + ///The count of fulfillments including the cancelled fulfillments. + /// + public Count? fulfillmentsCount { get; set; } + /// + ///Whether the order has been paid in full. + /// + public bool? fullyPaid { get; set; } + /// + ///Whether the merchant added a timeline comment to the order. + /// + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + + /// + ///The URL of the first page of the online store that the customer visited before they submitted the order. + /// + [Obsolete("Use `customerJourneySummary.lastVisit.landingPageHtml` instead")] + public string? landingPageDisplayText { get; set; } + + /// + ///The first page of the online store that the customer visited before they submitted the order. + /// + [Obsolete("Use `customerJourneySummary.lastVisit.landingPage` instead")] + public string? landingPageUrl { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///A list of the order's line items. + /// + public LineItemConnection? lineItems { get; set; } + /// + ///List of localization extensions for the resource. + /// + public LocalizationExtensionConnection? localizationExtensions { get; set; } + /// + ///The merchant's business entity associated with the order. + /// + public BusinessEntity? merchantBusinessEntity { get; set; } + /// + ///Whether the order can be edited by the merchant. For example, canceled orders can’t be edited. + /// + public bool? merchantEditable { get; set; } + /// + ///A list of reasons why the order can't be edited. For example, "Canceled orders can't be edited". + /// + public IEnumerable? merchantEditableErrors { get; set; } + /// + ///The application acting as the Merchant of Record for the order. + /// + public OrderApp? merchantOfRecordApp { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The unique identifier for the order that appears on the order page in the Shopify admin and the Order status page. + ///For example, "#1001", "EN1001", or "1001-A". + ///This value isn't unique across multiple stores. + /// + public string? name { get; set; } + + /// + ///The net payment for the order, based on the total amount received minus the total amount refunded, in shop currency. + /// + [Obsolete("Use `netPaymentSet` instead.")] + public decimal? netPayment { get; set; } + /// + ///The net payment for the order, based on the total amount received minus the total amount refunded, in shop and presentment currencies. + /// + public MoneyBag? netPaymentSet { get; set; } + /// + ///A list of line items that can't be fulfilled. + ///For example, tips and fully refunded line items can't be fulfilled. + ///For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object. + /// + public LineItemConnection? nonFulfillableLineItems { get; set; } + /// + ///The contents of the note associated with the order. + /// + public string? note { get; set; } + /// + ///The total amount of additional fees after returns, in shop and presentment currencies. + ///Returns `null` if there are no additional fees for the order. + /// + public MoneyBag? originalTotalAdditionalFeesSet { get; set; } + /// + ///The total amount of duties before returns, in shop and presentment currencies. + ///Returns `null` if duties aren't applicable. + /// + public MoneyBag? originalTotalDutiesSet { get; set; } + /// + ///The total price of the order at the time of order creation, in shop and presentment currencies. + /// + public MoneyBag? originalTotalPriceSet { get; set; } + /// + ///The payment collection details for the order. + /// + public OrderPaymentCollectionDetails? paymentCollectionDetails { get; set; } + /// + ///A list of the names of all payment gateways used for the order. + ///For example, "Shopify Payments" and "Cash on Delivery (COD)". + /// + public IEnumerable? paymentGatewayNames { get; set; } + /// + ///The payment terms associated with the order. + /// + public PaymentTerms? paymentTerms { get; set; } + /// + ///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. + /// + public string? poNumber { get; set; } + /// + ///The payment `CurrencyCode` of the customer for the order. + /// + public string? presentmentCurrencyCode { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time when the order was processed. + ///This date and time might not match the date and time when the order was created. + /// + public DateTime? processedAt { get; set; } + /// + ///The publication that the order was created from. + /// + public Publication? publication { get; set; } + /// + ///The purchasing entity for the order. + /// + public IPurchasingEntity? purchasingEntity { get; set; } + + /// + ///The marketing referral code from the link that the customer clicked to visit the store. + ///Supports the following URL attributes: "ref", "source", or "r". + ///For example, if the URL is `{shop}.myshopify.com/products/slide?ref=j2tj1tn2`, then this value is `j2tj1tn2`. + /// + [Obsolete("Use `customerJourneySummary.lastVisit.referralCode` instead")] + public string? referralCode { get; set; } + + /// + ///A web domain or short description of the source that sent the customer to your online store. For example, "shopify.com" or "email". + /// + [Obsolete("Use `customerJourneySummary.lastVisit.referralInfoHtml` instead")] + public string? referrerDisplayText { get; set; } + + /// + ///The URL of the webpage where the customer clicked a link that sent them to your online store. + /// + [Obsolete("Use `customerJourneySummary.lastVisit.referrerUrl` instead")] + public string? referrerUrl { get; set; } + /// + ///The difference between the suggested and actual refund amount of all refunds that have been applied to the order. A positive value indicates a difference in the merchant's favor, and a negative value indicates a difference in the customer's favor. + /// + public MoneyBag? refundDiscrepancySet { get; set; } + /// + ///Whether the order can be refunded. + /// + public bool? refundable { get; set; } + /// + ///A list of refunds that have been applied to the order. + /// + public IEnumerable? refunds { get; set; } + /// + ///The URL of the source that the order originated from, if found in the domain registry. + /// + public string? registeredSourceUrl { get; set; } + /// + ///Whether the order has shipping lines or at least one line item on the order that requires shipping. + /// + public bool? requiresShipping { get; set; } + /// + ///Whether any line item on the order can be restocked. + /// + public bool? restockable { get; set; } + /// + ///The physical location where a retail order is created or completed, except for draft POS orders completed via the “mark as paid” flow in Admin, which return null. + /// + public Location? retailLocation { get; set; } + /// + ///The order's aggregated return status for display purposes. + /// + public string? returnStatus { get; set; } + /// + ///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 string? 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. + /// + public MailingAddress? shippingAddress { get; set; } + /// + ///A summary of all shipping costs on the order. + /// + public ShippingLine? shippingLine { get; set; } + /// + ///A list of the order's shipping lines. + /// + public ShippingLineConnection? shippingLines { get; set; } + /// + ///The Shopify Protect details for the order. If Shopify Protect is disabled for the shop, then this will be null. + /// + public ShopifyProtectOrderSummary? shopifyProtect { get; set; } + /// + ///A unique POS or third party order identifier. + ///For example, "1234-12-1000" or "111-98567-54". The `receipt_number` field is derived from this value for POS orders. + /// + public string? sourceIdentifier { get; set; } + /// + ///The name of the source associated with the order. + /// + public string? sourceName { get; set; } + /// + ///The staff member associated with the order. + /// + public StaffMember? staffMember { get; set; } + /// + ///The URL where the customer can check the order's current status. + /// + public string? statusPageUrl { get; set; } + /// + ///The sum of the quantities for all line items that contribute to the order's subtotal price. + /// + public int? subtotalLineItemsQuantity { get; set; } + + /// + ///The sum of the prices for all line items after discounts and before returns, in shop currency. + ///If `taxesIncluded` is `true`, then the subtotal also includes tax. + /// + [Obsolete("Use `subtotalPriceSet` instead.")] + public decimal? subtotalPrice { get; set; } + /// + ///The sum of the prices for all line items after discounts and before returns, in shop and presentment currencies. + ///If `taxesIncluded` is `true`, then the subtotal also includes tax. + /// + public MoneyBag? subtotalPriceSet { get; set; } + /// + ///A suggested refund for the order. + /// + public SuggestedRefund? suggestedRefund { get; set; } + /// + ///A comma separated list of tags associated with the order. Updating `tags` overwrites + ///any existing tags that were previously added to the order. To add new tags without overwriting + ///existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd) + ///mutation. + /// + public IEnumerable? tags { get; set; } + /// + ///Whether taxes are exempt on the order. + /// + public bool? taxExempt { get; set; } + /// + ///A list of all tax lines applied to line items on the order, before returns. + ///Tax line prices represent the total price for all tax lines with the same `rate` and `title`. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Whether taxes are included in the subtotal price of the order. + /// + public bool? taxesIncluded { get; set; } + /// + ///Whether the order is a test. + ///Test orders are made using the Shopify Bogus Gateway or a payment provider with test mode enabled. + ///A test order can't be converted into a real order and vice versa. + /// + public bool? test { get; set; } + + /// + ///The authorized amount that's uncaptured or undercaptured, in shop currency. + ///This amount isn't adjusted for returns. + /// + [Obsolete("Use `totalCapturableSet` instead.")] + public decimal? totalCapturable { get; set; } + /// + ///The authorized amount that's uncaptured or undercaptured, in shop and presentment currencies. + ///This amount isn't adjusted for returns. + /// + public MoneyBag? totalCapturableSet { get; set; } + /// + ///The total rounding adjustment applied to payments or refunds for an Order involving cash payments. Applies to some countries where cash transactions are rounded to the nearest currency denomination. + /// + public CashRoundingAdjustment? totalCashRoundingAdjustment { get; set; } + + /// + ///The total amount discounted on the order before returns, in shop currency. + ///This includes both order and line level discounts. + /// + [Obsolete("Use `totalDiscountsSet` instead.")] + public decimal? totalDiscounts { get; set; } + /// + ///The total amount discounted on the order before returns, in shop and presentment currencies. + ///This includes both order and line level discounts. + /// + public MoneyBag? totalDiscountsSet { get; set; } + /// + ///The total amount not yet transacted for the order, in shop and presentment currencies. + ///A positive value indicates a difference in the merchant's favor (payment from customer to merchant) and a negative value indicates a difference in the customer's favor (refund from merchant to customer). + /// + public MoneyBag? totalOutstandingSet { get; set; } + + /// + ///The total price of the order, before returns, in shop currency. + ///This includes taxes and discounts. + /// + [Obsolete("Use `totalPriceSet` instead.")] + public decimal? totalPrice { get; set; } + /// + ///The total price of the order, before returns, in shop and presentment currencies. + ///This includes taxes and discounts. + /// + public MoneyBag? totalPriceSet { get; set; } + + /// + ///The total amount received from the customer before returns, in shop currency. + /// + [Obsolete("Use `totalReceivedSet` instead.")] + public decimal? totalReceived { get; set; } + /// + ///The total amount received from the customer before returns, in shop and presentment currencies. + /// + public MoneyBag? totalReceivedSet { get; set; } + + /// + ///The total amount that was refunded, in shop currency. + /// + [Obsolete("Use `totalRefundedSet` instead.")] + public decimal? totalRefunded { get; set; } + /// + ///The total amount that was refunded, in shop and presentment currencies. + /// + public MoneyBag? totalRefundedSet { get; set; } + /// + ///The total amount of shipping that was refunded, in shop and presentment currencies. + /// + public MoneyBag? totalRefundedShippingSet { get; set; } + + /// + ///The total shipping amount before discounts and returns, in shop currency. + /// + [Obsolete("Use `totalShippingPriceSet` instead.")] + public decimal? totalShippingPrice { get; set; } + /// + ///The total shipping amount before discounts and returns, in shop and presentment currencies. + /// + public MoneyBag? totalShippingPriceSet { get; set; } + + /// + ///The total tax amount before returns, in shop currency. + /// + [Obsolete("Use `totalTaxSet` instead.")] + public decimal? totalTax { get; set; } + /// + ///The total tax amount before returns, in shop and presentment currencies. + /// + public MoneyBag? totalTaxSet { get; set; } + + /// + ///The sum of all tip amounts for the order, in shop currency. + /// + [Obsolete("Use `totalTipReceivedSet` instead.")] + public MoneyV2? totalTipReceived { get; set; } + /// + ///The sum of all tip amounts for the order, in shop and presentment currencies. + /// + public MoneyBag? totalTipReceivedSet { get; set; } + /// + ///The total weight of the order before returns, in grams. + /// + public ulong? totalWeight { get; set; } + /// + ///A list of transactions associated with the order. + /// + public IEnumerable? transactions { get; set; } + /// + ///The number of transactions associated with the order. + /// + public Count? transactionsCount { get; set; } + /// + ///Whether no payments have been made for the order. + /// + public bool? unpaid { get; set; } + /// + ///The date and time when the order was modified last. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///The possible order action types for a + ///[sales agreement](https://shopify.dev/api/admin-graphql/latest/interfaces/salesagreement). + /// + public enum OrderActionType + { + /// + ///An order with a purchase or charge. + /// + ORDER, + /// + ///An edit to the order. + /// + ORDER_EDIT, + /// + ///A refund on the order. + /// + REFUND, + /// + ///A return on the order. + /// + RETURN, + /// + ///An unknown agreement action. Represents new actions that may be added in future versions. + /// + UNKNOWN, + } + + /// + ///An order adjustment accounts for the difference between a calculated and actual refund amount. + /// + public class OrderAdjustment : GraphQLObject, INode + { + /// + ///The amount of the order adjustment in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///An optional reason that explains a discrepancy between calculated and actual refund amounts. + /// + public string? reason { get; set; } + /// + ///The tax amount of the order adjustment in shop and presentment currencies. + /// + public MoneyBag? taxAmountSet { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple OrderAdjustments. + /// + public class OrderAdjustmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OrderAdjustmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Discrepancy reasons for order adjustments. + /// + public enum OrderAdjustmentDiscrepancyReason + { + /// + ///The discrepancy reason is restocking. + /// + RESTOCK, + /// + ///The discrepancy reason is damage. + /// + DAMAGE, + /// + ///The discrepancy reason is customer. + /// + CUSTOMER, + /// + ///The discrepancy reason is not one of the predefined reasons. + /// + REFUND_DISCREPANCY, + /// + ///The discrepancy reason is balance adjustment. + /// + FULL_RETURN_BALANCING_ADJUSTMENT, + /// + ///The discrepancy reason is pending refund. + /// + PENDING_REFUND_DISCREPANCY, + } + + /// + ///An auto-generated type which holds one OrderAdjustment and a cursor during pagination. + /// + public class OrderAdjustmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OrderAdjustmentEdge. + /// + public OrderAdjustment? node { get; set; } + } + + /// + ///Discrepancy reasons for order adjustments. + /// + public enum OrderAdjustmentInputDiscrepancyReason + { + /// + ///The discrepancy reason is restocking. + /// + RESTOCK, + /// + ///The discrepancy reason is damage. + /// + DAMAGE, + /// + ///The discrepancy reason is customer. + /// + CUSTOMER, + /// + ///The discrepancy reason is not one of the predefined reasons. + /// + OTHER, + } + + /// + ///An agreement associated with an order placement. + /// + public class OrderAgreement : 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 order associated with the agreement. + /// + public Order? order { get; set; } + /// + ///The reason the agremeent was created. + /// + public string? reason { 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; } + } + + /// + ///The [application](https://shopify.dev/apps) that created the order. + /// + public class OrderApp : GraphQLObject + { + /// + ///The application icon. + /// + public Image? icon { get; set; } + /// + ///The application ID. + /// + public string? id { get; set; } + /// + ///The name of the application. + /// + public string? name { get; set; } + } + + /// + ///Return type for `orderCancel` mutation. + /// + public class OrderCancelPayload : GraphQLObject + { + /// + ///The job that asynchronously cancels the order. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? orderCancelUserErrors { get; set; } + + /// + ///The list of errors that occurred from executing the mutation. + /// + [Obsolete("Use `orderCancelUserErrors` instead.")] + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents the reason for the order's cancellation. + /// + public enum OrderCancelReason + { + /// + ///The customer wanted to cancel the order. + /// + CUSTOMER, + /// + ///Payment was declined. + /// + DECLINED, + /// + ///The order was fraudulent. + /// + FRAUD, + /// + ///There was insufficient inventory. + /// + INVENTORY, + /// + ///Staff made an error. + /// + STAFF, + /// + ///The order was canceled for an unlisted reason. + /// + OTHER, + } + + /// + ///Errors related to order cancellation. + /// + public class OrderCancelUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderCancelUserError`. + /// + public enum OrderCancelUserErrorCode + { + /// + ///An order refund was requested but the user does not have the refund_orders permission. + /// + NO_REFUND_PERMISSION, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Details about the order cancellation. + /// + public class OrderCancellation : GraphQLObject + { + /// + ///Staff provided note for the order cancellation. + /// + public string? staffNote { get; set; } + } + + /// + ///Return type for `orderCapture` mutation. + /// + public class OrderCapturePayload : GraphQLObject + { + /// + ///The created capture transaction. + /// + public OrderTransaction? transaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `orderClose` mutation. + /// + public class OrderClosePayload : GraphQLObject + { + /// + ///The closed order. + /// + public Order? order { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Orders. + /// + public class OrderConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OrderEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The status of payments associated with the order. Can only be set when the order is created. + /// + public enum OrderCreateFinancialStatus + { + /// + ///The payments are pending. Payment might fail in this state. Check again to confirm whether the payments have been paid successfully. + /// + PENDING, + /// + ///The payments have been authorized. + /// + AUTHORIZED, + /// + ///The order has been partially paid. + /// + PARTIALLY_PAID, + /// + ///The payments have been paid. + /// + PAID, + /// + ///The payments have been partially refunded. + /// + PARTIALLY_REFUNDED, + /// + ///The payments have been refunded. + /// + REFUNDED, + /// + ///The payments have been voided. + /// + VOIDED, + /// + ///The payments have been expired. + /// + EXPIRED, + } + + /// + ///The order's status in terms of fulfilled line items. + /// + public enum OrderCreateFulfillmentStatus + { + /// + ///Every line item in the order has been fulfilled. + /// + FULFILLED, + /// + ///At least one line item in the order has been fulfilled. + /// + PARTIAL, + /// + ///Every line item in the order has been restocked and the order canceled. + /// + RESTOCKED, + } + + /// + ///The types of behavior to use when updating inventory. + /// + public enum OrderCreateInputsInventoryBehavior + { + /// + ///Do not claim inventory. + /// + BYPASS, + /// + ///Ignore the product's inventory policy and claim inventory. + /// + DECREMENT_IGNORING_POLICY, + /// + ///Follow the product's inventory policy and claim inventory, if possible. + /// + DECREMENT_OBEYING_POLICY, + } + + /// + ///Return type for `orderCreateMandatePayment` mutation. + /// + public class OrderCreateMandatePaymentPayload : GraphQLObject + { + /// + ///The async job used for charging the payment. + /// + public Job? job { get; set; } + /// + ///The Unique ID for the created payment. + /// + public string? paymentReferenceId { 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 `OrderCreateMandatePayment`. + /// + public class OrderCreateMandatePaymentUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderCreateMandatePaymentUserError`. + /// + public enum OrderCreateMandatePaymentUserErrorCode + { + /// + ///Errors for mandate payment on order. + /// + ORDER_MANDATE_PAYMENT_ERROR_CODE, + } + + /// + ///Return type for `orderCreate` mutation. + /// + public class OrderCreatePayload : GraphQLObject + { + /// + ///The order that was created. + /// + public Order? order { 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 `OrderCreate`. + /// + public class OrderCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderCreateUserError`. + /// + public enum OrderCreateUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Indicates that the line item fulfillment service handle is invalid. + /// + FULFILLMENT_SERVICE_INVALID, + /// + ///Indicates that the inventory claim failed during order creation. + /// + INVENTORY_CLAIM_FAILED, + /// + ///Indicates that the processed_at field is invalid, such as when it references a future date. + /// + PROCESSED_AT_INVALID, + /// + ///Indicates that the tax line rate is missing - only enforced for LineItem or ShippingLine-level tax lines. + /// + TAX_LINE_RATE_MISSING, + } + + /// + ///Return type for `orderDelete` mutation. + /// + public class OrderDeletePayload : GraphQLObject + { + /// + ///Deleted order ID. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Errors related to deleting an order. + /// + public class OrderDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderDeleteUserError`. + /// + public enum OrderDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Represents the order's current financial status. + /// + public enum OrderDisplayFinancialStatus + { + /// + ///Displayed as **Pending**. + /// + PENDING, + /// + ///Displayed as **Authorized**. + /// + AUTHORIZED, + /// + ///Displayed as **Partially paid**. + /// + PARTIALLY_PAID, + /// + ///Displayed as **Partially refunded**. + /// + PARTIALLY_REFUNDED, + /// + ///Displayed as **Voided**. + /// + VOIDED, + /// + ///Displayed as **Paid**. + /// + PAID, + /// + ///Displayed as **Refunded**. + /// + REFUNDED, + /// + ///Displayed as **Expired**. + /// + EXPIRED, + } + + /// + ///Represents the order's aggregated fulfillment status for display purposes. + /// + public enum OrderDisplayFulfillmentStatus + { + /// + ///Displayed as **Unfulfilled**. None of the items in the order have been fulfilled. + /// + UNFULFILLED, + /// + ///Displayed as **Partially fulfilled**. Some of the items in the order have been fulfilled. + /// + PARTIALLY_FULFILLED, + /// + ///Displayed as **Fulfilled**. All the items in the order have been fulfilled. + /// + FULFILLED, + /// + ///Displayed as **Restocked**. All the items in the order have been restocked. Replaced by the "UNFULFILLED" status. + /// + RESTOCKED, + /// + ///Displayed as **Pending fulfillment**. A request for fulfillment of some items awaits a response from the fulfillment service. Replaced by the "IN_PROGRESS" status. + /// + PENDING_FULFILLMENT, + /// + ///Displayed as **Open**. None of the items in the order have been fulfilled. Replaced by "UNFULFILLED" status. + /// + OPEN, + /// + ///Displayed as **In progress**. Some of the items in the order have been fulfilled, or a request for fulfillment has been sent to the fulfillment service. + /// + IN_PROGRESS, + /// + ///Displayed as **On hold**. All of the unfulfilled items in this order are on hold. + /// + ON_HOLD, + /// + ///Displayed as **Scheduled**. All of the unfulfilled items in this order are scheduled for fulfillment at later time. + /// + SCHEDULED, + /// + ///Displayed as **Request declined**. Some of the items in the order have been rejected for fulfillment by the fulfillment service. + /// + REQUEST_DECLINED, + } + + /// + ///A summary of the important details for a dispute on an order. + /// + public class OrderDisputeSummary : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The type that the dispute was initiated as. + /// + public string? initiatedAs { get; set; } + /// + ///The current status of the dispute. + /// + public string? status { get; set; } + } + + /// + ///An auto-generated type which holds one Order and a cursor during pagination. + /// + public class OrderEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OrderEdge. + /// + public Order? node { get; set; } + } + + /// + ///Return type for `orderEditAddCustomItem` mutation. + /// + public class OrderEditAddCustomItemPayload : GraphQLObject + { + /// + ///The custom line item that will be added to the order based on the current edits. + /// + public CalculatedLineItem? calculatedLineItem { get; set; } + /// + ///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; } + } + + /// + ///Return type for `orderEditAddLineItemDiscount` mutation. + /// + public class OrderEditAddLineItemDiscountPayload : GraphQLObject + { + /// + ///The discount applied to a line item during this order edit. + /// + public OrderStagedChangeAddLineItemDiscount? addedDiscountStagedChange { get; set; } + /// + ///The line item with the edits applied but not saved. + /// + public CalculatedLineItem? calculatedLineItem { get; set; } + /// + ///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; } + } + + /// + ///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 string? 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. + /// + public class OrderEditAddVariantPayload : GraphQLObject + { + /// + ///The [calculated line item](https://shopify.dev/api/admin-graphql/latest/objects/calculatedlineitem) + ///that's added during this order edit. + /// + public CalculatedLineItem? calculatedLineItem { get; set; } + /// + ///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 agreement associated with an edit to the order. + /// + public class OrderEditAgreement : 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 string? reason { 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 `orderEditBegin` mutation. + /// + public class OrderEditBeginPayload : GraphQLObject + { + /// + ///The order that will be edited. + /// + public CalculatedOrder? calculatedOrder { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `orderEditCommit` mutation. + /// + public class OrderEditCommitPayload : GraphQLObject + { + /// + ///The order with changes applied. + /// + public Order? order { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `orderEditRemoveDiscount` mutation. + /// + public class OrderEditRemoveDiscountPayload : 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 `OrderEditRemoveDiscount`. + /// + public class OrderEditRemoveDiscountUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderEditRemoveDiscountUserError`. + /// + public enum OrderEditRemoveDiscountUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Return type for `orderEditRemoveLineItemDiscount` mutation. + /// + public class OrderEditRemoveLineItemDiscountPayload : GraphQLObject + { + /// + ///The calculated line item after removal of the discount. + /// + public CalculatedLineItem? calculatedLineItem { get; set; } + /// + ///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; } + } + + /// + ///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 string? 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. + /// + public class OrderEditSetQuantityPayload : GraphQLObject + { + /// + ///The calculated line item with the edits applied but not saved. + /// + public CalculatedLineItem? calculatedLineItem { get; set; } + /// + ///The calculated 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; } + } + + /// + ///Return type for `orderEditUpdateDiscount` mutation. + /// + public class OrderEditUpdateDiscountPayload : 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 `OrderEditUpdateDiscount`. + /// + public class OrderEditUpdateDiscountUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderEditUpdateDiscountUserError`. + /// + public enum OrderEditUpdateDiscountUserErrorCode + { + /// + ///The input value is invalid. + /// + 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 string? 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. + /// + public class OrderInvoiceSendPayload : GraphQLObject + { + /// + ///The order associated with the invoice email. + /// + public Order? order { 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 `OrderInvoiceSend`. + /// + public class OrderInvoiceSendUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `OrderInvoiceSendUserError`. + /// + public enum OrderInvoiceSendUserErrorCode + { + /// + ///An error occurred while sending the invoice. + /// + ORDER_INVOICE_SEND_UNSUCCESSFUL, + } + + /// + ///Return type for `orderMarkAsPaid` mutation. + /// + public class OrderMarkAsPaidPayload : GraphQLObject + { + /// + ///The order marked as paid. + /// + public Order? order { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `orderOpen` mutation. + /// + public class OrderOpenPayload : GraphQLObject + { + /// + ///The opened order. + /// + public Order? order { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The payment collection details for an order that requires additional payment following an edit to the order. + /// + public class OrderPaymentCollectionDetails : GraphQLObject + { + /// + ///The URL to use for collecting an additional payment on the order. + /// + public string? additionalPaymentCollectionUrl { get; set; } + /// + ///The list of vaulted payment methods for the order with their permissions. + /// + public IEnumerable? vaultedPaymentMethods { get; set; } + } + + /// + ///The status of a customer's payment for an order. + /// + public class OrderPaymentStatus : GraphQLObject + { + /// + ///A message describing an error during the asynchronous processing of a payment. + /// + public string? errorMessage { get; set; } + /// + ///The ID of the payment, initially returned by an `orderCreateMandatePayment` or `orderCreatePayment` mutation. + /// + public string? paymentReferenceId { get; set; } + /// + ///The status of the payment. + /// + public string? 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; } + } + + /// + ///The type of a payment status. + /// + public enum OrderPaymentStatusResult + { + /// + ///The payment succeeded. + /// + SUCCESS, + /// + ///The payment is authorized. + /// + AUTHORIZED, + /// + ///The payment is voided. + /// + VOIDED, + /// + ///The payment is refunded. + /// + REFUNDED, + /// + ///The payment is captured. + /// + CAPTURED, + /// + ///The payment is in purchased status. + /// + PURCHASED, + /// + ///There was an error initiating the payment. + /// + ERROR, + /// + ///The payment is still being processed. + /// + PROCESSING, + /// + ///Redirect required. + /// + REDIRECT_REQUIRED, + /// + ///Payment can be retried. + /// + RETRYABLE, + /// + ///Status is unknown. + /// + UNKNOWN, + /// + ///The payment is awaiting processing. + /// + INITIATED, + /// + ///The payment is pending with the provider, and may take a while. + /// + PENDING, + } + + /// + ///The order's aggregated return status that's used for display purposes. + ///An order might have multiple returns, so this field communicates the prioritized return status. + ///The `OrderReturnStatus` enum is a supported filter parameter in the [`orders` query](https://shopify.dev/api/admin-graphql/latest/queries/orders#:~:text=reference_location_id-,return_status,-risk_level). + /// + public enum OrderReturnStatus + { + /// + ///Some items in the order are being returned. + /// + IN_PROGRESS, + /// + ///All return shipments from a return in this order were inspected. + /// + INSPECTION_COMPLETE, + /// + ///No items in the order were returned. + /// + NO_RETURN, + /// + ///Some items in the order were returned. + /// + RETURNED, + /// + ///Some returns in the order were not completed successfully. + /// + RETURN_FAILED, + /// + ///A return was requested for some items in the order. + /// + RETURN_REQUESTED, + } + + /// + ///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 string? 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 string? 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 string? 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. + /// + public enum OrderRiskLevel + { + /// + ///There is a low level of risk that this order is fraudulent. + /// + LOW, + /// + ///There is a medium level of risk that this order is fraudulent. + /// + MEDIUM, + /// + ///There is a high level of risk that this order is fraudulent. + /// + 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 string? recommendation { get; set; } + } + + /// + ///The set of valid sort keys for the Order query. + /// + public enum OrderSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `customer_name` value. + /// + CUSTOMER_NAME, + /// + ///Sort orders by their shipping address country and city. + /// + DESTINATION, + /// + ///Sort by the `financial_status` value. + /// + FINANCIAL_STATUS, + /// + ///Sort by the `fulfillment_status` value. + /// + FULFILLMENT_STATUS, + /// + ///Sort by the `order_number` value. + /// + ORDER_NUMBER, + /// + ///Sort by the `processed_at` value. + /// + PROCESSED_AT, + /// + ///Sort orders by the total quantity of all line items. + /// + TOTAL_ITEMS_QUANTITY, + /// + ///Sort by the `total_price` value. + /// + TOTAL_PRICE, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort orders by their purchase order number. + /// + PO_NUMBER, + /// + ///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 change that has been applied to an order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(OrderStagedChangeAddCustomItem), typeDiscriminator: "OrderStagedChangeAddCustomItem")] + [JsonDerivedType(typeof(OrderStagedChangeAddLineItemDiscount), typeDiscriminator: "OrderStagedChangeAddLineItemDiscount")] + [JsonDerivedType(typeof(OrderStagedChangeAddShippingLine), typeDiscriminator: "OrderStagedChangeAddShippingLine")] + [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; + public OrderStagedChangeAddLineItemDiscount? AsOrderStagedChangeAddLineItemDiscount() => this as OrderStagedChangeAddLineItemDiscount; + public OrderStagedChangeAddShippingLine? AsOrderStagedChangeAddShippingLine() => this as OrderStagedChangeAddShippingLine; + public OrderStagedChangeAddVariant? AsOrderStagedChangeAddVariant() => this as OrderStagedChangeAddVariant; + public OrderStagedChangeDecrementItem? AsOrderStagedChangeDecrementItem() => this as OrderStagedChangeDecrementItem; + public OrderStagedChangeIncrementItem? AsOrderStagedChangeIncrementItem() => this as OrderStagedChangeIncrementItem; + public OrderStagedChangeRemoveShippingLine? AsOrderStagedChangeRemoveShippingLine() => this as OrderStagedChangeRemoveShippingLine; + } + + /// + ///A change to the order representing the addition of a + ///custom line item. For example, you might want to add gift wrapping service + ///as a custom line item. + /// + public class OrderStagedChangeAddCustomItem : GraphQLObject, IOrderStagedChange + { + /// + ///The price of an individual item without any discounts applied. This value can't be negative. + /// + public MoneyV2? originalUnitPrice { get; set; } + /// + ///The quantity of the custom item to add to the order. This value must be greater than zero. + /// + public int? quantity { get; set; } + /// + ///The title of the custom item. + /// + public string? title { get; set; } + } + + /// + ///The discount applied to an item that was added during the current order edit. + /// + public class OrderStagedChangeAddLineItemDiscount : GraphQLObject, IOrderStagedChange + { + /// + ///The description of the discount. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The pricing value of the discount. + /// + public IPricingValue? value { get; set; } + } + + /// + ///A new [shipping line](https://shopify.dev/api/admin-graphql/latest/objects/shippingline) + ///added as part of an order edit. + /// + public class OrderStagedChangeAddShippingLine : GraphQLObject, IOrderStagedChange + { + /// + ///The phone number at the shipping address. + /// + public string? phone { get; set; } + /// + ///The shipping line's title that's shown to the buyer. + /// + public string? presentmentTitle { get; set; } + /// + ///The price that applies to the shipping line. + /// + public MoneyV2? price { get; set; } + /// + ///The title of the shipping line. + /// + public string? title { get; set; } + } + + /// + ///A change to the order representing the addition of an existing product variant. + /// + public class OrderStagedChangeAddVariant : GraphQLObject, IOrderStagedChange + { + /// + ///The quantity of the product variant that was added. + /// + public int? quantity { get; set; } + /// + ///The product variant that was added. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple OrderStagedChanges. + /// + public class OrderStagedChangeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OrderStagedChangeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An removal of items from an existing line item on the order. + /// + public class OrderStagedChangeDecrementItem : GraphQLObject, IOrderStagedChange + { + /// + ///The number of items removed. + /// + public int? delta { get; set; } + /// + ///The original line item. + /// + public LineItem? lineItem { get; set; } + /// + ///The intention to restock the removed items. + /// + public bool? restock { get; set; } + } + + /// + ///An auto-generated type which holds one OrderStagedChange and a cursor during pagination. + /// + public class OrderStagedChangeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OrderStagedChangeEdge. + /// + public IOrderStagedChange? node { get; set; } + } + + /// + ///An addition of items to an existing line item on the order. + /// + public class OrderStagedChangeIncrementItem : GraphQLObject, IOrderStagedChange + { + /// + ///The number of items added. + /// + public int? delta { get; set; } + /// + ///The original line item. + /// + public LineItem? lineItem { get; set; } + } + + /// + ///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. + /// + public class OrderTransaction : GraphQLObject, INode + { + /// + ///The masked account number associated with the payment method. + /// + public string? accountNumber { get; set; } + + /// + ///The amount of money. + /// + [Obsolete("Use `amountSet` instead.")] + public decimal? amount { get; set; } + /// + ///The rounding adjustment applied on the cash amount in shop and presentment currencies. + /// + public MoneyBag? amountRoundingSet { get; set; } + /// + ///The amount and currency of the transaction in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + + /// + ///The amount and currency of the transaction. + /// + [Obsolete("Use `amountSet` instead.")] + public MoneyV2? amountV2 { get; set; } + /// + ///Authorization code associated with the transaction. + /// + public string? authorizationCode { get; set; } + /// + ///The time when the authorization expires. This field is available only to stores on a Shopify Plus plan. + /// + public DateTime? authorizationExpiresAt { get; set; } + /// + ///Date and time when the transaction was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A standardized error code, independent of the payment provider. + /// + public string? errorCode { get; set; } + /// + ///The transaction fees charged on the order transaction. Only present for Shopify Payments transactions. + /// + public IEnumerable? fees { get; set; } + /// + ///The human-readable payment gateway name used to process the transaction. + /// + public string? formattedGateway { get; set; } + /// + ///The payment gateway used to process the transaction. + /// + public string? gateway { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The kind of transaction. + /// + public string? kind { get; set; } + /// + ///Whether the transaction can be manually captured. + /// + public bool? manuallyCapturable { get; set; } + + /// + ///Specifies the available amount to refund on the gateway. + ///This value is only available for transactions of type `SuggestedRefund`. + /// + [Obsolete("Use `maximumRefundableV2` instead.")] + public decimal? maximumRefundable { get; set; } + /// + ///Specifies the available amount with currency to refund on the gateway. + ///This value is only available for transactions of type `SuggestedRefund`. + /// + public MoneyV2? maximumRefundableV2 { get; set; } + /// + ///Whether the transaction can be captured multiple times. + /// + public bool? multiCapturable { get; set; } + /// + ///The associated order. + /// + public Order? order { get; set; } + /// + ///The associated parent transaction, for example the authorization of a capture. + /// + public OrderTransaction? parentTransaction { get; set; } + /// + ///The payment details for the transaction. + /// + public IPaymentDetails? paymentDetails { get; set; } + /// + ///The payment icon to display for the transaction. + /// + public Image? paymentIcon { get; set; } + /// + ///The payment ID associated with the transaction. + /// + public string? paymentId { get; set; } + + /// + ///The payment method used for the transaction. This value is `null` if the payment method is unknown. + /// + [Obsolete("Use `paymentIcon` instead.")] + public string? paymentMethod { get; set; } + /// + ///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. + /// + public string? receiptJson { get; set; } + /// + ///The settlement currency. + /// + public string? settlementCurrency { get; set; } + /// + ///The rate used when converting the transaction amount to settlement currency. + /// + public decimal? settlementCurrencyRate { get; set; } + /// + ///Contains all Shopify Payments information related to an order transaction. This field is available only to stores on a Shopify Plus plan. + /// + public ShopifyPaymentsTransactionSet? shopifyPaymentsSet { get; set; } + /// + ///The status of this transaction. + /// + public string? status { get; set; } + /// + ///Whether the transaction is a test transaction. + /// + public bool? test { get; set; } + + /// + ///Specifies the available amount to capture on the gateway. + ///Only available when an amount is capturable or manually mark as paid. + /// + [Obsolete("Use `totalUnsettledSet` instead.")] + public decimal? totalUnsettled { get; set; } + /// + ///Specifies the available amount with currency to capture on the gateway in shop and presentment currencies. + ///Only available when an amount is capturable or manually mark as paid. + /// + public MoneyBag? totalUnsettledSet { get; set; } + + /// + ///Specifies the available amount with currency to capture on the gateway. + ///Only available when an amount is capturable or manually mark as paid. + /// + [Obsolete("Use `totalUnsettledSet` instead.")] + public MoneyV2? totalUnsettledV2 { get; set; } + /// + ///Staff member who was logged into the Shopify POS device when the transaction was processed. + /// + public StaffMember? user { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple OrderTransactions. + /// + public class OrderTransactionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in OrderTransactionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one OrderTransaction and a cursor during pagination. + /// + public class OrderTransactionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of OrderTransactionEdge. + /// + public OrderTransaction? node { get; set; } + } + + /// + ///A standardized error code, independent of the payment provider. + /// + public enum OrderTransactionErrorCode + { + /// + ///The card number is incorrect. + /// + INCORRECT_NUMBER, + /// + ///The format of the card number is incorrect. + /// + INVALID_NUMBER, + /// + ///The format of the expiry date is incorrect. + /// + INVALID_EXPIRY_DATE, + /// + ///The format of the CVC is incorrect. + /// + INVALID_CVC, + /// + ///The card is expired. + /// + EXPIRED_CARD, + /// + ///The CVC does not match the card number. + /// + INCORRECT_CVC, + /// + ///The ZIP or postal code does not match the card number. + /// + INCORRECT_ZIP, + /// + ///The address does not match the card number. + /// + INCORRECT_ADDRESS, + /// + ///The entered PIN is incorrect. + /// + INCORRECT_PIN, + /// + ///The card was declined. + /// + CARD_DECLINED, + /// + ///There was an error while processing the payment. + /// + PROCESSING_ERROR, + /// + ///Call the card issuer. + /// + CALL_ISSUER, + /// + ///The card has been reported as lost or stolen, and the card issuer has requested that the merchant keep the card and call the number on the back. + /// + PICK_UP_CARD, + /// + ///There is an error in the gateway or merchant configuration. + /// + CONFIG_ERROR, + /// + ///A real card was used but the gateway was in test mode. + /// + TEST_MODE_LIVE_CARD, + /// + ///The gateway or merchant configuration doesn't support a feature, such as network tokenization. + /// + UNSUPPORTED_FEATURE, + /// + ///There was an unknown error with processing the payment. + /// + GENERIC_ERROR, + /// + ///The payment method is not available in the customer's country. + /// + INVALID_COUNTRY, + /// + ///The amount is either too high or too low for the provider. + /// + INVALID_AMOUNT, + /// + ///The payment method is momentarily unavailable. + /// + PAYMENT_METHOD_UNAVAILABLE, + /// + ///The payment method was invalid. + /// + AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD, + /// + ///The maximum amount has been captured. + /// + AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED, + /// + ///The maximum amount has been refunded. + /// + AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED, + /// + ///The maximum of 10 authorizations has been captured for an order. + /// + AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED, + /// + ///The maximum of 10 refunds has been processed for an order. + /// + AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED, + /// + ///The order was canceled, which canceled all open authorizations. + /// + AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED, + /// + ///The order was not confirmed within three hours. + /// + AMAZON_PAYMENTS_STALE, + } + + /// + ///The different kinds of order transactions. + /// + public enum OrderTransactionKind + { + /// + ///An authorization and capture performed together in a single step. + /// + SALE, + /// + ///A transfer of the money that was reserved by an authorization. + /// + CAPTURE, + /// + ///An amount reserved against the cardholder's funding source. + ///Money does not change hands until the authorization is captured. + /// + AUTHORIZATION, + /// + ///A cancelation of an authorization transaction. + /// + VOID, + /// + ///A partial or full return of captured funds to the cardholder. + ///A refund can happen only after a capture is processed. + /// + REFUND, + /// + ///The money returned to the customer when they've paid too much during a cash transaction. + /// + CHANGE, + /// + ///An authorization for a payment taken with an EMV credit card reader. + /// + EMV_AUTHORIZATION, + /// + ///A suggested refund transaction that can be used to create a refund. + /// + SUGGESTED_REFUND, + } + + /// + ///The different states that an `OrderTransaction` can have. + /// + public enum OrderTransactionStatus + { + /// + ///The transaction succeeded. + /// + SUCCESS, + /// + ///The transaction failed. + /// + FAILURE, + /// + ///The transaction is pending. + /// + PENDING, + /// + ///There was an error while processing the transaction. + /// + ERROR, + /// + ///Awaiting a response. + /// + AWAITING_RESPONSE, + /// + ///The transaction status is unknown. + /// + UNKNOWN, + } + + /// + ///Return type for `orderUpdate` mutation. + /// + public class OrderUpdatePayload : GraphQLObject + { + /// + ///The updated order. + /// + public Order? order { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A page on the Online Store. + /// + public class Page : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, INavigable, INode, IMetafieldReference, IMetafieldReferencer + { + /// + ///The text content of the page, complete with HTML markup. + /// + public string? body { get; set; } + /// + ///The first 150 characters of the page body. If the page body contains more than 150 characters, additional characters are truncated by ellipses. + /// + public string? bodySummary { get; set; } + /// + ///The date and time (ISO 8601 format) of the page creation. + /// + public DateTime? createdAt { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A unique, human-friendly string for the page. + ///In themes, the Liquid templating language refers to a page by its handle. + /// + public string? handle { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether or not the page is visible. + /// + public bool? isPublished { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 date and time (ISO 8601 format) when the page became or will become visible. + ///Returns null when the page isn't visible. + /// + public DateTime? publishedAt { get; set; } + /// + ///The suffix of the template that's used to render the page. + /// + public string? templateSuffix { get; set; } + /// + ///Title of the page. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The date and time (ISO 8601 format) of the latest page update. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Pages. + /// + public class PageConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PageEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `pageCreate` mutation. + /// + public class PageCreatePayload : GraphQLObject + { + /// + ///The page that was created. + /// + public Page? page { 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 `PageCreate`. + /// + public class PageCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PageCreateUserError`. + /// + public enum PageCreateUserErrorCode + { + /// + ///Can’t set isPublished to true and also set a future publish date. + /// + INVALID_PUBLISH_DATE, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///The metafield type is invalid. + /// + INVALID_TYPE, + } + + /// + ///Return type for `pageDelete` mutation. + /// + public class PageDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted page. + /// + public string? deletedPageId { 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 `PageDelete`. + /// + public class PageDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PageDeleteUserError`. + /// + public enum PageDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///An auto-generated type which holds one Page and a cursor during pagination. + /// + public class PageEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PageEdge. + /// + public Page? node { get; set; } + } + + /// + ///Returns information about pagination in a connection, in accordance with the + ///[Relay specification](https://relay.dev/graphql/connections.htm#sec-undefined.PageInfo). + ///For more information, please read our [GraphQL Pagination Usage Guide](https://shopify.dev/api/usage/pagination-graphql). + /// + public class PageInfo : GraphQLObject + { + /// + ///The cursor corresponding to the last node in edges. + /// + public string? endCursor { get; set; } + /// + ///Whether there are more pages to fetch following the current page. + /// + public bool? hasNextPage { get; set; } + /// + ///Whether there are any pages prior to the current page. + /// + public bool? hasPreviousPage { get; set; } + /// + ///The cursor corresponding to the first node in edges. + /// + public string? startCursor { get; set; } + } + + /// + ///Return type for `pageUpdate` mutation. + /// + public class PageUpdatePayload : GraphQLObject + { + /// + ///The page that was updated. + /// + public Page? page { 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 `PageUpdate`. + /// + public class PageUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PageUpdateUserError`. + /// + public enum PageUpdateUserErrorCode + { + /// + ///Can’t set isPublished to true and also set a future publish date. + /// + INVALID_PUBLISH_DATE, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is already taken. + /// + TAKEN, + } + + /// + ///A payment customization. + /// + public class PaymentCustomization : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, INode, IMetafieldReferencer + { + /// + ///The enabled status of the payment customization. + /// + public bool? enabled { get; set; } + /// + ///The error history on the most recent version of the payment customization. + /// + public FunctionsErrorHistory? errorHistory { get; set; } + /// + ///The ID of the Shopify Function implementing the payment customization. + /// + public string? functionId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 Shopify Function implementing the payment customization. + /// + public ShopifyFunction? shopifyFunction { get; set; } + /// + ///The title of the payment customization. + /// + public string? title { get; set; } + } + + /// + ///Return type for `paymentCustomizationActivation` mutation. + /// + public class PaymentCustomizationActivationPayload : GraphQLObject + { + /// + ///The IDs of the updated payment customizations. + /// + public IEnumerable? ids { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple PaymentCustomizations. + /// + public class PaymentCustomizationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PaymentCustomizationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `paymentCustomizationCreate` mutation. + /// + public class PaymentCustomizationCreatePayload : GraphQLObject + { + /// + ///Returns the created payment customization. + /// + public PaymentCustomization? paymentCustomization { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `paymentCustomizationDelete` mutation. + /// + public class PaymentCustomizationDeletePayload : GraphQLObject + { + /// + ///Returns the deleted payment customization ID. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one PaymentCustomization and a cursor during pagination. + /// + public class PaymentCustomizationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PaymentCustomizationEdge. + /// + public PaymentCustomization? node { get; set; } + } + + /// + ///An error that occurs during the execution of a payment customization mutation. + /// + public class PaymentCustomizationError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PaymentCustomizationError`. + /// + public enum PaymentCustomizationErrorCode + { + /// + ///Shop plan not eligible to use Functions from a custom app. + /// + CUSTOM_APP_FUNCTION_NOT_ELIGIBLE, + /// + ///Function does not implement the required interface. + /// + FUNCTION_DOES_NOT_IMPLEMENT, + /// + ///Function not found. + /// + FUNCTION_NOT_FOUND, + /// + ///Function is pending deletion. + /// + FUNCTION_PENDING_DELETION, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Payment customization not found. + /// + PAYMENT_CUSTOMIZATION_NOT_FOUND, + /// + ///Shop must be on a Shopify Plus plan to activate payment customizations from a custom app. + /// + PAYMENT_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE, + /// + ///Maximum payment customizations are already enabled. + /// + MAXIMUM_ACTIVE_PAYMENT_CUSTOMIZATIONS, + /// + ///Required input field must be present. + /// + REQUIRED_INPUT_FIELD, + /// + ///Could not create or update metafields. + /// + INVALID_METAFIELDS, + /// + ///Function ID cannot be changed. + /// + FUNCTION_ID_CANNOT_BE_CHANGED, + } + + /// + ///Return type for `paymentCustomizationUpdate` mutation. + /// + public class PaymentCustomizationUpdatePayload : GraphQLObject + { + /// + ///Returns the updated payment customization. + /// + public PaymentCustomization? paymentCustomization { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Payment details related to a transaction. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(CardPaymentDetails), typeDiscriminator: "CardPaymentDetails")] + [JsonDerivedType(typeof(LocalPaymentMethodsPaymentDetails), typeDiscriminator: "LocalPaymentMethodsPaymentDetails")] + [JsonDerivedType(typeof(ShopPayInstallmentsPaymentDetails), typeDiscriminator: "ShopPayInstallmentsPaymentDetails")] + public interface IPaymentDetails : IGraphQLObject + { + public CardPaymentDetails? AsCardPaymentDetails() => this as CardPaymentDetails; + public LocalPaymentMethodsPaymentDetails? AsLocalPaymentMethodsPaymentDetails() => this as LocalPaymentMethodsPaymentDetails; + public ShopPayInstallmentsPaymentDetails? AsShopPayInstallmentsPaymentDetails() => this as ShopPayInstallmentsPaymentDetails; + /// + ///The name of payment method used by the buyer. + /// + public string? paymentMethodName { get; set; } + } + + /// + ///All possible instrument outputs for Payment Mandates. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(VaultCreditCard), typeDiscriminator: "VaultCreditCard")] + [JsonDerivedType(typeof(VaultPaypalBillingAgreement), typeDiscriminator: "VaultPaypalBillingAgreement")] + public interface IPaymentInstrument : IGraphQLObject + { + public VaultCreditCard? AsVaultCreditCard() => this as VaultCreditCard; + public VaultPaypalBillingAgreement? AsVaultPaypalBillingAgreement() => this as VaultPaypalBillingAgreement; + /// + ///The name of the card holder. + /// + public string? name { get; set; } + } + + /// + ///A payment instrument and the permission + ///the owner of the instrument gives to the merchant to debit it. + /// + public class PaymentMandate : GraphQLObject, INode + { + /// + ///The unique ID of a payment mandate. + /// + public string? id { get; set; } + /// + ///The outputs details of the payment instrument. + /// + public IPaymentInstrument? paymentInstrument { get; set; } + } + + /// + ///Some of the payment methods used in Shopify. + /// + public enum PaymentMethods + { + VISA, + MASTERCARD, + DISCOVER, + AMERICAN_EXPRESS, + DINERS_CLUB, + JCB, + /// + ///The payment method for UnionPay payment. + /// + UNIONPAY, + /// + ///The payment method for Elo payment. + /// + ELO, + DANKORT, + MAESTRO, + FORBRUGSFORENINGEN, + PAYPAL, + BOGUS, + BITCOIN, + LITECOIN, + DOGECOIN, + /// + ///The payment method for Interac payment. + /// + INTERAC, + /// + ///The payment method for eftpos_au payment. + /// + EFTPOS, + } + + /// + ///Return type for `paymentReminderSend` mutation. + /// + public class PaymentReminderSendPayload : GraphQLObject + { + /// + ///Whether the payment reminder email was successfully sent. + /// + public bool? success { 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 `PaymentReminderSend`. + /// + public class PaymentReminderSendUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PaymentReminderSendUserError`. + /// + public enum PaymentReminderSendUserErrorCode + { + /// + ///An error occurred while sending the payment reminder. + /// + PAYMENT_REMINDER_SEND_UNSUCCESSFUL, + } + + /// + ///Represents the payment schedule for a single payment defined in the payment terms. + /// + public class PaymentSchedule : GraphQLObject, INode + { + /// + ///Amount owed for this payment schedule. + /// + public MoneyV2? amount { get; set; } + /// + ///Date and time when the payment schedule is paid or fulfilled. + /// + public DateTime? completedAt { get; set; } + /// + ///Date and time when the payment schedule is due. + /// + public DateTime? dueAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Date and time when the invoice is sent. + /// + public DateTime? issuedAt { get; set; } + /// + ///The payment terms the payment schedule belongs to. + /// + public PaymentTerms? paymentTerms { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple PaymentSchedules. + /// + public class PaymentScheduleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PaymentScheduleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one PaymentSchedule and a cursor during pagination. + /// + public class PaymentScheduleEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PaymentScheduleEdge. + /// + public PaymentSchedule? node { get; set; } + } + + /// + ///Settings related to payments. + /// + public class PaymentSettings : GraphQLObject + { + /// + ///List of the digital wallets which the shop supports. + /// + public IEnumerable? supportedDigitalWallets { get; set; } + } + + /// + ///Represents the payment terms for an order or draft order. + /// + public class PaymentTerms : GraphQLObject, INode + { + /// + ///The draft order associated with the payment terms. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///Duration of payment terms in days based on the payment terms template used to create the payment terms. + /// + public int? dueInDays { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The order associated with the payment terms. + /// + public Order? order { get; set; } + /// + ///Whether the payment terms have overdue payment schedules. + /// + public bool? overdue { get; set; } + /// + ///List of schedules for the payment terms. + /// + public PaymentScheduleConnection? paymentSchedules { get; set; } + /// + ///The name of the payment terms template used to create the payment terms. + /// + public string? paymentTermsName { get; set; } + /// + ///The payment terms template type used to create the payment terms. + /// + public string? paymentTermsType { get; set; } + /// + ///The payment terms name, translated into the shop admin's preferred language. + /// + public string? translatedName { get; set; } + } + + /// + ///Return type for `paymentTermsCreate` mutation. + /// + public class PaymentTermsCreatePayload : GraphQLObject + { + /// + ///The created payment terms. + /// + public PaymentTerms? paymentTerms { 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 `PaymentTermsCreate`. + /// + public class PaymentTermsCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PaymentTermsCreateUserError`. + /// + public enum PaymentTermsCreateUserErrorCode + { + /// + ///An error occurred while creating payment terms. + /// + PAYMENT_TERMS_CREATION_UNSUCCESSFUL, + } + + /// + ///Return type for `paymentTermsDelete` mutation. + /// + public class PaymentTermsDeletePayload : GraphQLObject + { + /// + ///The deleted payment terms ID. + /// + public string? deletedId { 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 `PaymentTermsDelete`. + /// + public class PaymentTermsDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PaymentTermsDeleteUserError`. + /// + public enum PaymentTermsDeleteUserErrorCode + { + /// + ///An error occurred while deleting payment terms. + /// + PAYMENT_TERMS_DELETE_UNSUCCESSFUL, + } + + /// + ///Represents the payment terms template object. + /// + public class PaymentTermsTemplate : GraphQLObject, INode + { + /// + ///The description of the payment terms template. + /// + public string? description { get; set; } + /// + ///The number of days between the issued date and due date if this is the net type of payment terms. + /// + public int? dueInDays { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the payment terms template. + /// + public string? name { get; set; } + /// + ///The type of the payment terms template. + /// + public string? paymentTermsType { get; set; } + /// + ///The translated payment terms template name. + /// + public string? translatedName { get; set; } + } + + /// + ///The type of a payment terms or a payment terms template. + /// + public enum PaymentTermsType + { + /// + ///The payment terms or payment terms template is due on receipt. + /// + RECEIPT, + /// + ///The payment terms or payment terms template is a net type. It's due a number of days after issue. + /// + NET, + /// + ///The payment terms or payment terms template is a fixed type. It's due on a specified date. + /// + FIXED, + /// + ///The payment terms or payment terms template is due on fulfillment. + /// + FULFILLMENT, + /// + ///The type of the payment terms or payment terms template is unknown. + /// + UNKNOWN, + } + + /// + ///Return type for `paymentTermsUpdate` mutation. + /// + public class PaymentTermsUpdatePayload : GraphQLObject + { + /// + ///The updated payment terms. + /// + public PaymentTerms? paymentTerms { 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 `PaymentTermsUpdate`. + /// + public class PaymentTermsUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PaymentTermsUpdateUserError`. + /// + public enum PaymentTermsUpdateUserErrorCode + { + /// + ///An error occurred while updating payment terms. + /// + PAYMENT_TERMS_UPDATE_UNSUCCESSFUL, + } + + /// + ///The set of valid sort keys for the Payout query. + /// + public enum PayoutSortKeys + { + /// + ///Sort by the `issued_at` value. + /// + ISSUED_AT, + /// + ///Sort by the `status` value. + /// + STATUS, + /// + ///Sort by the `charge_gross` value. + /// + CHARGE_GROSS, + /// + ///Sort by the `refund_gross` value. + /// + REFUND_GROSS, + /// + ///Sort by the `adjustment_gross` value. + /// + ADJUSTMENT_GROSS, + /// + ///Sort by the `duties_gross` value. + /// + DUTIES_GROSS, + /// + ///Sort by the `advance_gross` value. + /// + ADVANCE_GROSS, + /// + ///Sort by the `shipping_label_gross` value. + /// + SHIPPING_LABEL_GROSS, + /// + ///Sort by the `fee_amount` value. + /// + FEE_AMOUNT, + /// + ///Sort by the `amount` value. + /// + AMOUNT, + /// + ///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, + } + + /// + ///Represents a valid PayPal Express subscriptions gateway status. + /// + public enum PaypalExpressSubscriptionsGatewayStatus + { + /// + ///The status is enabled. + /// + ENABLED, + /// + ///The status is disabled. + /// + DISABLED, + /// + ///The status is pending. + /// + PENDING, + } + + /// + ///How to caluclate the parent product variant's price while bulk updating variant relationships. + /// + public enum PriceCalculationType + { + /// + ///The price of the parent will be the sum of the components price times their quantity. + /// + COMPONENTS_SUM, + /// + ///The price of the parent will be set to the price provided. + /// + FIXED, + /// + ///The price of the parent will not be adjusted. + /// + NONE, + } + + /// + ///Represents a price list, including information about related prices and eligibility rules. + ///You can use price lists to specify either fixed prices or adjusted relative prices that + ///override initial product variant prices. Price lists are applied to customers + ///using context rules, which determine price list eligibility. + /// + /// For more information on price lists, refer to + /// [Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists). + /// + public class PriceList : GraphQLObject, INode + { + /// + ///The catalog that the price list is associated with. + /// + public ICatalog? catalog { get; set; } + /// + ///The currency for fixed prices associated with this price list. + /// + public string? currency { get; set; } + /// + ///The number of fixed prices on the price list. + /// + public int? fixedPricesCount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The unique name of the price list, used as a human-readable identifier. + /// + public string? name { get; set; } + /// + ///Relative adjustments to other prices. + /// + public PriceListParent? parent { get; set; } + /// + ///A list of prices associated with the price list. + /// + public PriceListPriceConnection? prices { get; set; } + /// + ///A list of quantity rules associated with the price list, ordered by product variants. + /// + public QuantityRuleConnection? quantityRules { get; set; } + } + + /// + ///The type and value of a price list adjustment. + /// + ///For more information on price lists, refer to + ///[Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists). + /// + public class PriceListAdjustment : GraphQLObject + { + /// + ///The type of price adjustment, such as percentage increase or decrease. + /// + public string? type { get; set; } + /// + ///The value of price adjustment, where positive numbers reduce the prices and negative numbers + ///increase them. + /// + public decimal? value { get; set; } + } + + /// + ///Represents the settings of price list adjustments. + /// + public class PriceListAdjustmentSettings : GraphQLObject + { + /// + ///The type of price list adjustment setting for compare at price. + /// + public string? compareAtMode { get; set; } + } + + /// + ///Represents a percentage price adjustment type. + /// + public enum PriceListAdjustmentType + { + /// + ///Percentage decrease type. Prices will have a lower value. + /// + PERCENTAGE_DECREASE, + /// + ///Percentage increase type. Prices will have a higher value. + /// + PERCENTAGE_INCREASE, + } + + /// + ///Represents how the compare at price will be determined for a price list. + /// + public enum PriceListCompareAtMode + { + /// + ///The compare at price is adjusted based on percentage specified in price list. + /// + ADJUSTED, + /// + ///The compare at prices are set to `null` unless explicitly defined by a fixed price value. + /// + NULLIFY, + } + + /// + ///An auto-generated type for paginating through multiple PriceLists. + /// + public class PriceListConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PriceListEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `priceListCreate` mutation. + /// + public class PriceListCreatePayload : GraphQLObject + { + /// + ///The newly created price list. + /// + public PriceList? priceList { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `priceListDelete` mutation. + /// + public class PriceListDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted price list. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one PriceList and a cursor during pagination. + /// + public class PriceListEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PriceListEdge. + /// + public PriceList? node { get; set; } + } + + /// + ///Return type for `priceListFixedPricesAdd` mutation. + /// + public class PriceListFixedPricesAddPayload : GraphQLObject + { + /// + ///The list of fixed prices that were added to or updated in the price list. + /// + public IEnumerable? prices { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed price list fixed prices by product bulk update operations. + /// + public class PriceListFixedPricesByProductBulkUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PriceListFixedPricesByProductBulkUpdateUserError`. + /// + public enum PriceListFixedPricesByProductBulkUpdateUserErrorCode + { + /// + ///No update operations specified. + /// + NO_UPDATE_OPERATIONS_SPECIFIED, + /// + ///The currency specified does not match the price list's currency. + /// + PRICES_TO_ADD_CURRENCY_MISMATCH, + /// + ///Price list does not exist. + /// + PRICE_LIST_DOES_NOT_EXIST, + /// + ///Duplicate ID in input. + /// + DUPLICATE_ID_IN_INPUT, + /// + ///IDs must be mutually exclusive across add or delete operations. + /// + ID_MUST_BE_MUTUALLY_EXCLUSIVE, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Exceeded the 10000 prices to add limit. + /// + PRICE_LIMIT_EXCEEDED, + } + + /// + ///Return type for `priceListFixedPricesByProductUpdate` mutation. + /// + public class PriceListFixedPricesByProductUpdatePayload : GraphQLObject + { + /// + ///The price list for which the fixed prices were modified. + /// + public PriceList? priceList { get; set; } + /// + ///The product for which the fixed prices were added. + /// + public IEnumerable? pricesToAddProducts { get; set; } + /// + ///The product for which the fixed prices were deleted. + /// + public IEnumerable? pricesToDeleteProducts { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `priceListFixedPricesDelete` mutation. + /// + public class PriceListFixedPricesDeletePayload : GraphQLObject + { + /// + ///A list of product variant IDs whose fixed prices were removed from the price list. + /// + public IEnumerable? deletedFixedPriceVariantIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `priceListFixedPricesUpdate` mutation. + /// + public class PriceListFixedPricesUpdatePayload : GraphQLObject + { + /// + ///A list of deleted variant IDs for prices. + /// + public IEnumerable? deletedFixedPriceVariantIds { get; set; } + /// + ///The price list for which the fixed prices were modified. + /// + public PriceList? priceList { get; set; } + /// + ///The prices that were added to the price list. + /// + public IEnumerable? pricesAdded { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents relative adjustments from one price list to other prices. + /// You can use a `PriceListParent` to specify an adjusted relative price using a percentage-based + /// adjustment. Adjusted prices work in conjunction with exchange rules and rounding. + /// + /// [Adjustment types](https://shopify.dev/api/admin-graphql/latest/enums/pricelistadjustmenttype) + /// support both percentage increases and decreases. + /// + public class PriceListParent : GraphQLObject + { + /// + ///A price list adjustment. + /// + public PriceListAdjustment? adjustment { get; set; } + /// + ///A price list's settings for adjustment. + /// + public PriceListAdjustmentSettings? settings { get; set; } + } + + /// + ///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. 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 + { + /// + ///The compare-at price of the product variant on this price list. + /// + public MoneyV2? compareAtPrice { get; set; } + /// + ///The origin of a price, either fixed (defined on the price list) or relative (calculated using a price list adjustment configuration). + /// + public string? originType { get; set; } + /// + ///The price of the product variant on this price list. + /// + public MoneyV2? price { get; set; } + /// + ///A list of quantity breaks for the product variant. + /// + public QuantityPriceBreakConnection? quantityPriceBreaks { get; set; } + /// + ///The product variant associated with this price. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple PriceListPrices. + /// + public class PriceListPriceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PriceListPriceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one PriceListPrice and a cursor during pagination. + /// + public class PriceListPriceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PriceListPriceEdge. + /// + public PriceListPrice? node { get; set; } + } + + /// + ///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 + { + /// + ///The price is defined on the price list. + /// + FIXED, + /// + ///The price is relative to the adjustment type and value. + /// + RELATIVE, + } + + /// + ///An error for a failed price list price operation. + /// + public class PriceListPriceUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PriceListPriceUserError`. + /// + public enum PriceListPriceUserErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///The price list doesn't exist. + /// + PRICE_LIST_NOT_FOUND, + /// + ///The specified currency doesn't match the price list's currency. + /// + PRICE_LIST_CURRENCY_MISMATCH, + /// + ///A fixed price for the specified product variant doesn't exist. + /// + VARIANT_NOT_FOUND, + /// + ///Only fixed prices can be deleted. + /// + PRICE_NOT_FIXED, + } + + /// + ///The set of valid sort keys for the PriceList query. + /// + public enum PriceListSortKeys + { + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///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, + } + + /// + ///Return type for `priceListUpdate` mutation. + /// + public class PriceListUpdatePayload : GraphQLObject + { + /// + ///The updated price list. + /// + public PriceList? priceList { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed contextual pricing operations. + /// + public class PriceListUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PriceListUserError`. + /// + public enum PriceListUserErrorCode + { + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The specified price list doesn't exist. + /// + PRICE_LIST_NOT_FOUND, + /// + ///The price list is currently being modified. Please try again later. + /// + PRICE_LIST_LOCKED, + /// + ///Cannot save the price list with context rule because the limit of context rules per shop was reached. + /// + [Obsolete("The limit is removed.")] + CONTEXT_RULE_LIMIT_REACHED, + /// + ///A price list context rule cannot have more than one country. + /// + CONTEXT_RULE_COUNTRIES_LIMIT, + /// + ///A price list’s currency must be of the pricing rule’s country. + /// + CURRENCY_COUNTRY_MISMATCH, + /// + ///A country in a context rule must use a valid currency. + /// + COUNTRY_CURRENCY_MISMATCH, + /// + ///A price list’s currency must be the market currency. + /// + CURRENCY_MARKET_MISMATCH, + /// + ///The context rule's market does not use the price list currency. + /// + MARKET_CURRENCY_MISMATCH, + /// + ///The adjustment value must be a positive value and not be greater than 100% for `type` `PERCENTAGE_DECREASE` and not be greater than 1000% for `type` `PERCENTAGE_INCREASE`. + /// + INVALID_ADJUSTMENT_VALUE, + /// + ///The adjustment value must not be greater than 100% for `type` `PERCENTAGE_DECREASE`. + /// + INVALID_ADJUSTMENT_MIN_VALUE, + /// + ///The adjustment value must not be greater than 1000% for `type` `PERCENTAGE_INCREASE`. + /// + INVALID_ADJUSTMENT_MAX_VALUE, + /// + ///A price list for this country is already taken. + /// + CONTEXT_RULE_COUNTRY_TAKEN, + /// + ///Quantity rules can be associated only with company location catalogs. + /// + CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES, + /// + ///Quantity price breaks can be associated only with company location catalogs. + /// + CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_PRICE_BREAKS, + /// + ///Only one context rule option may be specified. + /// + CONTEXT_RULE_LIMIT_ONE_OPTION, + /// + ///The specified market wasn't found. + /// + CONTEXT_RULE_MARKET_NOT_FOUND, + /// + ///A price list for this market is already taken. + /// + CONTEXT_RULE_MARKET_TAKEN, + /// + ///The price list currency is not supported by the shop's payment gateway. + /// + CURRENCY_NOT_SUPPORTED, + /// + ///Cannot create price list for a primary market. + /// + PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET, + /// + ///Cannot assign a catalog to a price list that also has context rules. + /// + CATALOG_ASSIGNMENT_NOT_ALLOWED, + /// + ///The specified catalog does not exist. + /// + CATALOG_DOES_NOT_EXIST, + /// + ///The context type of a catalog cannot be changed. + /// + CATALOG_CANNOT_CHANGE_CONTEXT_TYPE, + /// + ///The price list currency must match the market catalog currency. + /// + CATALOG_MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH, + /// + ///Catalog has a price list already assigned. + /// + CATALOG_TAKEN, + /// + ///A country catalog cannot be assigned to a price list. + /// + COUNTRY_PRICE_LIST_ASSIGNMENT, + /// + ///An app catalog cannot be assigned to a price list. + /// + APP_CATALOG_PRICE_LIST_ASSIGNMENT, + /// + ///Something went wrong when trying to save the price list. Please try again. + /// + GENERIC_ERROR, + } + + /// + ///Price rules are a set of conditions, including entitlements and prerequisites, that must be met in order for a discount code to apply. + /// + ///We recommend using the types and queries detailed at [Getting started with discounts](https://shopify.dev/docs/apps/selling-strategies/discounts/getting-started) instead. These will replace the GraphQL `PriceRule` object and REST Admin `PriceRule` and `DiscountCode` resources. + /// + public class PriceRule : GraphQLObject, ICommentEventSubject, IHasEvents, ILegacyInteroperability, INode + { + /// + ///The maximum number of times that the price rule can be allocated onto an order. + /// + public int? allocationLimit { get; set; } + /// + ///The method by which the price rule's value is allocated to its entitled items. + /// + public string? allocationMethod { get; set; } + /// + ///The application that created the price rule. + /// + public App? app { get; set; } + /// + ///Determines which discount classes the discount can combine with. + /// + public DiscountCombinesWith? combinesWith { get; set; } + /// + ///The date and time when the price rule was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The customers that can use this price rule. + /// + public PriceRuleCustomerSelection? customerSelection { get; set; } + /// + ///The class of the discount for combining purposes. + /// + public string? discountClass { get; set; } + /// + ///List of the price rule's discount codes. + /// + public PriceRuleDiscountCodeConnection? discountCodes { get; set; } + /// + ///How many discount codes associated with the price rule. + /// + public Count? discountCodesCount { get; set; } + /// + ///The date and time when the price rule ends. For open-ended price rules, use `null`. + /// + public DateTime? endsAt { get; set; } + + /// + ///Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. + /// + [Obsolete("Use `prerequisiteToEntitlementQuantityRatio` instead.")] + public PriceRuleEntitlementToPrerequisiteQuantityRatio? entitlementToPrerequisiteQuantityRatio { get; set; } + /// + ///The paginated list of events associated with the price rule. + /// + public EventConnection? events { get; set; } + /// + ///A list of the price rule's features. + /// + public IEnumerable? features { get; set; } + /// + ///Indicates whether there are any timeline comments on the price rule. + /// + public bool? hasTimelineComment { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The items to which the price rule applies. + /// + public PriceRuleItemEntitlements? itemEntitlements { get; set; } + /// + ///The items required for the price rule to be applicable. + /// + public PriceRuleLineItemPrerequisites? itemPrerequisites { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///Whether the price rule can be applied only once per customer. + /// + public bool? oncePerCustomer { get; set; } + /// + ///The number of the entitled items must fall within this range for the price rule to be applicable. + /// + public PriceRuleQuantityRange? prerequisiteQuantityRange { get; set; } + /// + ///The shipping cost must fall within this range for the price rule to be applicable. + /// + public PriceRuleMoneyRange? prerequisiteShippingPriceRange { get; set; } + /// + ///The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable. + /// + public PriceRuleMoneyRange? prerequisiteSubtotalRange { get; set; } + /// + ///Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. + /// + public PriceRulePrerequisiteToEntitlementQuantityRatio? prerequisiteToEntitlementQuantityRatio { get; set; } + /// + ///URLs that can be used to share the discount. + /// + public IEnumerable? shareableUrls { get; set; } + /// + ///The shipping lines to which the price rule applies. + /// + public PriceRuleShippingLineEntitlements? shippingEntitlements { get; set; } + /// + ///The date and time when the price rule starts. + /// + public DateTime? startsAt { get; set; } + /// + ///The status of the price rule. + /// + public string? status { get; set; } + /// + ///A detailed summary of the price rule. + /// + public string? summary { get; set; } + /// + ///The type of lines (line_item or shipping_line) to which the price rule applies. + /// + public string? target { get; set; } + /// + ///The title of the price rule. + /// + public string? title { get; set; } + /// + ///The total sales from orders where the price rule was used. + /// + public MoneyV2? totalSales { get; set; } + + /// + ///A list of the price rule's features. + /// + [Obsolete("Use `features` instead.")] + public IEnumerable? traits { get; set; } + /// + ///The number of times that the price rule has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? usageCount { get; set; } + /// + ///The maximum number of times that the price rule can be used in total. + /// + public int? usageLimit { get; set; } + /// + ///A time period during which a price rule is applicable. + /// + public PriceRuleValidityPeriod? validityPeriod { get; set; } + + /// + ///The value of the price rule. + /// + [Obsolete("Use `valueV2` instead.")] + public IPriceRuleValue? value { get; set; } + /// + ///The value of the price rule. + /// + public IPricingValue? valueV2 { get; set; } + } + + /// + ///The method by which the price rule's value is allocated to its entitled items. + /// + public enum PriceRuleAllocationMethod + { + /// + ///The value will be applied to each of the entitled items. + /// + EACH, + /// + ///The value will be applied once across the entitled items. + /// + ACROSS, + } + + /// + ///A selection of customers for whom the price rule applies. + /// + public class PriceRuleCustomerSelection : GraphQLObject + { + /// + ///List of customers to whom the price rule applies. + /// + public CustomerConnection? customers { get; set; } + /// + ///Whether the price rule applies to all customers. + /// + public bool? forAllCustomers { get; set; } + /// + ///A list of customer segments that contain the customers who can use the price rule. + /// + public IEnumerable? segments { get; set; } + } + + /// + ///A discount code of a price rule. + /// + public class PriceRuleDiscountCode : GraphQLObject, INode + { + /// + ///The application that created the discount code. + /// + public App? app { get; set; } + /// + ///The code to apply the discount. + /// + public string? code { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The number of times that the price rule has been used. This value is updated asynchronously and can be different than the actual usage count. + /// + public int? usageCount { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple PriceRuleDiscountCodes. + /// + public class PriceRuleDiscountCodeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PriceRuleDiscountCodeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one PriceRuleDiscountCode and a cursor during pagination. + /// + public class PriceRuleDiscountCodeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PriceRuleDiscountCodeEdge. + /// + public PriceRuleDiscountCode? node { get; set; } + } + + /// + ///Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. + /// + public class PriceRuleEntitlementToPrerequisiteQuantityRatio : GraphQLObject + { + /// + ///The quantity of entitled items in the ratio. + /// + public int? entitlementQuantity { get; set; } + /// + ///The quantity of prerequisite items in the ratio. + /// + public int? prerequisiteQuantity { get; set; } + } + + /// + ///The list of features that can be supported by a price rule. + /// + public enum PriceRuleFeature + { + /// + ///The price rule supports Buy X, Get Y (BXGY) discounts. + /// + BUY_ONE_GET_ONE, + /// + ///The price rule supports Buy X, Get Y (BXGY) discounts that specify a custom allocation limit. + /// + BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT, + /// + ///The price rule supports bulk discounts. + /// + BULK, + /// + ///The price rule targets specific customers. + /// + SPECIFIC_CUSTOMERS, + /// + ///The price rule supports discounts that require a quantity. + /// + QUANTITY_DISCOUNTS, + } + + /// + ///The value of a fixed amount price rule. + /// + public class PriceRuleFixedAmountValue : GraphQLObject, IPriceRuleValue + { + /// + ///The monetary value of the price rule. + /// + public decimal? amount { get; set; } + } + + /// + ///The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned. + /// + public class PriceRuleItemEntitlements : GraphQLObject + { + /// + ///The collections to which the price rule applies. + /// + public CollectionConnection? collections { get; set; } + /// + ///The product variants to which the price rule applies. + /// + public ProductVariantConnection? productVariants { get; set; } + /// + ///The products to which the price rule applies. + /// + public ProductConnection? products { get; set; } + /// + ///Whether the price rule applies to all line items. + /// + public bool? targetAllLineItems { get; set; } + } + + /// + ///Single or multiple line item products, product variants or collections required for the price rule to be applicable, can also be provided in combination. + /// + public class PriceRuleLineItemPrerequisites : GraphQLObject + { + /// + ///The collections required for the price rule to be applicable. + /// + public CollectionConnection? collections { get; set; } + /// + ///The product variants required for the price rule to be applicable. + /// + public ProductVariantConnection? productVariants { get; set; } + /// + ///The products required for the price rule to be applicable. + /// + public ProductConnection? products { get; set; } + } + + /// + ///A money range within which the price rule is applicable. + /// + public class PriceRuleMoneyRange : GraphQLObject + { + /// + ///The lower bound of the money range. + /// + public decimal? greaterThan { get; set; } + /// + ///The lower bound or equal of the money range. + /// + public decimal? greaterThanOrEqualTo { get; set; } + /// + ///The upper bound of the money range. + /// + public decimal? lessThan { get; set; } + /// + ///The upper bound or equal of the money range. + /// + public decimal? lessThanOrEqualTo { get; set; } + } + + /// + ///The value of a percent price rule. + /// + public class PriceRulePercentValue : GraphQLObject, IPriceRuleValue + { + /// + ///The percent value of the price rule. + /// + public decimal? percentage { get; set; } + } + + /// + ///Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. + /// + public class PriceRulePrerequisiteToEntitlementQuantityRatio : GraphQLObject + { + /// + ///The quantity of entitled items in the ratio. + /// + public int? entitlementQuantity { get; set; } + /// + ///The quantity of prerequisite items in the ratio. + /// + public int? prerequisiteQuantity { get; set; } + } + + /// + ///A quantity range within which the price rule is applicable. + /// + public class PriceRuleQuantityRange : GraphQLObject + { + /// + ///The lower bound of the quantity range. + /// + public int? greaterThan { get; set; } + /// + ///The lower bound or equal of the quantity range. + /// + public int? greaterThanOrEqualTo { get; set; } + /// + ///The upper bound of the quantity range. + /// + public int? lessThan { get; set; } + /// + ///The upper bound or equal of the quantity range. + /// + public int? lessThanOrEqualTo { get; set; } + } + + /// + ///Shareable URL for the discount code associated with the price rule. + /// + public class PriceRuleShareableUrl : GraphQLObject + { + /// + ///The image URL of the item (product or collection) to which the discount applies. + /// + public Image? targetItemImage { get; set; } + /// + ///The type of page that's associated with the URL. + /// + public string? targetType { get; set; } + /// + ///The title of the page that's associated with the URL. + /// + public string? title { get; set; } + /// + ///The URL for the discount code. + /// + public string? url { get; set; } + } + + /// + ///The type of page where a shareable price rule URL lands. + /// + public enum PriceRuleShareableUrlTargetType + { + /// + ///The URL lands on a home page. + /// + HOME, + /// + ///The URL lands on a product page. + /// + PRODUCT, + /// + ///The URL lands on a collection page. + /// + COLLECTION, + } + + /// + ///The shipping lines to which the price rule applies to. + /// + public class PriceRuleShippingLineEntitlements : GraphQLObject + { + /// + ///The codes for the countries to which the price rule applies to. + /// + public IEnumerable? countryCodes { get; set; } + /// + ///Whether the price rule is applicable to countries that haven't been defined in the shop's shipping zones. + /// + public bool? includeRestOfWorld { get; set; } + /// + ///Whether the price rule applies to all shipping lines. + /// + public bool? targetAllShippingLines { get; set; } + } + + /// + ///The status of the price rule. + /// + public enum PriceRuleStatus + { + /// + ///The price rule is active. + /// + ACTIVE, + /// + ///The price rule is expired. + /// + EXPIRED, + /// + ///The price rule is scheduled. + /// + SCHEDULED, + } + + /// + ///The type of lines (line_item or shipping_line) to which the price rule applies. + /// + public enum PriceRuleTarget + { + /// + ///The price rule applies to line items. + /// + LINE_ITEM, + /// + ///The price rule applies to shipping lines. + /// + SHIPPING_LINE, + } + + /// + ///The list of features that can be supported by a price rule. + /// + public enum PriceRuleTrait + { + /// + ///The price rule supports Buy X, Get Y (BXGY) discounts. + /// + BUY_ONE_GET_ONE, + /// + ///The price rule supports Buy X, Get Y (BXGY) discounts that specify a custom allocation limit. + /// + BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT, + /// + ///The price rule supports bulk discounts. + /// + BULK, + /// + ///The price rule targets specific customers. + /// + SPECIFIC_CUSTOMERS, + /// + ///The price rule supports discounts that require a quantity. + /// + QUANTITY_DISCOUNTS, + } + + /// + ///A time period during which a price rule is applicable. + /// + public class PriceRuleValidityPeriod : GraphQLObject + { + /// + ///The time after which the price rule becomes invalid. + /// + public DateTime? end { get; set; } + /// + ///The time after which the price rule is valid. + /// + public DateTime? start { get; set; } + } + + /// + ///The type of the price rule value. The price rule value might be a percentage value, or a fixed amount. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(PriceRuleFixedAmountValue), typeDiscriminator: "PriceRuleFixedAmountValue")] + [JsonDerivedType(typeof(PriceRulePercentValue), typeDiscriminator: "PriceRulePercentValue")] + public interface IPriceRuleValue : IGraphQLObject + { + public PriceRuleFixedAmountValue? AsPriceRuleFixedAmountValue() => this as PriceRuleFixedAmountValue; + public PriceRulePercentValue? AsPriceRulePercentValue() => this as PriceRulePercentValue; + } + + /// + ///One type of value given to a customer when a discount is applied to an order. + ///The application of a discount with this value gives the customer the specified percentage off a specified item. + /// + public class PricingPercentageValue : GraphQLObject, IPricingValue + { + /// + ///The percentage value of the object. This is a number between -100 (free) and 0 (no discount). + /// + public decimal? percentage { get; set; } + } + + /// + ///The type of value given to a customer when a discount is applied to an order. For example, the application of the discount might give the customer a percentage off a specified item. Alternatively, the application of the discount might give the customer a monetary value in a given currency off an order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(MoneyV2), typeDiscriminator: "MoneyV2")] + [JsonDerivedType(typeof(PricingPercentageValue), typeDiscriminator: "PricingPercentageValue")] + public interface IPricingValue : IGraphQLObject + { + public MoneyV2? AsMoneyV2() => this as MoneyV2; + public PricingPercentageValue? AsPricingPercentageValue() => this as PricingPercentageValue; + } + + /// + ///Private metafields represent custom metadata that is attached to a resource. + ///Private metafields are accessible only by the application that created them and only from the GraphQL Admin API. + /// + ///An application can create a maximum of 10 private metafields per shop resource. + /// + ///Private metafields are deprecated. Metafields created using a reserved namespace are private by default. See our guide for + ///[migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields). + /// + public class PrivateMetafield : GraphQLObject, INode + { + /// + ///The date and time when the private metafield was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The ID of the private metafield. + /// + public string? id { get; set; } + /// + ///The key name of the private metafield. + /// + public string? key { get; set; } + /// + ///The namespace of the private metafield. + /// + public string? @namespace { get; set; } + /// + ///The date and time when the private metafield was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///The value of a private metafield. + /// + public string? value { get; set; } + /// + ///Represents the private metafield value type. + /// + public string? valueType { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple PrivateMetafields. + /// + public class PrivateMetafieldConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PrivateMetafieldEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `privateMetafieldDelete` mutation. + /// + public class PrivateMetafieldDeletePayload : GraphQLObject + { + /// + ///The ID of private metafield that was deleted. + /// + public string? deletedPrivateMetafieldId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one PrivateMetafield and a cursor during pagination. + /// + public class PrivateMetafieldEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PrivateMetafieldEdge. + /// + public PrivateMetafield? node { get; set; } + } + + /// + ///Return type for `privateMetafieldUpsert` mutation. + /// + public class PrivateMetafieldUpsertPayload : GraphQLObject + { + /// + ///The private metafield that was created or updated. + /// + public PrivateMetafield? privateMetafield { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Supported private metafield value types. + /// + public enum PrivateMetafieldValueType + { + /// + ///A string metafield. + /// + STRING, + /// + ///An integer metafield. + /// + INTEGER, + /// + ///A JSON string metafield. + /// + JSON_STRING, + } + + /// + ///The `Product` object lets you manage products in a merchant’s store. + /// + ///Products are the goods and services that merchants offer to customers. They can include various details such as title, description, price, images, and options such as size or color. + ///You can use [product variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. + ///You can also add or update product [media](https://shopify.dev/docs/api/admin-graphql/latest/interfaces/media). + ///Products can be organized by grouping them into a [collection](https://shopify.dev/docs/api/admin-graphql/latest/objects/collection). + /// + ///Learn more about working with [Shopify's product model](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model/product-model-components), + ///including limitations and considerations. + /// + public class Product : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, ILegacyInteroperability, INavigable, INode, IOnlineStorePreviewable, IPublishable, ICommentEventEmbed, IMetafieldReference, IMetafieldReferencer + { + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + public Count? availablePublicationsCount { get; set; } + + /// + ///The description of the product, with + ///HTML tags. For example, the description might include + ///bold `` and italic `` text. + /// + [Obsolete("Use `descriptionHtml` instead.")] + public string? bodyHtml { get; set; } + /// + ///A list of [components](https://shopify.dev/docs/apps/build/product-merchandising/bundles/add-product-fixed-bundle) + ///that are associated with a product in a bundle. + /// + public ProductBundleComponentConnection? bundleComponents { get; set; } + /// + ///The category of a product + ///from [Shopify's Standard Product Taxonomy](https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17). + /// + public TaxonomyCategory? category { get; set; } + /// + ///A list of [collections](https://shopify.dev/docs/api/admin-graphql/latest/objects/Collection) + ///that include the product. + /// + public CollectionConnection? collections { get; set; } + /// + ///A special product type that combines separate products from a store into a single product listing. + ///[Combined listings](https://shopify.dev/apps/build/product-merchandising/combined-listings) are connected + ///by a shared option, such as color, model, or dimension. + /// + public CombinedListing? combinedListing { get; set; } + /// + ///The [role of the product](https://shopify.dev/docs/apps/build/product-merchandising/combined-listings/build-for-combined-listings) + ///in a combined listing. + /// + ///If `null`, then the product isn't part of any combined listing. + /// + public string? combinedListingRole { get; set; } + /// + ///The [compare-at price range](https://help.shopify.com/manual/products/details/product-pricing/sale-pricing) + ///of the product in the shop's default currency. + /// + public ProductCompareAtPriceRange? compareAtPriceRange { get; set; } + /// + ///The pricing that applies to a customer in a specific context. For example, a price might vary depending on the customer's location. + /// + public ProductContextualPricing? contextualPricing { get; set; } + /// + ///The date and time when the product was created. + /// + public DateTime? createdAt { get; set; } + + /// + ///The custom product type specified by the merchant. + /// + [Obsolete("Deprecated in API version 2022-10. Use `productType` instead.")] + public string? customProductType { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///A single-line description of the product, + ///with [HTML tags](https://developer.mozilla.org/en-US/docs/Web/HTML) removed. + /// + public string? description { get; set; } + /// + ///The description of the product, with + ///HTML tags. For example, the description might include + ///bold `` and italic `` text. + /// + public string? descriptionHtml { get; set; } + + /// + ///Stripped description of the product, single line with HTML tags removed. + ///Truncated to 60 characters. + /// + [Obsolete("Use `description` instead.")] + public string? descriptionPlainSummary { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + + /// + ///The featured image for the product. + /// + [Obsolete("Use `featuredMedia` instead.")] + public Image? featuredImage { get; set; } + /// + ///The featured [media](https://shopify.dev/docs/apps/build/online-store/product-media) + ///associated with the product. + /// + public IMedia? featuredMedia { get; set; } + /// + ///The information that lets merchants know what steps they need to take + ///to make sure that the app is set up correctly. + /// + ///For example, if a merchant hasn't set up a product correctly in the app, + ///then the feedback might include a message that says "You need to add a price + ///to this product". + /// + public ResourceFeedback? feedback { get; set; } + /// + ///The [theme template](https://shopify.dev/docs/storefronts/themes/architecture/templates) that's used when customers view the gift card in a store. + /// + public string? giftCardTemplateSuffix { get; set; } + /// + ///A unique, human-readable string of the product's title. A handle can contain letters, hyphens (`-`), and numbers, but no spaces. + ///The handle is used in the online store URL for the product. + /// + public string? handle { get; set; } + /// + ///Whether the product has only a single variant with the default option and value. + /// + public bool? hasOnlyDefaultVariant { get; set; } + /// + ///Whether the product has variants that are out of stock. + /// + public bool? hasOutOfStockVariants { get; set; } + /// + ///Whether at least one of the product variants requires + ///[bundle components](https://shopify.dev/docs/apps/build/product-merchandising/bundles/add-product-fixed-bundle). + /// + ///Learn more about + ///[store eligibility for bundles](https://shopify.dev/docs/apps/build/product-merchandising/bundles#store-eligibility). + /// + public bool? hasVariantsThatRequiresComponents { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + + /// + ///The images associated with the product. + /// + [Obsolete("Use `media` instead.")] + public ImageConnection? images { get; set; } + /// + ///Whether the product + ///is in a specified + ///[collection](https://shopify.dev/docs/api/admin-graphql/latest/objects/collection). + /// + public bool? inCollection { get; set; } + /// + ///Whether the product is a gift card. + /// + public bool? isGiftCard { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The [media](https://shopify.dev/docs/apps/build/online-store/product-media) associated with the product. Valid media are images, 3D models, videos. + /// + public MediaConnection? media { get; set; } + /// + ///The total count of [media](https://shopify.dev/docs/apps/build/online-store/product-media) + ///that's associated with a product. + /// + public Count? mediaCount { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The [preview URL](https://help.shopify.com/manual/online-store/setting-up#preview-your-store) for the online store. + /// + public string? onlineStorePreviewUrl { get; set; } + /// + ///The product's URL on the online store. + ///If `null`, then the product isn't published to the online store sales channel. + /// + public string? onlineStoreUrl { get; set; } + /// + ///A list of product options. The limit is defined by the + ///[shop's resource limits for product options](https://shopify.dev/docs/api/admin-graphql/latest/objects/Shop#field-resourcelimits) (`Shop.resourceLimits.maxProductOptions`). + /// + public IEnumerable? options { get; set; } + + /// + ///The price range of the product. + /// + [Obsolete("Deprecated in API version 2020-10. Use `priceRangeV2` instead.")] + public ProductPriceRange? priceRange { get; set; } + /// + ///The minimum and maximum prices of a product, expressed in decimal numbers. + ///For example, if the product is priced between $10.00 and $50.00, + ///then the price range is $10.00 - $50.00. + /// + public ProductPriceRangeV2? priceRangeV2 { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + + /// + ///A list of the channels where the product is published. + /// + [Obsolete("Use `resourcePublications` instead.")] + public ProductPublicationConnection? productPublications { get; set; } + /// + ///The [product type](https://help.shopify.com/manual/products/details/product-type) + ///that merchants define. + /// + public string? productType { get; set; } + + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + [Obsolete("Use `resourcePublicationsCount` instead.")] + public int? publicationCount { get; set; } + + /// + ///A list of the channels where the product is published. + /// + [Obsolete("Use `resourcePublications` instead.")] + public ProductPublicationConnection? publications { get; set; } + /// + ///The date and time when the product was published to the online store. + /// + public DateTime? publishedAt { get; set; } + /// + ///Whether the product is published for a customer only in a specified context. For example, a product might be published for a customer only in a specific location. + /// + public bool? publishedInContext { get; set; } + + /// + ///Whether the resource is published to a specific channel. + /// + [Obsolete("Use `publishedOnPublication` instead.")] + public bool? publishedOnChannel { get; set; } + + /// + ///Whether the resource is published to a + ///[channel](https://shopify.dev/docs/api/admin-graphql/latest/objects/Channel). + ///For example, the resource might be published to the online store channel. + /// + [Obsolete("Use `publishedOnCurrentPublication` instead.")] + public bool? publishedOnCurrentChannel { get; set; } + /// + ///Whether the resource is published to the app's + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + ///For example, the resource might be published to the app's online store channel. + /// + public bool? publishedOnCurrentPublication { get; set; } + /// + ///Whether the resource is published to a specified + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public bool? publishedOnPublication { get; set; } + /// + ///Whether the product can only be purchased with + ///a [selling plan](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans). + ///Products that are sold on subscription (`requiresSellingPlan: true`) can be updated only for online stores. + ///If you update a product to be subscription-only (`requiresSellingPlan:false`), then the product is unpublished from all channels, except the online store. + /// + public bool? requiresSellingPlan { get; set; } + /// + ///The resource that's either published or staged to be published to + ///the [publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationV2? resourcePublicationOnCurrentPublication { get; set; } + /// + ///The list of resources that are published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationConnection? resourcePublications { get; set; } + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + public Count? resourcePublicationsCount { get; set; } + /// + ///The list of resources that are either published or staged to be published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationV2Connection? resourcePublicationsV2 { get; set; } + /// + ///Whether the merchant can make changes to the product when they + ///[edit the order](https://shopify.dev/docs/apps/build/orders-fulfillment/order-management-apps/edit-orders) + ///associated with the product. For example, a merchant might be restricted from changing product details when they + ///edit an order. + /// + public RestrictedForResource? restrictedForResource { get; set; } + + /// + ///A count of [selling plan groups](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans/build-a-selling-plan) + ///that are associated with the product. + /// + [Obsolete("Use `sellingPlanGroupsCount` instead.")] + public int? sellingPlanGroupCount { get; set; } + /// + ///A list of all [selling plan groups](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans/build-a-selling-plan) + ///that are associated with the product either directly, or through the product's variants. + /// + public SellingPlanGroupConnection? sellingPlanGroups { get; set; } + /// + ///A count of [selling plan groups](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans/build-a-selling-plan) + ///that are associated with the product. + /// + public Count? sellingPlanGroupsCount { get; set; } + /// + ///The [SEO title and description](https://help.shopify.com/manual/promoting-marketing/seo/adding-keywords) + ///that are associated with a product. + /// + public SEO? seo { get; set; } + + /// + ///The standardized product type in the Shopify product taxonomy. + /// + [Obsolete("Deprecated in API version 2022-10. Use `productCategory` instead.")] + public StandardizedProductType? standardizedProductType { get; set; } + /// + ///The [product status](https://help.shopify.com/manual/products/details/product-details-page#product-status), + ///which controls visibility across all sales channels. + /// + public string? status { get; set; } + + /// + ///The Storefront GraphQL API ID of the `Product`. + /// + ///As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead. + /// + [Obsolete("Use `id` instead.")] + public string? storefrontId { get; set; } + /// + ///A comma-separated list of searchable keywords that are + ///associated with the product. For example, a merchant might apply the `sports` + ///and `summer` tags to products that are associated with sportwear for summer. + /// + ///Updating `tags` overwrites + ///any existing tags that were previously added to the product. To add new tags without overwriting + ///existing tags, use the [`tagsAdd`](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd) + ///mutation. + /// + public IEnumerable? tags { get; set; } + /// + ///The [theme template](https://shopify.dev/docs/storefronts/themes/architecture/templates) that's used when customers view the product in a store. + /// + public string? templateSuffix { get; set; } + /// + ///The name for the product that displays to customers. The title is used to construct the product's handle. + ///For example, if a product is titled "Black Sunglasses", then the handle is `black-sunglasses`. + /// + public string? title { get; set; } + /// + ///The quantity of inventory that's in stock. + /// + public int? totalInventory { get; set; } + + /// + ///The number of [variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant) + ///that are associated with the product. + /// + [Obsolete("Use `variantsCount` instead.")] + public int? totalVariants { get; set; } + /// + ///Whether [inventory tracking](https://help.shopify.com/manual/products/inventory/getting-started-with-inventory/set-up-inventory-tracking) + ///has been enabled for the product. + /// + public bool? tracksInventory { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + + /// + ///The list of channels that the resource is not published to. + /// + [Obsolete("Use `unpublishedPublications` instead.")] + public ChannelConnection? unpublishedChannels { get; set; } + /// + ///The list of [publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that the resource isn't published to. + /// + public PublicationConnection? unpublishedPublications { get; set; } + /// + ///The date and time when the product was last modified. + ///A product's `updatedAt` value can change for different reasons. For example, if an order + ///is placed for a product that has inventory tracking set up, then the inventory adjustment + ///is counted as an update. + /// + public DateTime? updatedAt { get; set; } + /// + ///A list of [variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant) associated with the product. + /// + public ProductVariantConnection? variants { get; set; } + /// + ///The number of [variants](https://shopify.dev/docs/api/admin-graphql/latest/objects/ProductVariant) + ///that are associated with the product. + /// + public Count? variantsCount { get; set; } + /// + ///The name of the product's vendor. + /// + public string? vendor { get; set; } + } + + /// + ///The product's component information. + /// + public class ProductBundleComponent : GraphQLObject + { + /// + ///The product that's related as a component. + /// + public Product? componentProduct { get; set; } + /// + ///The list of products' variants that are components. + /// + public ProductVariantConnection? componentVariants { get; set; } + /// + ///The number of component variants for the product component. + /// + public Count? componentVariantsCount { get; set; } + /// + ///The options in the parent and the component options they're connected to, along with the chosen option values + ///that appear in the bundle. + /// + public IEnumerable? optionSelections { get; set; } + /// + ///The quantity of the component product set for this bundle line. + ///It will be null if there's a quantityOption present. + /// + public int? quantity { get; set; } + /// + ///The quantity as option of the component product. It will be null if there's a quantity set. + /// + public ProductBundleComponentQuantityOption? quantityOption { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductBundleComponents. + /// + public class ProductBundleComponentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductBundleComponentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ProductBundleComponent and a cursor during pagination. + /// + public class ProductBundleComponentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductBundleComponentEdge. + /// + public ProductBundleComponent? node { get; set; } + } + + /// + ///A relationship between a component option and a parent option. + /// + public class ProductBundleComponentOptionSelection : GraphQLObject + { + /// + ///The option that existed on the component product prior to the fixed bundle creation. + /// + public ProductOption? componentOption { get; set; } + /// + ///The option that was created on the parent product. + /// + public ProductOption? parentOption { get; set; } + /// + ///The component option values that are actively selected for this relationship. + /// + public IEnumerable? values { get; set; } + } + + /// + ///The status of a component option value related to a bundle. + /// + public enum ProductBundleComponentOptionSelectionStatus + { + /// + ///The component option value is selected as sellable in the bundle. + /// + SELECTED, + /// + ///The component option value is not selected as sellable in the bundle. + /// + DESELECTED, + /// + ///The component option value was not initially selected, but is now available for the bundle. + /// + NEW, + /// + ///The component option value was selected, is no longer available for the bundle. + /// + UNAVAILABLE, + } + + /// + ///A component option value related to a bundle line. + /// + public class ProductBundleComponentOptionSelectionValue : GraphQLObject + { + /// + ///Selection status of the option. + /// + public string? selectionStatus { get; set; } + /// + ///The value of the option. + /// + public string? value { get; set; } + } + + /// + ///A quantity option related to a bundle. + /// + public class ProductBundleComponentQuantityOption : GraphQLObject + { + /// + ///The name of the option value. + /// + public string? name { get; set; } + /// + ///The option that was created on the parent product. + /// + public ProductOption? parentOption { get; set; } + /// + ///The quantity values of the option. + /// + public IEnumerable? values { get; set; } + } + + /// + ///A quantity option value related to a componentized product. + /// + public class ProductBundleComponentQuantityOptionValue : GraphQLObject + { + /// + ///The name of the option value. + /// + public string? name { get; set; } + /// + ///The quantity of the option value. + /// + public int? quantity { get; set; } + } + + /// + ///Return type for `productBundleCreate` mutation. + /// + public class ProductBundleCreatePayload : GraphQLObject + { + /// + ///The asynchronous ProductBundleOperation creating the componentized product. + /// + public ProductBundleOperation? productBundleOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors encountered while managing a product bundle. + /// + public class ProductBundleMutationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductBundleMutationUserError`. + /// + public enum ProductBundleMutationUserErrorCode + { + /// + ///Something went wrong, please try again. + /// + GENERIC_ERROR, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Input is not valid. + /// + INVALID_INPUT, + /// + ///Error processing request in the background job. + /// + JOB_ERROR, + } + + /// + ///An entity that represents details of an asynchronous + ///[ProductBundleCreate](https://shopify.dev/api/admin-graphql/current/mutations/productBundleCreate) or + ///[ProductBundleUpdate](https://shopify.dev/api/admin-graphql/current/mutations/productBundleUpdate) 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 bundle was created or updated, 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 ProductBundleOperation : GraphQLObject, INode, IProductOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The product on which the operation is being performed. + /// + public Product? product { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + /// + ///Returns mutation errors occurred during background mutation processing. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productBundleUpdate` mutation. + /// + public class ProductBundleUpdatePayload : GraphQLObject + { + /// + ///The asynchronous ProductBundleOperation updating the componentized product. + /// + public ProductBundleOperation? productBundleOperation { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The details of a specific product category within the [Shopify product taxonomy](https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17). + /// + public class ProductCategory : GraphQLObject + { + /// + ///The product taxonomy node associated with the product category. + /// + public ProductTaxonomyNode? productTaxonomyNode { get; set; } + } + + /// + ///Return type for `productChangeStatus` mutation. + /// + public class ProductChangeStatusPayload : GraphQLObject + { + /// + ///The product object. + /// + public Product? product { 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 `ProductChangeStatus`. + /// + public class ProductChangeStatusUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductChangeStatusUserError`. + /// + public enum ProductChangeStatusUserErrorCode + { + /// + ///Product could not be found. + /// + PRODUCT_NOT_FOUND, + /// + ///Cannot be unarchived because combined listings are not compatible with this store. + /// + COMBINED_LISTINGS_NOT_COMPATIBLE_WITH_SHOP, + } + + /// + ///The set of valid sort keys for the ProductCollection query. + /// + public enum ProductCollectionSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `price` value. + /// + PRICE, + /// + ///Sort by the `best-selling` value. + /// + BEST_SELLING, + /// + ///Sort by the `created` value. + /// + CREATED, + /// + ///Sort by the `id` value. + /// + ID, + /// + ///Sort by the `manual` value. + /// + MANUAL, + /// + ///Sort by the `collection-default` value. + /// + COLLECTION_DEFAULT, + /// + ///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, + } + + /// + ///The compare-at price range of the product. + /// + public class ProductCompareAtPriceRange : GraphQLObject + { + /// + ///The highest variant's compare-at price. + /// + public MoneyV2? maxVariantCompareAtPrice { get; set; } + /// + ///The lowest variant's compare-at price. + /// + public MoneyV2? minVariantCompareAtPrice { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Products. + /// + public class ProductConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///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 + { + /// + ///The number of fixed quantity rules for the product's variants on the price list. + /// + public int? fixedQuantityRulesCount { get; set; } + /// + ///The pricing of the variant with the highest price in the given context. + /// + public ProductVariantContextualPricing? maxVariantPricing { get; set; } + /// + ///The pricing of the variant with the lowest price in the given context. + /// + public ProductVariantContextualPricing? minVariantPricing { get; set; } + /// + ///The minimum and maximum prices of a product, expressed in decimal numbers. + ///For example, if the product is priced between $10.00 and $50.00, + ///then the price range is $10.00 - $50.00. + /// + public ProductPriceRangeV2? priceRange { get; set; } + } + + /// + ///Return type for `productCreateMedia` mutation. + /// + public class ProductCreateMediaPayload : GraphQLObject + { + /// + ///The newly created media. + /// + public IEnumerable? media { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? mediaUserErrors { get; set; } + /// + ///The product associated with the media. + /// + public Product? product { get; set; } + + /// + ///The list of errors that occurred from executing the mutation. + /// + [Obsolete("Use `mediaUserErrors` instead.")] + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productCreate` mutation. + /// + public class ProductCreatePayload : GraphQLObject + { + /// + ///The product object. + /// + public Product? product { get; set; } + /// + ///The shop associated with the product. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productDeleteMedia` mutation. + /// + public class ProductDeleteMediaPayload : GraphQLObject + { + /// + ///List of media IDs which were deleted. + /// + public IEnumerable? deletedMediaIds { get; set; } + /// + ///List of product image IDs which were deleted. + /// + public IEnumerable? deletedProductImageIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? mediaUserErrors { get; set; } + /// + ///The product associated with the deleted media. + /// + public Product? product { get; set; } + + /// + ///The list of errors that occurred from executing the mutation. + /// + [Obsolete("Use `mediaUserErrors` instead.")] + public IEnumerable? userErrors { get; set; } + } + + /// + ///An entity that represents details of an asynchronous + ///[ProductDelete](https://shopify.dev/api/admin-graphql/current/mutations/productDelete) 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 deleted, this can be used to check the status of an operation. + /// + ///The `status` field indicates whether the operation is `CREATED`, `ACTIVE`, or `COMPLETE`. + /// + ///The `deletedProductId` field provides the ID of the deleted product. + /// + ///The `userErrors` field provides mutation errors that occurred during the operation. + /// + public class ProductDeleteOperation : GraphQLObject, INode, IProductOperation + { + /// + ///The ID of the deleted product. + /// + public string? deletedProductId { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The product on which the operation is being performed. + /// + public Product? product { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + /// + ///Returns mutation errors occurred during background mutation processing. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productDelete` mutation. + /// + public class ProductDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted product. + /// + public string? deletedProductId { get; set; } + /// + ///The product delete operation, returned when run in asynchronous mode. + /// + public ProductDeleteOperation? productDeleteOperation { get; set; } + /// + ///The shop associated with the product. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a product duplication job. + /// + public class ProductDuplicateJob : GraphQLObject + { + /// + ///This indicates if the job is still queued or has been run. + /// + public bool? done { get; set; } + /// + ///A globally-unique ID that's returned when running an asynchronous mutation. + /// + public string? id { get; set; } + } + + /// + ///An entity that represents details of an asynchronous + ///[ProductDuplicate](https://shopify.dev/api/admin-graphql/current/mutations/productDuplicate) 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 duplicated](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 original product. + /// + ///The `newProduct` field provides the details of the new duplicate of the product. + /// + ///The `userErrors` field provides mutation errors that occurred during the operation. + /// + public class ProductDuplicateOperation : GraphQLObject, INode, IProductOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The newly created duplicate of the original product. + /// + public Product? newProduct { get; set; } + /// + ///The product on which the operation is being performed. + /// + public Product? product { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + /// + ///Returns mutation errors occurred during background mutation processing. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productDuplicate` mutation. + /// + public class ProductDuplicatePayload : GraphQLObject + { + /// + ///The asynchronous job that duplicates the product images. + /// + public Job? imageJob { get; set; } + /// + ///The duplicated product. + /// + public Product? newProduct { get; set; } + /// + ///The product duplicate operation, returned when run in asynchronous mode. + /// + public ProductDuplicateOperation? productDuplicateOperation { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Product and a cursor during pagination. + /// + public class ProductEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductEdge. + /// + public Product? node { get; set; } + } + + /// + ///A product feed. + /// + public class ProductFeed : GraphQLObject, INode + { + /// + ///The country of the product feed. + /// + public string? country { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The language of the product feed. + /// + public string? language { get; set; } + /// + ///The status of the product feed. + /// + public string? status { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductFeeds. + /// + public class ProductFeedConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductFeedEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `productFeedCreate` mutation. + /// + public class ProductFeedCreatePayload : GraphQLObject + { + /// + ///The newly created product feed. + /// + public ProductFeed? productFeed { 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 `ProductFeedCreate`. + /// + public class ProductFeedCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductFeedCreateUserError`. + /// + public enum ProductFeedCreateUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + } + + /// + ///Return type for `productFeedDelete` mutation. + /// + public class ProductFeedDeletePayload : GraphQLObject + { + /// + ///The ID of the product feed that was deleted. + /// + public string? deletedId { 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 `ProductFeedDelete`. + /// + public class ProductFeedDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductFeedDeleteUserError`. + /// + public enum ProductFeedDeleteUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///An auto-generated type which holds one ProductFeed and a cursor during pagination. + /// + public class ProductFeedEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductFeedEdge. + /// + public ProductFeed? node { get; set; } + } + + /// + ///The valid values for the status of product feed. + /// + public enum ProductFeedStatus + { + /// + ///The product feed is active. + /// + ACTIVE, + /// + ///The product feed is inactive. + /// + INACTIVE, + } + + /// + ///Return type for `productFullSync` mutation. + /// + public class ProductFullSyncPayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An error that occurs during the execution of `ProductFullSync`. + /// + public class ProductFullSyncUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductFullSyncUserError`. + /// + public enum ProductFullSyncUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///The set of valid sort keys for the ProductImage query. + /// + public enum ProductImageSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `position` value. + /// + POSITION, + /// + ///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, + } + + /// + ///Return type for `productJoinSellingPlanGroups` mutation. + /// + public class ProductJoinSellingPlanGroupsPayload : GraphQLObject + { + /// + ///The product object. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productLeaveSellingPlanGroups` mutation. + /// + public class ProductLeaveSellingPlanGroupsPayload : GraphQLObject + { + /// + ///The product object. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the ProductMedia query. + /// + public enum ProductMediaSortKeys + { + /// + ///Sort by the `position` value. + /// + POSITION, + /// + ///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, + } + + /// + ///An entity that represents details of an asynchronous operation on a product. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ProductBundleOperation), typeDiscriminator: "ProductBundleOperation")] + [JsonDerivedType(typeof(ProductDeleteOperation), typeDiscriminator: "ProductDeleteOperation")] + [JsonDerivedType(typeof(ProductDuplicateOperation), typeDiscriminator: "ProductDuplicateOperation")] + [JsonDerivedType(typeof(ProductSetOperation), typeDiscriminator: "ProductSetOperation")] + public interface IProductOperation : IGraphQLObject + { + public ProductBundleOperation? AsProductBundleOperation() => this as ProductBundleOperation; + public ProductDeleteOperation? AsProductDeleteOperation() => this as ProductDeleteOperation; + public ProductDuplicateOperation? AsProductDuplicateOperation() => this as ProductDuplicateOperation; + public ProductSetOperation? AsProductSetOperation() => this as ProductSetOperation; + /// + ///The product on which the operation is being performed. + /// + public Product? product { get; } + /// + ///The status of this operation. + /// + public string? 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. + ///The limit for each product property name is 255 characters. + /// + public class ProductOption : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///A globally-unique ID. + /// + 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; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The corresponding value to the product option name. + /// + public IEnumerable? values { get; set; } + } + + /// + ///The set of variant strategies available for use in the `productOptionsCreate` mutation. + /// + public enum ProductOptionCreateVariantStrategy + { + /// + ///No additional variants are created in response to the added options. Existing variants are updated with the + ///first option value of each option added. + /// + LEAVE_AS_IS, + /// + ///Existing variants are updated with the first option value of each added option. New variants are + ///created for each combination of existing variant option values and new option values. + /// + CREATE, + } + + /// + ///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 string? 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, + /// + ///No valid metafield definition found for linked option. + /// + LINKED_METAFIELD_DEFINITION_NOT_FOUND, + /// + ///At least one of the product variants has invalid SKUs. + /// + CANNOT_MAKE_CHANGES_IF_VARIANT_IS_MISSING_REQUIRED_SKU, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + /// + ///Cannot update the option because it would result in deleting variants, and you don't have the required permissions. + /// + CANNOT_DELETE_VARIANT_WITHOUT_PERMISSION, + /// + ///The number of option values created with the MANAGE strategy would exceed the variant limit. + /// + TOO_MANY_VARIANTS_CREATED, + } + + /// + ///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 published 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 string? 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, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + /// + ///Cannot specify 'linkedMetafieldValue' for an option that is not linked to a metafield. + /// + LINKED_METAFIELD_VALUE_WITHOUT_LINKED_OPTION, + /// + ///The number of option values created with the CREATE strategy would exceed the variant limit. + /// + TOO_MANY_VARIANTS_CREATED, + } + + /// + ///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 string? 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, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + } + + /// + ///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 string? 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. + /// + public class ProductPriceRange : GraphQLObject + { + /// + ///The highest variant's price. + /// + public MoneyV2? maxVariantPrice { get; set; } + /// + ///The lowest variant's price. + /// + public MoneyV2? minVariantPrice { get; set; } + } + + /// + ///The price range of the product. + /// + public class ProductPriceRangeV2 : GraphQLObject + { + /// + ///The highest variant's price. + /// + public MoneyV2? maxVariantPrice { get; set; } + /// + ///The lowest variant's price. + /// + public MoneyV2? minVariantPrice { get; set; } + } + + /// + ///Represents the channels where a product is published. + /// + public class ProductPublication : GraphQLObject + { + /// + ///The channel where the product was or is published. + /// + public Channel? channel { get; set; } + /// + ///Whether the publication is published or not. + /// + public bool? isPublished { get; set; } + /// + ///The product that was or is going to be published on the channel. + /// + public Product? product { get; set; } + /// + ///The date that the product was or is going to be published on the channel. + /// + public DateTime? publishDate { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductPublications. + /// + public class ProductPublicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductPublicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ProductPublication and a cursor during pagination. + /// + public class ProductPublicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductPublicationEdge. + /// + public ProductPublication? node { get; set; } + } + + /// + ///Return type for `productPublish` mutation. + /// + public class ProductPublishPayload : GraphQLObject + { + /// + ///The product that has been published. + /// + public Product? product { get; set; } + + /// + ///The channels where the product is published. + /// + [Obsolete("Use Product.publications instead.")] + public IEnumerable? productPublications { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productReorderMedia` mutation. + /// + public class ProductReorderMediaPayload : GraphQLObject + { + /// + ///The asynchronous job which reorders the media. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? mediaUserErrors { get; set; } + + /// + ///The list of errors that occurred from executing the mutation. + /// + [Obsolete("Use `mediaUserErrors` instead.")] + public IEnumerable? userErrors { get; set; } + } + + /// + ///Reports the status of product for a Sales Channel or Storefront API. + ///This might include why a product is not available in a Sales Channel + ///and how a merchant might fix this. + /// + public class ProductResourceFeedback : GraphQLObject + { + /// + ///The time when the feedback was generated. Used to help determine whether + ///incoming feedback is outdated compared to existing feedback. + /// + public DateTime? feedbackGeneratedAt { get; set; } + /// + ///The feedback messages presented to the merchant. + /// + public IEnumerable? messages { get; set; } + /// + ///The ID of the product associated with the feedback. + /// + public string? productId { get; set; } + /// + ///The timestamp of the product associated with the feedback. + /// + public DateTime? productUpdatedAt { get; set; } + /// + ///Conveys the state of the feedback and whether it requires merchant action or not. + /// + public string? state { get; set; } + } + + /// + ///A sale associated with a product. + /// + public class ProductSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line item for the associated sale. + /// + public LineItem? lineItem { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///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 on which the operation is being performed. + /// + public Product? product { get; set; } + /// + ///The status of this operation. + /// + public string? 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 string? 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, + /// + ///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, + /// + ///Linked options are currently not supported for this shop. + /// + LINKED_OPTIONS_NOT_SUPPORTED_FOR_SHOP, + /// + ///No valid metafield definition found for linked option. + /// + LINKED_METAFIELD_DEFINITION_NOT_FOUND, + /// + ///Duplicated value. + /// + DUPLICATED_VALUE, + } + + /// + ///The set of valid sort keys for the Product query. + /// + public enum ProductSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `product_type` value. + /// + PRODUCT_TYPE, + /// + ///Sort by the `vendor` value. + /// + VENDOR, + /// + ///Sort by the `inventory_total` value. + /// + INVENTORY_TOTAL, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `published_at` value. + /// + PUBLISHED_AT, + /// + ///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. + ///[Pagination](https://shopify.dev/api/usage/pagination-graphql) isn't supported when using this sort key. + /// + RELEVANCE, + } + + /// + ///The possible product statuses. + /// + public enum ProductStatus + { + /// + ///The product is ready to sell and can be published to sales channels and apps. Products with an active status aren't automatically published to sales channels, such as the online store, or apps. By default, existing products are set to active. + /// + ACTIVE, + /// + ///The product is no longer being sold and isn't available to customers on sales channels and apps. + /// + ARCHIVED, + /// + ///The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft. + /// + DRAFT, + } + + /// + ///Represents a [Shopify product taxonomy](https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17) node. + /// + public class ProductTaxonomyNode : GraphQLObject, INode + { + /// + ///The full name of the product taxonomy node. For example, Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds. + /// + public string? fullName { get; set; } + /// + ///The ID of the product taxonomy node. + /// + public string? id { get; set; } + /// + ///Whether the node is a leaf node. + /// + public bool? isLeaf { get; set; } + /// + ///Whether the node is a root node. + /// + public bool? isRoot { get; set; } + /// + ///The name of the product taxonomy node. For example, Dog Beds. + /// + public string? name { get; set; } + } + + /// + ///Return type for `productUnpublish` mutation. + /// + public class ProductUnpublishPayload : GraphQLObject + { + /// + ///The product that has been unpublished. + /// + public Product? product { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productUpdateMedia` mutation. + /// + public class ProductUpdateMediaPayload : GraphQLObject + { + /// + ///The updated media object. + /// + public IEnumerable? media { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? mediaUserErrors { get; set; } + /// + ///The product on which media was updated. + /// + public Product? product { get; set; } + + /// + ///The list of errors that occurred from executing the mutation. + /// + [Obsolete("Use `mediaUserErrors` instead.")] + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productUpdate` mutation. + /// + public class ProductUpdatePayload : 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; } + } + + /// + ///Represents a product variant. + /// + public class ProductVariant : GraphQLObject, IHasEvents, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, ILegacyInteroperability, INavigable, INode, ICommentEventEmbed, IMetafieldReference, IMetafieldReferencer + { + /// + ///Whether the product variant is available for sale. + /// + public bool? availableForSale { get; set; } + /// + ///The value of the barcode associated with the product. + /// + public string? barcode { get; set; } + /// + ///The compare-at price of the variant in the default shop currency. + /// + public decimal? compareAtPrice { get; set; } + /// + ///The pricing that applies for a customer in a given context. + /// + public ProductVariantContextualPricing? contextualPricing { get; set; } + /// + ///The date and time when the variant was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A default [cursor](https://shopify.dev/api/usage/pagination-graphql) that returns the single next record, sorted ascending by ID. + /// + public string? defaultCursor { get; set; } + /// + ///The [delivery profile](https://shopify.dev/api/admin-graphql/latest/objects/DeliveryProfile) for the variant. + /// + public DeliveryProfile? deliveryProfile { get; set; } + /// + ///Display name of the variant, based on product's title + variant's title. + /// + public string? displayName { get; set; } + /// + ///The paginated list of events associated with the host subject. + /// + public EventConnection? events { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The featured image for the variant. + /// + public Image? image { get; set; } + /// + ///The inventory item, which is used to query for inventory information. + /// + public InventoryItem? inventoryItem { get; set; } + /// + ///Whether customers are allowed to place an order for the product variant when it's out of stock. + /// + public string? inventoryPolicy { get; set; } + /// + ///The total sellable quantity of the variant. + /// + public int? inventoryQuantity { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The media associated with the product variant. + /// + public MediaConnection? media { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The order of the product variant in the list of product variants. The first position in the list is 1. + /// + public int? position { get; set; } + + /// + ///List of prices and compare-at prices in the presentment currencies for this shop. + /// + [Obsolete("Use `contextualPricing` instead.")] + public ProductVariantPricePairConnection? presentmentPrices { get; set; } + /// + ///The price of the product variant in the default shop currency. + /// + public decimal? price { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 that this variant belongs to. + /// + public Product? product { get; set; } + /// + ///A list of the product variant components. + /// + public ProductVariantComponentConnection? productVariantComponents { get; set; } + /// + ///Whether a product variant requires components. The default value is `false`. + ///If `true`, then the product variant can only be purchased as a parent bundle with components and it will be omitted + ///from channels that don't support bundles. + /// + public bool? requiresComponents { get; set; } + /// + ///List of product options applied to the variant. + /// + public IEnumerable? selectedOptions { get; set; } + /// + ///The total sellable quantity of the variant for online channels. + ///This doesn't represent the total available inventory or capture + ///[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. + /// + public string? sku { get; set; } + + /// + ///The Storefront GraphQL API ID of the `ProductVariant`. + /// + ///As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead. + /// + [Obsolete("Use `id` instead.")] + public string? storefrontId { get; set; } + /// + ///The tax code for the product variant. + /// + public string? taxCode { get; set; } + /// + ///Whether a tax is charged when the product variant is sold. + /// + public bool? taxable { get; set; } + /// + ///The title of the product variant. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The unit price measurement for the variant. + /// + public UnitPriceMeasurement? unitPriceMeasurement { get; set; } + /// + ///The date and time (ISO 8601 format) when the product variant was last modified. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `productVariantAppendMedia` mutation. + /// + public class ProductVariantAppendMediaPayload : GraphQLObject + { + /// + ///The product associated with the variants and media. + /// + public Product? product { get; set; } + /// + ///The product variants that were updated. + /// + public IEnumerable? productVariants { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A product variant component associated with a product variant. + /// + public class ProductVariantComponent : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The product variant associated with the component. + /// + public ProductVariant? productVariant { get; set; } + /// + ///The required quantity of the component. + /// + public int? quantity { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductVariantComponents. + /// + public class ProductVariantComponentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductVariantComponentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ProductVariantComponent and a cursor during pagination. + /// + public class ProductVariantComponentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductVariantComponentEdge. + /// + public ProductVariantComponent? node { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductVariants. + /// + public class ProductVariantConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductVariantEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The price of a product variant in a specific country. + ///Prices vary between countries. + /// + public class ProductVariantContextualPricing : GraphQLObject + { + /// + ///The final compare-at price after all adjustments are applied. + /// + public MoneyV2? compareAtPrice { get; set; } + /// + ///The final price after all adjustments are applied. + /// + public MoneyV2? price { get; set; } + /// + ///A list of quantity breaks for the product variant. + /// + public QuantityPriceBreakConnection? quantityPriceBreaks { get; set; } + /// + ///The quantity rule applied for a given context. + /// + public QuantityRule? quantityRule { get; set; } + } + + /// + ///Return type for `productVariantDetachMedia` mutation. + /// + public class ProductVariantDetachMediaPayload : GraphQLObject + { + /// + ///The product associated with the variants and media. + /// + public Product? product { get; set; } + /// + ///The product variants that were updated. + /// + public IEnumerable? productVariants { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one ProductVariant and a cursor during pagination. + /// + public class ProductVariantEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductVariantEdge. + /// + public ProductVariant? node { get; set; } + } + + /// + ///The valid values for the inventory policy of a product variant once it is out of stock. + /// + public enum ProductVariantInventoryPolicy + { + /// + ///Customers can't buy this product variant after it's out of stock. + /// + DENY, + /// + ///Customers can buy this product variant after it's out of stock. + /// + CONTINUE, + } + + /// + ///Return type for `productVariantJoinSellingPlanGroups` mutation. + /// + public class ProductVariantJoinSellingPlanGroupsPayload : GraphQLObject + { + /// + ///The product variant object. + /// + public ProductVariant? productVariant { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `productVariantLeaveSellingPlanGroups` mutation. + /// + public class ProductVariantLeaveSellingPlanGroupsPayload : GraphQLObject + { + /// + ///The product variant object. + /// + public ProductVariant? productVariant { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The compare-at price and price of a variant sharing a currency. + /// + public class ProductVariantPricePair : GraphQLObject + { + /// + ///The compare-at price of the variant with associated currency. + /// + public MoneyV2? compareAtPrice { get; set; } + /// + ///The price of the variant with associated currency. + /// + public MoneyV2? price { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ProductVariantPricePairs. + /// + public class ProductVariantPricePairConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ProductVariantPricePairEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ProductVariantPricePair and a cursor during pagination. + /// + public class ProductVariantPricePairEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ProductVariantPricePairEdge. + /// + public ProductVariantPricePair? node { get; set; } + } + + /// + ///Return type for `productVariantRelationshipBulkUpdate` mutation. + /// + public class ProductVariantRelationshipBulkUpdatePayload : GraphQLObject + { + /// + ///The product variants with successfully updated product variant relationships. + /// + public IEnumerable? parentProductVariants { 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 `ProductVariantRelationshipBulkUpdate`. + /// + public class ProductVariantRelationshipBulkUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductVariantRelationshipBulkUpdateUserError`. + /// + public enum ProductVariantRelationshipBulkUpdateUserErrorCode + { + /// + ///A parent product variant ID or product ID must be provided. + /// + PARENT_REQUIRED, + /// + ///Unable to create parent product variant. + /// + FAILED_TO_CREATE, + /// + ///The product variants were not found. + /// + PRODUCT_VARIANTS_NOT_FOUND, + /// + ///A parent product variant cannot contain itself as a component. + /// + CIRCULAR_REFERENCE, + /// + ///Nested parent product variants aren't supported. + /// + NESTED_PARENT_PRODUCT_VARIANT, + /// + ///Product variant relationships must have a quantity greater than 0. + /// + INVALID_QUANTITY, + /// + ///A parent product variant must not contain duplicate product variant relationships. + /// + DUPLICATE_PRODUCT_VARIANT_RELATIONSHIP, + /// + ///Exceeded the maximum allowable product variant relationships in a parent product variant. + /// + EXCEEDED_PRODUCT_VARIANT_RELATIONSHIP_LIMIT, + /// + ///A Core type relationship cannot be added to a composite product variant with SFN type relationships. + /// + PRODUCT_VARIANT_RELATIONSHIP_TYPE_CONFLICT, + /// + ///Unexpected error. + /// + UNEXPECTED_ERROR, + /// + ///Unable to remove product variant relationships. + /// + FAILED_TO_REMOVE, + /// + ///The product variant relationships to remove must be specified if all the parent product variant's components aren't being removed. + /// + MUST_SPECIFY_COMPONENTS, + /// + ///Unable to update product variant relationships. + /// + FAILED_TO_UPDATE, + /// + ///Unable to update parent product variant price. + /// + FAILED_TO_UPDATE_PARENT_PRODUCT_VARIANT_PRICE, + /// + ///A price must be provided for a parent product variant if the price calucation is set to fixed. + /// + UPDATE_PARENT_VARIANT_PRICE_REQUIRED, + /// + ///Some of the provided product variants are not components of the specified parent product variant. + /// + PRODUCT_VARIANTS_NOT_COMPONENTS, + /// + ///The products for these product variants are already owned by another App. + /// + PRODUCT_EXPANDER_APP_OWNERSHIP_ALREADY_EXISTS, + /// + ///Multipack bundles are not supported. + /// + UNSUPPORTED_MULTIPACK_RELATIONSHIP, + /// + ///Gift cards cannot be parent product variants. + /// + PARENT_PRODUCT_VARIANT_CANNOT_BE_GIFT_CARD, + /// + ///Parent product variants cannot require a selling plan. + /// + PARENT_PRODUCT_VARIANT_CANNOT_REQUIRE_SELLING_PLAN, + /// + ///Combined listing cannot be parent product variants. + /// + PARENT_PRODUCT_VARIANT_CANNOT_BE_COMBINED_LISTING, + /// + ///Combined listing cannot be child product variants. + /// + CHILD_PRODUCT_VARIANT_CANNOT_BE_COMBINED_LISTING, + } + + /// + ///The set of valid sort keys for the ProductVariant query. + /// + public enum ProductVariantSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `sku` value. + /// + SKU, + /// + ///Sort by the `inventory_quantity` value. + /// + INVENTORY_QUANTITY, + /// + ///Sort by the `inventory_management` value. + /// + INVENTORY_MANAGEMENT, + /// + ///Sort by available inventory quantity in the location specified by the `query:"location_id:"` argument. + ///Don't use this sort key when no `location_id` in query is specified. + /// + INVENTORY_LEVELS_AVAILABLE, + /// + ///Sort by the `inventory_policy` value. + /// + INVENTORY_POLICY, + /// + ///Sort by the `full_title` value. + /// + FULL_TITLE, + /// + ///Sort by the `popular` value. + /// + POPULAR, + /// + ///Sort by the `position` value. + /// + POSITION, + /// + ///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, + } + + /// + ///Return type for `productVariantsBulkCreate` mutation. + /// + public class ProductVariantsBulkCreatePayload : GraphQLObject + { + /// + ///The updated product object. + /// + public Product? product { get; set; } + /// + ///The newly created variants. + /// + public IEnumerable? productVariants { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? 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. + /// + public class ProductVariantsBulkCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductVariantsBulkCreateUserError`. + /// + public enum ProductVariantsBulkCreateUserErrorCode + { + /// + ///Input is invalid. + /// + INVALID_INPUT, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///On create, this key cannot be used. + /// + NO_KEY_ON_CREATE, + /// + ///Variant already exists. + /// + VARIANT_ALREADY_EXISTS, + /// + ///Variant price must be greater than or equal to zero. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///Variant options are not enough. + /// + NEED_TO_ADD_OPTION_VALUES, + /// + ///Variant options are more than the product options. + /// + OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS, + /// + ///Inventory locations cannot exceed the allowed resource limit or 10. + /// + TOO_MANY_INVENTORY_LOCATIONS, + /// + ///You reached the limit of available SKUs in your current plan. + /// + SUBSCRIPTION_VIOLATION, + /// + ///Variant options already exist. Please change the variant option(s). + /// + VARIANT_ALREADY_EXISTS_CHANGE_OPTION_VALUE, + /// + ///Quantity could not be set. The location was not found. + /// + TRACKED_VARIANT_LOCATION_NOT_FOUND, + /// + ///Input must be for this product. + /// + MUST_BE_FOR_THIS_PRODUCT, + /// + ///Input is not defined for this shop. + /// + NOT_DEFINED_FOR_SHOP, + /// + ///Invalid input detected. + /// + INVALID, + /// + ///Price cannot take a negative value. + /// + NEGATIVE_PRICE_VALUE, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + /// + ///Cannot set name for an option value linked to a metafield. + /// + CANNOT_SET_NAME_FOR_LINKED_OPTION_VALUE, + } + + /// + ///Return type for `productVariantsBulkDelete` mutation. + /// + public class ProductVariantsBulkDeletePayload : 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 bulk variant delete mutations. + /// + public class ProductVariantsBulkDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductVariantsBulkDeleteUserError`. + /// + public enum ProductVariantsBulkDeleteUserErrorCode + { + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Cannot delete default variant. + /// + CANNOT_DELETE_LAST_VARIANT, + /// + ///The variant does not exist. + /// + AT_LEAST_ONE_VARIANT_DOES_NOT_BELONG_TO_THE_PRODUCT, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + } + + /// + ///Return type for `productVariantsBulkReorder` mutation. + /// + public class ProductVariantsBulkReorderPayload : GraphQLObject + { + /// + ///The updated product. + /// + public Product? product { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed bulk product variants reorder operation. + /// + public class ProductVariantsBulkReorderUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductVariantsBulkReorderUserError`. + /// + public enum ProductVariantsBulkReorderUserErrorCode + { + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Product variant does not exist. + /// + MISSING_VARIANT, + /// + ///Product variant position cannot be zero or negative number. + /// + INVALID_POSITION, + /// + ///Product variant IDs must be unique. + /// + DUPLICATED_VARIANT_ID, + } + + /// + ///Return type for `productVariantsBulkUpdate` mutation. + /// + public class ProductVariantsBulkUpdatePayload : GraphQLObject + { + /// + ///The updated product object. + /// + public Product? product { get; set; } + /// + ///The updated variants. + /// + public IEnumerable? productVariants { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed variant bulk update mutations. + /// + public class ProductVariantsBulkUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ProductVariantsBulkUpdateUserError`. + /// + public enum ProductVariantsBulkUpdateUserErrorCode + { + /// + ///Input is invalid. + /// + INVALID_INPUT, + /// + ///Mutually exclusive input fields provided. + /// + CANNOT_SPECIFY_BOTH, + /// + ///Mandatory field input field missing. + /// + MUST_SPECIFY_ONE_OF_PAIR, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Product variant is missing ID attribute. + /// + PRODUCT_VARIANT_ID_MISSING, + /// + ///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, + /// + ///Input must be for this product. + /// + MUST_BE_FOR_THIS_PRODUCT, + /// + ///Inventory quantities can only be provided during create. To update inventory for existing variants, use inventoryAdjustQuantities. + /// + NO_INVENTORY_QUANTITIES_ON_VARIANTS_UPDATE, + /// + ///The variant already exists. + /// + VARIANT_ALREADY_EXISTS, + /// + ///The price of the variant must be greater than or equal to zero. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///Variant options are not enough. + /// + NEED_TO_ADD_OPTION_VALUES, + /// + ///Variant options are more than the product options. + /// + OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS, + /// + ///You reached the limit of available SKUs in your current plan. + /// + SUBSCRIPTION_VIOLATION, + /// + ///Inventory quantities cannot be provided during update. + /// + NO_INVENTORY_QUANTITES_DURING_UPDATE, + /// + ///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, + /// + ///Operation is not supported for a combined listing parent product. + /// + UNSUPPORTED_COMBINED_LISTING_PARENT_OPERATION, + } + + /// + ///The set of valid sort keys for the ProfileItem query. + /// + public enum ProfileItemSortKeys + { + /// + ///Sort by the `title` value. + /// + TITLE, + /// + ///Sort by the `product_type` value. + /// + PRODUCT_TYPE, + /// + ///Sort by the `vendor` value. + /// + VENDOR, + /// + ///Sort by the `inventory_total` value. + /// + INVENTORY_TOTAL, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `published_at` value. + /// + PUBLISHED_AT, + /// + ///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, + } + + /// + ///Return type for `pubSubServerPixelUpdate` mutation. + /// + public class PubSubServerPixelUpdatePayload : GraphQLObject + { + /// + ///The server pixel as configured by the mutation. + /// + public ServerPixel? serverPixel { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `pubSubWebhookSubscriptionCreate` mutation. + /// + public class PubSubWebhookSubscriptionCreatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The webhook subscription that was created. + /// + public WebhookSubscription? webhookSubscription { get; set; } + } + + /// + ///An error that occurs during the execution of `PubSubWebhookSubscriptionCreate`. + /// + public class PubSubWebhookSubscriptionCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PubSubWebhookSubscriptionCreateUserError`. + /// + public enum PubSubWebhookSubscriptionCreateUserErrorCode + { + /// + ///Invalid parameters provided. + /// + INVALID_PARAMETERS, + /// + ///Address for this topic has already been taken. + /// + TAKEN, + } + + /// + ///Return type for `pubSubWebhookSubscriptionUpdate` mutation. + /// + public class PubSubWebhookSubscriptionUpdatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The webhook subscription that was updated. + /// + public WebhookSubscription? webhookSubscription { get; set; } + } + + /// + ///An error that occurs during the execution of `PubSubWebhookSubscriptionUpdate`. + /// + public class PubSubWebhookSubscriptionUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PubSubWebhookSubscriptionUpdateUserError`. + /// + public enum PubSubWebhookSubscriptionUpdateUserErrorCode + { + /// + ///Invalid parameters provided. + /// + INVALID_PARAMETERS, + } + + /// + ///A publication is a group of products and collections that is published to an app. + /// + public class Publication : GraphQLObject, INode + { + /// + ///The app associated with the publication. + /// + [Obsolete("Use [AppCatalog.apps](https://shopify.dev/api/admin-graphql/unstable/objects/AppCatalog#connection-appcatalog-apps) instead.")] + public App? app { get; set; } + /// + ///Whether new products are automatically published to this publication. + /// + public bool? autoPublish { get; set; } + /// + ///The catalog associated with the publication. + /// + public ICatalog? catalog { get; set; } + /// + ///The collection publications for the list of collections published to the publication. + /// + public ResourcePublicationConnection? collectionPublicationsV3 { get; set; } + /// + ///The list of collections published to the publication. + /// + public CollectionConnection? collections { get; set; } + /// + ///Whether the collection is available to the publication. + /// + public bool? hasCollection { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + + /// + ///Name of the publication. + /// + [Obsolete("Use [Catalog.title](https://shopify.dev/api/admin-graphql/unstable/interfaces/Catalog#field-catalog-title) instead.")] + public string? name { get; set; } + /// + ///A background operation associated with this publication. + /// + public IPublicationOperation? operation { get; set; } + /// + ///The product publications for the list of products published to the publication. + /// + public ResourcePublicationConnection? productPublicationsV3 { get; set; } + /// + ///The list of products published to the publication. + /// + public ProductConnection? products { get; set; } + /// + ///Whether the publication supports future publishing. + /// + public bool? supportsFuturePublishing { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Publications. + /// + public class PublicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in PublicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///The input fields for the possible values for the default state of a publication. + /// + public enum PublicationCreateInputPublicationDefaultState + { + /// + ///The publication is empty. + /// + EMPTY, + /// + ///The publication is populated with all products. + /// + ALL_PRODUCTS, + } + + /// + ///Return type for `publicationCreate` mutation. + /// + public class PublicationCreatePayload : GraphQLObject + { + /// + ///The publication that's been created. + /// + public Publication? publication { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `publicationDelete` mutation. + /// + public class PublicationDeletePayload : GraphQLObject + { + /// + ///The ID of the publication that was deleted. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Publication and a cursor during pagination. + /// + public class PublicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of PublicationEdge. + /// + public Publication? node { get; set; } + } + + /// + ///The possible types of publication operations. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AddAllProductsOperation), typeDiscriminator: "AddAllProductsOperation")] + [JsonDerivedType(typeof(CatalogCsvOperation), typeDiscriminator: "CatalogCsvOperation")] + [JsonDerivedType(typeof(PublicationResourceOperation), typeDiscriminator: "PublicationResourceOperation")] + public interface IPublicationOperation : IGraphQLObject + { + public AddAllProductsOperation? AsAddAllProductsOperation() => this as AddAllProductsOperation; + public CatalogCsvOperation? AsCatalogCsvOperation() => this as CatalogCsvOperation; + public PublicationResourceOperation? AsPublicationResourceOperation() => this as PublicationResourceOperation; + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The count of processed rows, summing imported, failed, and skipped rows. + /// + public int? processedRowCount { get; set; } + /// + ///Represents a rows objects within this background operation. + /// + public RowCount? rowCount { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + } + + /// + ///A bulk update operation on a publication. + /// + public class PublicationResourceOperation : GraphQLObject, INode, IResourceOperation, IPublicationOperation + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The count of processed rows, summing imported, failed, and skipped rows. + /// + public int? processedRowCount { get; set; } + /// + ///Represents a rows objects within this background operation. + /// + public RowCount? rowCount { get; set; } + /// + ///The status of this operation. + /// + public string? status { get; set; } + } + + /// + ///Return type for `publicationUpdate` mutation. + /// + public class PublicationUpdatePayload : GraphQLObject + { + /// + ///The publication that's been updated. + /// + public Publication? publication { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Defines errors encountered while managing a publication. + /// + public class PublicationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `PublicationUserError`. + /// + public enum PublicationUserErrorCode + { + /// + ///Can't perform this action on a publication. + /// + UNSUPPORTED_PUBLICATION_ACTION, + /// + ///Publication not found. + /// + PUBLICATION_NOT_FOUND, + /// + ///The publication is currently being modified. Please try again later. + /// + PUBLICATION_LOCKED, + /// + ///A catalog publication can only contain products. + /// + UNSUPPORTED_PUBLISHABLE_TYPE, + /// + ///Publishable ID not found. + /// + INVALID_PUBLISHABLE_ID, + /// + ///Market does not exist. + /// + MARKET_NOT_FOUND, + /// + ///Catalog does not exist. + /// + CATALOG_NOT_FOUND, + /// + ///Can't modify a publication that belongs to an app catalog. + /// + CANNOT_MODIFY_APP_CATALOG_PUBLICATION, + /// + ///Can't modify a publication that belongs to a market catalog. + /// + CANNOT_MODIFY_MARKET_CATALOG_PUBLICATION, + /// + ///Cannot modify a catalog for an app. + /// + CANNOT_MODIFY_APP_CATALOG, + /// + ///Cannot modify a catalog for a market. + /// + CANNOT_MODIFY_MARKET_CATALOG, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is blank. + /// + BLANK, + /// + ///A product publication cannot be created because the catalog type associated with this publication does not permit publications of this product type. + /// + PRODUCT_TYPE_INCOMPATIBLE_WITH_CATALOG_TYPE, + /// + ///The limit for simultaneous publication updates has been exceeded. + /// + PUBLICATION_UPDATE_LIMIT_EXCEEDED, + } + + /// + ///Represents a resource that can be published to a channel. + ///A publishable resource can be either a Product or Collection. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Collection), typeDiscriminator: "Collection")] + [JsonDerivedType(typeof(Product), typeDiscriminator: "Product")] + public interface IPublishable : IGraphQLObject + { + public Collection? AsCollection() => this as Collection; + public Product? AsProduct() => this as Product; + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + public Count? availablePublicationsCount { get; } + + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + [Obsolete("Use `resourcePublicationsCount` instead.")] + public int? publicationCount { get; } + + /// + ///Whether the resource is published to a specific channel. + /// + [Obsolete("Use `publishedOnPublication` instead.")] + public bool? publishedOnChannel { get; } + + /// + ///Whether the resource is published to a + ///[channel](https://shopify.dev/docs/api/admin-graphql/latest/objects/Channel). + ///For example, the resource might be published to the online store channel. + /// + [Obsolete("Use `publishedOnCurrentPublication` instead.")] + public bool? publishedOnCurrentChannel { get; } + /// + ///Whether the resource is published to the app's + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + ///For example, the resource might be published to the app's online store channel. + /// + public bool? publishedOnCurrentPublication { get; } + /// + ///Whether the resource is published to a specified + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public bool? publishedOnPublication { get; } + /// + ///The list of resources that are published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationConnection? resourcePublications { get; } + /// + ///The number of + ///[publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that a resource is published to, without + ///[feedback errors](https://shopify.dev/docs/api/admin-graphql/latest/objects/ResourceFeedback). + /// + public Count? resourcePublicationsCount { get; } + /// + ///The list of resources that are either published or staged to be published to a + ///[publication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication). + /// + public ResourcePublicationV2Connection? resourcePublicationsV2 { get; } + + /// + ///The list of channels that the resource is not published to. + /// + [Obsolete("Use `unpublishedPublications` instead.")] + public ChannelConnection? unpublishedChannels { get; } + /// + ///The list of [publications](https://shopify.dev/docs/api/admin-graphql/latest/objects/Publication) + ///that the resource isn't published to. + /// + public PublicationConnection? unpublishedPublications { get; } + } + + /// + ///Return type for `publishablePublish` mutation. + /// + public class PublishablePublishPayload : GraphQLObject + { + /// + ///Resource that has been published. + /// + public IPublishable? publishable { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `publishablePublishToCurrentChannel` mutation. + /// + public class PublishablePublishToCurrentChannelPayload : GraphQLObject + { + /// + ///Resource that has been published. + /// + public IPublishable? publishable { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `publishableUnpublish` mutation. + /// + public class PublishableUnpublishPayload : GraphQLObject + { + /// + ///Resource that has been unpublished. + /// + public IPublishable? publishable { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `publishableUnpublishToCurrentChannel` mutation. + /// + public class PublishableUnpublishToCurrentChannelPayload : GraphQLObject + { + /// + ///Resource that has been unpublished. + /// + public IPublishable? publishable { get; set; } + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents information about the purchasing company for the order or draft order. + /// + public class PurchasingCompany : GraphQLObject, IPurchasingEntity + { + /// + ///The company associated to the order or draft order. + /// + public Company? company { get; set; } + /// + ///The company contact associated to the order or draft order. + /// + public CompanyContact? contact { get; set; } + /// + ///The company location associated to the order or draft order. + /// + public CompanyLocation? location { get; set; } + } + + /// + ///Represents information about the purchasing entity for the order or draft order. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(Customer), typeDiscriminator: "Customer")] + [JsonDerivedType(typeof(PurchasingCompany), typeDiscriminator: "PurchasingCompany")] + public interface IPurchasingEntity : IGraphQLObject + { + public Customer? AsCustomer() => this as Customer; + public PurchasingCompany? AsPurchasingCompany() => this as PurchasingCompany; + } + + /// + ///Quantity price breaks lets you offer different rates that are based on the + ///amount of a specific variant being ordered. + /// + public class QuantityPriceBreak : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Minimum quantity required to reach new quantity break price. + /// + public int? minimumQuantity { get; set; } + /// + ///The price of variant after reaching the minimum quanity. + /// + public MoneyV2? price { get; set; } + /// + ///The price list associated with this quantity break. + /// + public PriceList? priceList { get; set; } + /// + ///The product variant associated with this quantity break. + /// + public ProductVariant? variant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple QuantityPriceBreaks. + /// + public class QuantityPriceBreakConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in QuantityPriceBreakEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one QuantityPriceBreak and a cursor during pagination. + /// + public class QuantityPriceBreakEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of QuantityPriceBreakEdge. + /// + public QuantityPriceBreak? node { get; set; } + } + + /// + ///The set of valid sort keys for the QuantityPriceBreak query. + /// + public enum QuantityPriceBreakSortKeys + { + /// + ///Sort by the `minimum_quantity` value. + /// + MINIMUM_QUANTITY, + /// + ///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, + } + + /// + ///Return type for `quantityPricingByVariantUpdate` mutation. + /// + public class QuantityPricingByVariantUpdatePayload : GraphQLObject + { + /// + ///The variants for which quantity pricing was created successfully in the price list. + /// + public IEnumerable? productVariants { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Error codes for failed volume pricing operations. + /// + public class QuantityPricingByVariantUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `QuantityPricingByVariantUserError`. + /// + public enum QuantityPricingByVariantUserErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///Price List does not exist. + /// + PRICE_LIST_NOT_FOUND, + /// + ///Something went wrong when trying to update quantity pricing. Please try again later. + /// + GENERIC_ERROR, + /// + ///Invalid quantity price break. + /// + QUANTITY_PRICE_BREAK_ADD_INVALID, + /// + ///Quantity price break's fixed price not found. + /// + QUANTITY_PRICE_BREAK_ADD_PRICE_LIST_PRICE_NOT_FOUND, + /// + ///Exceeded the allowed number of quantity price breaks per variant. + /// + QUANTITY_PRICE_BREAK_ADD_LIMIT_EXCEEDED, + /// + ///Price list and quantity price break currency mismatch. + /// + QUANTITY_PRICE_BREAK_ADD_CURRENCY_MISMATCH, + /// + ///Failed to save quantity price break. + /// + QUANTITY_PRICE_BREAK_ADD_FAILED_TO_SAVE, + /// + ///Quantity price break miniumum is less than the quantity rule minimum. + /// + QUANTITY_PRICE_BREAK_ADD_MIN_LOWER_THAN_QUANTITY_RULES_MIN, + /// + ///Quantity price break miniumum is higher than the quantity rule maximum. + /// + QUANTITY_PRICE_BREAK_ADD_MIN_HIGHER_THAN_QUANTITY_RULES_MAX, + /// + ///Quantity price break miniumum is not multiple of the quantity rule increment. + /// + QUANTITY_PRICE_BREAK_ADD_MIN_NOT_A_MULTIPLE_OF_QUANTITY_RULES_INCREMENT, + /// + ///Quantity price break variant not found. + /// + QUANTITY_PRICE_BREAK_ADD_VARIANT_NOT_FOUND, + /// + ///Quantity price breaks to add inputs must be unique by variant id and minimum quantity. + /// + QUANTITY_PRICE_BREAK_ADD_DUPLICATE_INPUT_FOR_VARIANT_AND_MIN, + /// + ///Quantity price break not found. + /// + QUANTITY_PRICE_BREAK_DELETE_NOT_FOUND, + /// + ///Failed to delete quantity price break. + /// + QUANTITY_PRICE_BREAK_DELETE_FAILED, + /// + ///Quantity rule variant not found. + /// + QUANTITY_RULE_ADD_VARIANT_NOT_FOUND, + /// + ///Quantity rule minimum is higher than the quantity price break minimum. + /// + QUANTITY_RULE_ADD_MIN_HIGHER_THAN_QUANTITY_PRICE_BREAK_MIN, + /// + ///Quantity rule maximum is less than the quantity price break minimum. + /// + QUANTITY_RULE_ADD_MAX_LOWER_THAN_QUANTITY_PRICE_BREAK_MIN, + /// + ///Quantity rule increment must be a multiple of the quantity price break minimum. + /// + QUANTITY_RULE_ADD_INCREMENT_NOT_A_MULTIPLE_OF_QUANTITY_PRICE_BREAK_MIN, + /// + ///Quantity rule catalog context not supported. + /// + QUANTITY_RULE_ADD_CATALOG_CONTEXT_NOT_SUPPORTED, + /// + ///Quantity rule increment is greater than minimum. + /// + QUANTITY_RULE_ADD_INCREMENT_IS_GREATER_THAN_MINIMUM, + /// + ///Quantity rule minimum is not a multiple of increment. + /// + QUANTITY_RULE_ADD_MINIMUM_NOT_A_MULTIPLE_OF_INCREMENT, + /// + ///Quantity rule maximum is not a multiple of increment. + /// + QUANTITY_RULE_ADD_MAXIMUM_NOT_A_MULTIPLE_OF_INCREMENT, + /// + ///Quantity rule minimum is greater than maximum. + /// + QUANTITY_RULE_ADD_MINIMUM_GREATER_THAN_MAXIMUM, + /// + ///Quantity rule increment is less than one. + /// + QUANTITY_RULE_ADD_INCREMENT_IS_LESS_THAN_ONE, + /// + ///Quantity rule minimum is less than one. + /// + QUANTITY_RULE_ADD_MINIMUM_IS_LESS_THAN_ONE, + /// + ///Quantity rule maximum is less than one. + /// + QUANTITY_RULE_ADD_MAXIMUM_IS_LESS_THAN_ONE, + /// + ///Quantity rules to add inputs must be unique by variant id. + /// + QUANTITY_RULE_ADD_DUPLICATE_INPUT_FOR_VARIANT, + /// + ///Quantity rule not found. + /// + QUANTITY_RULE_DELETE_RULE_NOT_FOUND, + /// + ///Quantity rule variant not found. + /// + QUANTITY_RULE_DELETE_VARIANT_NOT_FOUND, + /// + ///Price list and fixed price currency mismatch. + /// + PRICE_ADD_CURRENCY_MISMATCH, + /// + ///Fixed price's variant not found. + /// + PRICE_ADD_VARIANT_NOT_FOUND, + /// + ///Prices to add inputs must be unique by variant id. + /// + PRICE_ADD_DUPLICATE_INPUT_FOR_VARIANT, + /// + ///Price is not fixed. + /// + PRICE_DELETE_PRICE_NOT_FIXED, + /// + ///Fixed price's variant not found. + /// + PRICE_DELETE_VARIANT_NOT_FOUND, + } + + /// + ///The quantity rule for the product variant in a given context. + /// + public class QuantityRule : GraphQLObject + { + /// + ///The value that specifies the quantity increment between minimum and maximum of the rule. + ///Only quantities divisible by this value will be considered valid. + /// + ///The increment must be lower than or equal to the minimum and the maximum, and both minimum and maximum + ///must be divisible by this value. + /// + public int? increment { get; set; } + /// + ///Whether the quantity rule fields match one increment, one minimum and no maximum. + /// + public bool? isDefault { get; set; } + /// + ///An optional value that defines the highest allowed quantity purchased by the customer. + ///If defined, maximum must be lower than or equal to the minimum and must be a multiple of the increment. + /// + public int? maximum { get; set; } + /// + ///The value that defines the lowest allowed quantity purchased by the customer. + ///The minimum must be a multiple of the quantity rule's increment. + /// + public int? minimum { get; set; } + /// + ///Whether the values of the quantity rule were explicitly set. + /// + public string? originType { get; set; } + /// + ///The product variant for which the quantity rule is applied. + /// + public ProductVariant? productVariant { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple QuantityRules. + /// + public class QuantityRuleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in QuantityRuleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one QuantityRule and a cursor during pagination. + /// + public class QuantityRuleEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of QuantityRuleEdge. + /// + public QuantityRule? node { get; set; } + } + + /// + ///The origin of quantity rule on a price list. + /// + public enum QuantityRuleOriginType + { + /// + ///Quantity rule is explicitly defined. + /// + FIXED, + /// + ///Quantity rule falls back to the relative rule. + /// + RELATIVE, + } + + /// + ///An error for a failed quantity rule operation. + /// + public class QuantityRuleUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `QuantityRuleUserError`. + /// + public enum QuantityRuleUserErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///Product variant ID does not exist. + /// + PRODUCT_VARIANT_DOES_NOT_EXIST, + /// + ///Price list does not exist. + /// + PRICE_LIST_DOES_NOT_EXIST, + /// + ///Quantity rule for variant associated with the price list provided does not exist. + /// + VARIANT_QUANTITY_RULE_DOES_NOT_EXIST, + /// + ///Minimum must be lower than or equal to the maximum. + /// + MINIMUM_IS_GREATER_THAN_MAXIMUM, + /// + ///Minimum must be less than or equal to all quantity price break minimums associated with this variant in the specified price list. + /// + MINIMUM_IS_HIGHER_THAN_QUANTITY_PRICE_BREAK_MINIMUM, + /// + ///Maximum must be greater than or equal to all quantity price break minimums associated with this variant in the specified price list. + /// + MAXIMUM_IS_LOWER_THAN_QUANTITY_PRICE_BREAK_MINIMUM, + /// + ///Increment must be a multiple of all quantity price break minimums associated with this variant in the specified price list. + /// + INCREMENT_NOT_A_MULTIPLE_OF_QUANTITY_PRICE_BREAK_MINIMUM, + /// + ///Increment must be lower than or equal to the minimum. + /// + INCREMENT_IS_GREATER_THAN_MINIMUM, + /// + ///Value must be greater than or equal to 1. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The maximum must be a multiple of the increment. + /// + MAXIMUM_NOT_MULTIPLE_OF_INCREMENT, + /// + ///The minimum must be a multiple of the increment. + /// + MINIMUM_NOT_MULTIPLE_OF_INCREMENT, + /// + ///Quantity rules can be associated only with company location catalogs. + /// + CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES, + /// + ///Quantity rule inputs must be unique by variant id. + /// + DUPLICATE_INPUT_FOR_VARIANT, + /// + ///Something went wrong when trying to save the quantity rule. Please try again later. + /// + GENERIC_ERROR, + } + + /// + ///Return type for `quantityRulesAdd` mutation. + /// + public class QuantityRulesAddPayload : GraphQLObject + { + /// + ///The list of quantity rules that were added to or updated in the price list. + /// + public IEnumerable? quantityRules { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `quantityRulesDelete` mutation. + /// + public class QuantityRulesDeletePayload : GraphQLObject + { + /// + ///A list of product variant IDs whose quantity rules were removed from the price list. + /// + public IEnumerable? deletedQuantityRulesVariantIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. + /// + public class QueryRoot : GraphQLObject + { + /// + ///List of abandoned checkouts. Includes checkouts that were recovered after being abandoned. + /// + public AbandonedCheckoutConnection? abandonedCheckouts { get; set; } + /// + ///Returns the count of abandoned checkouts for the given shop. Limited to a maximum of 10000. + /// + public Count? abandonedCheckoutsCount { get; set; } + /// + ///Returns an abandonment by ID. + /// + public Abandonment? abandonment { get; set; } + /// + ///Returns an Abandonment by the Abandoned Checkout ID. + /// + public Abandonment? abandonmentByAbandonedCheckoutId { get; set; } + /// + ///Lookup an App by ID or return the currently authenticated App. + /// + public App? app { get; set; } + /// + ///Fetches app by handle. + ///Returns null if the app doesn't exist. + /// + public App? appByHandle { get; set; } + /// + ///Fetches an app by its client ID. + ///Returns null if the app doesn't exist. + /// + public App? appByKey { get; set; } + /// + ///An app discount type. + /// + public AppDiscountType? appDiscountType { get; set; } + /// + ///A list of app discount types installed by apps. + /// + public IEnumerable? appDiscountTypes { get; set; } + /// + ///Lookup an AppInstallation by ID or return the AppInstallation for the currently authenticated App. + /// + public AppInstallation? appInstallation { get; set; } + /// + ///A list of app installations. To use this query, you need to contact [Shopify Support](https://partners.shopify.com/current/support/) to grant your custom app the `read_apps` access scope. Public apps can't be granted this access scope. + /// + public AppInstallationConnection? appInstallations { get; set; } + /// + ///Returns an Article resource by ID. + /// + public Article? article { get; set; } + /// + ///List of all article tags. + /// + public IEnumerable? articleTags { get; set; } + /// + ///List of the shop's articles. + /// + public ArticleConnection? articles { get; set; } + /// + ///The paginated list of fulfillment orders assigned to the shop locations owned by the app. + /// + ///Assigned fulfillment orders are fulfillment orders that are set to be fulfilled from locations + ///managed by + ///[fulfillment services](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService) + ///that are registered by the app. + ///One app (api_client) can host multiple fulfillment services on a shop. + ///Each fulfillment service manages a dedicated location on a shop. + ///Assigned fulfillment orders can have associated + ///[fulfillment requests](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderRequestStatus), + ///or might currently not be requested to be fulfilled. + /// + ///The app must have the `read_assigned_fulfillment_orders` + ///[access scope](https://shopify.dev/docs/api/usage/access-scopes) + ///to be able to retrieve the fulfillment orders assigned to its locations. + /// + ///All assigned fulfillment orders (except those with the `CLOSED` status) will be returned by default. + ///Perform filtering with the `assignmentStatus` argument + ///to receive only fulfillment orders that have been requested to be fulfilled. + /// + public FulfillmentOrderConnection? assignedFulfillmentOrders { get; set; } + + /// + ///Returns an automatic discount resource by ID. + /// + [Obsolete("Use `automaticDiscountNode` instead.")] + public IDiscountAutomatic? automaticDiscount { get; set; } + /// + ///Returns an automatic discount resource by ID. + /// + public DiscountAutomaticNode? automaticDiscountNode { get; set; } + /// + ///List of automatic discounts. + /// + public DiscountAutomaticNodeConnection? automaticDiscountNodes { get; set; } + /// + ///List of the shop's automatic discount saved searches. + /// + public SavedSearchConnection? automaticDiscountSavedSearches { get; set; } + + /// + ///List of automatic discounts. + /// + [Obsolete("Use `automaticDiscountNodes` instead.")] + public DiscountAutomaticConnection? automaticDiscounts { get; set; } + /// + ///Returns a list of activated carrier services and associated shop locations that support them. + /// + public IEnumerable? availableCarrierServices { get; set; } + /// + ///A list of available locales. + /// + public IEnumerable? availableLocales { get; set; } + /// + ///Returns a Blog resource by ID. + /// + public Blog? blog { get; set; } + /// + ///List of the shop's blogs. + /// + public BlogConnection? blogs { get; set; } + /// + ///Count of blogs. + /// + public Count? blogsCount { get; set; } + /// + ///Returns a list of Business Entities associated with the shop. + /// + public IEnumerable? businessEntities { get; set; } + /// + ///Returns a Business Entity by ID. + /// + public BusinessEntity? businessEntity { get; set; } + /// + ///Returns a `DeliveryCarrierService` object by ID. + /// + public DeliveryCarrierService? carrierService { get; set; } + /// + ///Retrieve a list of CarrierServices. + /// + public DeliveryCarrierServiceConnection? carrierServices { get; set; } + /// + ///List of Cart transform objects owned by the current API client. + /// + 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; } + /// + ///Returns the most recent catalog operations for the shop. + /// + public IEnumerable? catalogOperations { get; set; } + /// + ///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. + /// + [Obsolete("Use `publication` instead.")] + public Channel? channel { get; set; } + + /// + ///List of the active sales channels. + /// + [Obsolete("Use `publications` instead.")] + public ChannelConnection? channels { get; set; } + /// + ///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; } + /// + ///A checkout profile on a shop. + /// + public CheckoutProfile? checkoutProfile { get; set; } + /// + ///List of checkout profiles on a shop. + /// + public CheckoutProfileConnection? checkoutProfiles { get; set; } + /// + ///Returns a code discount resource by ID. + /// + public DiscountCodeNode? codeDiscountNode { get; set; } + /// + ///Returns a code discount identified by its discount code. + /// + public DiscountCodeNode? codeDiscountNodeByCode { get; set; } + /// + ///List of code discounts. Special fields for query params: + /// * status: active, expired, scheduled + /// * discount_type: bogo, fixed_amount, free_shipping, percentage. + /// + public DiscountCodeNodeConnection? codeDiscountNodes { get; set; } + /// + ///List of the shop's code discount saved searches. + /// + public SavedSearchConnection? codeDiscountSavedSearches { get; set; } + /// + ///Returns a Collection resource by ID. + /// + public Collection? collection { get; set; } + /// + ///Return a collection by its handle. + /// + public Collection? collectionByHandle { get; set; } + /// + ///Lists all rules that can be used to create smart collections. + /// + public IEnumerable? collectionRulesConditions { get; set; } + /// + ///Returns a list of the shop's collection saved searches. + /// + public SavedSearchConnection? collectionSavedSearches { get; set; } + /// + ///Returns a list of collections. + /// + public CollectionConnection? collections { get; set; } + /// + ///Count of collections. Limited to a maximum of 10000. + /// + public Count? collectionsCount { get; set; } + /// + ///Returns a Comment resource by ID. + /// + public Comment? comment { get; set; } + /// + ///List of the shop's comments. + /// + public CommentConnection? comments { get; set; } + /// + ///Returns the list of companies in the shop. + /// + 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; } + /// + ///Returns a `CompanyContact` object by ID. + /// + public CompanyContact? companyContact { get; set; } + /// + ///Returns a `CompanyContactRole` object by ID. + /// + public CompanyContactRole? companyContactRole { get; set; } + /// + ///Returns a `CompanyLocation` object by ID. + /// + public CompanyLocation? companyLocation { get; set; } + /// + ///Returns the list of company locations in the shop. + /// + public CompanyLocationConnection? companyLocations { get; set; } + /// + ///Return the AppInstallation for the currently authenticated App. + /// + public AppInstallation? currentAppInstallation { get; set; } + /// + ///Returns the current app's most recent BulkOperation. Apps can run one bulk query and one bulk mutation operation at a time, by shop. + /// + public BulkOperation? currentBulkOperation { get; set; } + /// + ///The staff member making the API request. + /// + public StaffMember? currentStaffMember { get; set; } + /// + ///Returns a Customer resource by ID. + /// + public Customer? customer { get; set; } + /// + ///Returns a customer account page. + /// + public ICustomerAccountPage? customerAccountPage { get; set; } + /// + ///List of the shop's customer account pages. + /// + public CustomerAccountPageConnection? customerAccountPages { get; set; } + /// + ///Returns the status of a customer merge request job. + /// + public CustomerMergeRequest? customerMergeJobStatus { get; set; } + /// + ///Returns a preview of a customer merge request. + /// + public CustomerMergePreview? customerMergePreview { get; set; } + /// + ///Returns a CustomerPaymentMethod resource by its ID. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The list of members, such as customers, that's associated with an individual segment. + ///The maximum page size is 1000. + /// + public CustomerSegmentMemberConnection? customerSegmentMembers { get; set; } + /// + ///Returns a segment members query resource by ID. + /// + public CustomerSegmentMembersQuery? customerSegmentMembersQuery { get; set; } + /// + ///Whether a member, which is a customer, belongs to a segment. + /// + public SegmentMembershipResponse? customerSegmentMembership { get; set; } + /// + ///List of customers. + /// + public CustomerConnection? customers { get; set; } + /// + ///The number of customers. + /// + public Count? customersCount { get; set; } + + /// + ///The paginated list of deletion events. + /// + [Obsolete("Use `events` instead.")] + public DeletionEventConnection? deletionEvents { get; set; } + /// + ///The delivery customization. + /// + public DeliveryCustomization? deliveryCustomization { get; set; } + /// + ///The delivery customizations. + /// + public DeliveryCustomizationConnection? deliveryCustomizations { get; set; } + /// + ///Returns a Delivery Profile resource by ID. + /// + public DeliveryProfile? deliveryProfile { get; set; } + /// + ///Returns a list of saved delivery profiles. + /// + public DeliveryProfileConnection? deliveryProfiles { get; set; } + /// + ///Lookup a delivery promise provider. + /// + public DeliveryPromiseProvider? deliveryPromiseProvider { get; set; } + /// + ///Returns the shop-wide shipping settings. + /// + public DeliverySetting? deliverySettings { get; set; } + /// + ///The total number of discount codes for the shop. + /// + public Count? discountCodesCount { get; set; } + /// + ///Returns a discount resource by ID. + /// + public DiscountNode? discountNode { get; set; } + /// + ///List of discounts. + /// + public DiscountNodeConnection? discountNodes { get; set; } + /// + ///The total number of discounts for the shop. Limited to a maximum of 10000. + /// + public Count? discountNodesCount { get; set; } + /// + ///Returns a bulk code creation resource by ID. + /// + public DiscountRedeemCodeBulkCreation? discountRedeemCodeBulkCreation { get; set; } + /// + ///List of the shop's redeemed discount code saved searches. + /// + public SavedSearchConnection? discountRedeemCodeSavedSearches { get; set; } + /// + ///Returns dispute details based on ID. + /// + public ShopifyPaymentsDispute? dispute { get; set; } + /// + ///Returns dispute evidence details based on ID. + /// + public ShopifyPaymentsDisputeEvidence? disputeEvidence { get; set; } + /// + ///All disputes related to the Shop. + /// + public ShopifyPaymentsDisputeConnection? disputes { get; set; } + /// + ///Lookup a Domain by ID. + /// + public Domain? domain { get; set; } + /// + ///Returns a DraftOrder resource by ID. + /// + public DraftOrder? draftOrder { get; set; } + /// + ///List of the shop's draft order saved searches. + /// + public SavedSearchConnection? draftOrderSavedSearches { get; set; } + /// + ///Returns a DraftOrderTag resource by ID. + /// + public DraftOrderTag? draftOrderTag { get; set; } + /// + ///List of saved draft orders. + /// + public DraftOrderConnection? draftOrders { get; set; } + /// + ///Get a single event by its id. + /// + public IEvent? @event { get; set; } + /// + ///The paginated list of events associated with the store. + /// + public EventConnection? events { get; set; } + /// + ///Count of events. Limited to a maximum of 10000. + /// + public Count? eventsCount { get; set; } + /// + ///A list of the shop's file saved searches. + /// + public SavedSearchConnection? fileSavedSearches { get; set; } + /// + ///Returns a paginated list of files that have been uploaded to Shopify. + /// + public FileConnection? files { get; set; } + /// + ///Returns a Fulfillment resource by ID. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The fulfillment constraint rules that belong to a shop. + /// + public IEnumerable? fulfillmentConstraintRules { get; set; } + /// + ///Returns a Fulfillment order resource by ID. + /// + public FulfillmentOrder? fulfillmentOrder { get; set; } + /// + ///The paginated list of all fulfillment orders. + ///The returned fulfillment orders are filtered according to the + ///[fulfillment order access scopes](https://shopify.dev/api/admin-graphql/latest/objects/fulfillmentorder#api-access-scopes) + ///granted to the app. + /// + ///Use this query to retrieve fulfillment orders assigned to merchant-managed locations, + ///third-party fulfillment service locations, or all kinds of locations together. + /// + ///For fetching only the fulfillment orders assigned to the app's locations, use the + ///[assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/2024-07/objects/queryroot#connection-assignedfulfillmentorders) + ///connection. + /// + public FulfillmentOrderConnection? fulfillmentOrders { get; set; } + /// + ///Returns a FulfillmentService resource by ID. + /// + public FulfillmentService? fulfillmentService { get; set; } + /// + ///Returns a gift card resource by ID. + /// + public GiftCard? giftCard { get; set; } + /// + ///Returns a list of gift cards. + /// + public GiftCardConnection? giftCards { get; set; } + /// + ///The total number of gift cards issued for the shop. Limited to a maximum of 10000. + /// + public Count? giftCardsCount { get; set; } + /// + ///Returns an + ///[InventoryItem](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem) + ///object by ID. + /// + public InventoryItem? inventoryItem { get; set; } + /// + ///Returns a list of inventory items. + /// + public InventoryItemConnection? inventoryItems { get; set; } + /// + ///Returns an + ///[InventoryLevel](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryLevel) + ///object by ID. + /// + public InventoryLevel? inventoryLevel { get; set; } + /// + ///General inventory properties for the shop. + /// + public InventoryProperties? inventoryProperties { get; set; } + /// + ///Returns a Job resource by ID. Used to check the status of internal jobs and any applicable changes. + /// + public Job? job { get; set; } + /// + ///Returns an inventory Location resource by ID. + /// + public Location? location { get; set; } + /// + ///Returns a list of active inventory locations. + /// + public LocationConnection? locations { get; set; } + + /// + ///Returns a list of all origin locations available for a delivery profile. + /// + [Obsolete("Use `locationsAvailableForDeliveryProfilesConnection` instead.")] + public IEnumerable? locationsAvailableForDeliveryProfiles { get; set; } + /// + ///Returns a list of all origin locations available for a delivery profile. + /// + public LocationConnection? locationsAvailableForDeliveryProfilesConnection { get; set; } + /// + ///Returns the count of locations for the given shop. Limited to a maximum of 10000. + /// + public Count? locationsCount { get; set; } + /// + ///Returns a list of fulfillment orders that are on hold. + /// + public FulfillmentOrderConnection? manualHoldsFulfillmentOrders { get; set; } + /// + ///Returns a market resource by ID. + /// + public Market? market { get; set; } + /// + ///Returns the applicable market for a customer based on where they are in the world. + /// + public Market? marketByGeography { get; set; } + /// + ///A resource that can have localized values for different markets. + /// + public MarketLocalizableResource? marketLocalizableResource { get; set; } + /// + ///Resources that can have localized values for different markets. + /// + public MarketLocalizableResourceConnection? marketLocalizableResources { get; set; } + /// + ///Resources that can have localized values for different markets. + /// + public MarketLocalizableResourceConnection? marketLocalizableResourcesByIds { get; set; } + /// + ///A list of marketing activities associated with the marketing app. + /// + public MarketingActivityConnection? marketingActivities { get; set; } + /// + ///Returns a MarketingActivity resource by ID. + /// + public MarketingActivity? marketingActivity { get; set; } + /// + ///Returns a MarketingEvent resource by ID. + /// + public MarketingEvent? marketingEvent { get; set; } + /// + ///A list of marketing events associated with the marketing app. + /// + public MarketingEventConnection? marketingEvents { get; set; } + /// + ///The markets configured for the shop. + /// + public MarketConnection? markets { get; set; } + /// + ///Returns a Menu resource by ID. + /// + public Menu? menu { get; set; } + /// + ///The shop's menus. + /// + public MenuConnection? menus { get; set; } + /// + ///Returns a metafield definition by identifier. + /// + public MetafieldDefinition? metafieldDefinition { get; set; } + /// + ///Each metafield definition has a type, which defines the type of information that it can store. + ///This type is enforced across every instance of the resource that owns the metafield definition. + /// + ///Refer to the [list of supported metafield types](https://shopify.dev/apps/metafields/types). + /// + public IEnumerable? metafieldDefinitionTypes { get; set; } + /// + ///List of metafield definitions. + /// + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + + /// + ///List of the `MetafieldStorefrontVisibility` records. + /// + [Obsolete("This query will be removed in a future version. Use the `access.storefront` field for nodes inside the `metafieldDefinitions` query instead.")] + public MetafieldStorefrontVisibilityConnection? metafieldStorefrontVisibilities { get; set; } + + /// + ///Returns a `MetafieldStorefrontVisibility` record by ID. A `MetafieldStorefrontVisibility` record lists the + ///metafields to make visible in the Storefront API. + /// + [Obsolete("This query will be removed in a future version. Use the `access.storefront` field inside the `metafieldDefinition` query instead.")] + public MetafieldStorefrontVisibility? metafieldStorefrontVisibility { get; set; } + /// + ///Retrieves a metaobject by ID. + /// + public Metaobject? metaobject { get; set; } + /// + ///Retrieves a metaobject by handle. + /// + public Metaobject? metaobjectByHandle { get; set; } + /// + ///Retrieves a metaobject definition by ID. + /// + public MetaobjectDefinition? metaobjectDefinition { get; set; } + /// + ///Finds a metaobject definition by type. + /// + public MetaobjectDefinition? metaobjectDefinitionByType { get; set; } + /// + ///All metaobject definitions. + /// + public MetaobjectDefinitionConnection? metaobjectDefinitions { get; set; } + /// + ///All metaobjects for the shop. + /// + public MetaobjectConnection? metaobjects { get; set; } + /// + ///Return a mobile platform application by its ID. + /// + public IMobilePlatformApplication? mobilePlatformApplication { get; set; } + /// + ///List the mobile platform applications. + /// + public MobilePlatformApplicationConnection? mobilePlatformApplications { get; set; } + /// + ///Returns a specific node (any object that implements the + ///[Node](https://shopify.dev/api/admin-graphql/latest/interfaces/Node) + ///interface) by ID, in accordance with the + ///[Relay specification](https://relay.dev/docs/guides/graphql-server-specification/#object-identification). + ///This field is commonly used for refetching an object. + /// + public INode? node { get; set; } + /// + ///Returns the list of nodes (any objects that implement the + ///[Node](https://shopify.dev/api/admin-graphql/latest/interfaces/Node) + ///interface) with the given IDs, in accordance with the + ///[Relay specification](https://relay.dev/docs/guides/graphql-server-specification/#object-identification). + /// + public IEnumerable? nodes { get; set; } + /// + ///The shop's online store channel. + /// + public OnlineStore? onlineStore { get; set; } + /// + ///Returns an Order resource by ID. + /// + public Order? order { get; set; } + /// + ///Returns a payment status by payment reference ID. Used to check the status of a deferred payment. + /// + public OrderPaymentStatus? orderPaymentStatus { get; set; } + /// + ///List of the shop's order saved searches. + /// + public SavedSearchConnection? orderSavedSearches { get; set; } + /// + ///Returns a list of orders placed in the store. + /// + public OrderConnection? orders { get; set; } + /// + ///Returns the count of orders for the given shop. Limited to a maximum of 10000. + /// + public Count? ordersCount { get; set; } + /// + ///Returns a Page resource by ID. + /// + public Page? page { get; set; } + /// + ///List of the shop's pages. + /// + public PageConnection? pages { get; set; } + /// + ///Count of pages. + /// + public Count? pagesCount { get; set; } + /// + ///The payment customization. + /// + public PaymentCustomization? paymentCustomization { get; set; } + /// + ///The payment customizations. + /// + public PaymentCustomizationConnection? paymentCustomizations { get; set; } + /// + ///The list of payment terms templates eligible for all shops and users. + /// + 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; } + /// + ///All price lists for a shop. + /// + public PriceListConnection? priceLists { get; set; } + /// + ///The primary market of the shop. + /// + public Market? primaryMarket { get; set; } + + /// + ///Returns a private metafield by ID. + ///Private metafields are accessible only by the application that created them. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///Returns a list of private metafields associated to a resource. + /// + [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; } + /// + ///Returns a Product resource by ID. + /// + public Product? product { get; set; } + /// + ///Return a product by its handle. + /// + public Product? productByHandle { get; set; } + /// + ///Returns the product duplicate job. + /// + public ProductDuplicateJob? productDuplicateJob { get; set; } + /// + ///Returns a ProductFeed resource by ID. + /// + public ProductFeed? productFeed { get; set; } + /// + ///The product feeds for the shop. + /// + 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; } + /// + ///Returns a list of the shop's product saved searches. + /// + public SavedSearchConnection? productSavedSearches { get; set; } + /// + ///Returns a ProductVariant resource by ID. + /// + public ProductVariant? productVariant { get; set; } + /// + ///Returns a list of product variants. + /// + public ProductVariantConnection? productVariants { get; set; } + /// + ///Count of product variants. + /// + public Count? productVariantsCount { get; set; } + /// + ///Returns a list of products. + /// + 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; } + /// + ///Lookup a publication by ID. + /// + public Publication? publication { get; set; } + /// + ///List of publications. + /// + public PublicationConnection? publications { get; set; } + /// + ///Count of publications. + /// + public Count? publicationsCount { get; set; } + /// + ///Returns a count of published products by publication ID. + /// + public Count? publishedProductsCount { get; set; } + /// + ///Returns a Refund resource by ID. + /// + public Refund? refund { get; set; } + /// + ///Returns a Return resource by ID. + /// + public Return? @return { get; set; } + /// + ///The calculated monetary value to be exchanged due to the return. + /// + public CalculatedReturn? returnCalculate { get; set; } + /// + ///Lookup a returnable fulfillment by ID. + /// + public ReturnableFulfillment? returnableFulfillment { get; set; } + /// + ///List of returnable fulfillments. + /// + public ReturnableFulfillmentConnection? returnableFulfillments { get; set; } + /// + ///Lookup a reverse delivery by ID. + /// + public ReverseDelivery? reverseDelivery { get; set; } + /// + ///Lookup a reverse fulfillment order by ID. + /// + public ReverseFulfillmentOrder? reverseFulfillmentOrder { get; set; } + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///Lookup a script tag resource by ID. + ///
+ public ScriptTag? scriptTag { get; set; } + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///A list of script tags. + ///
+ public ScriptTagConnection? scriptTags { get; set; } + /// + ///The Customer Segment. + /// + public Segment? segment { 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; } + /// + ///A list of filters. + /// + public SegmentFilterConnection? segmentFilters { get; set; } + /// + ///A list of a shop's segment migrations. + /// + public SegmentMigrationConnection? segmentMigrations { get; set; } + /// + ///The list of suggested values corresponding to a particular filter for a segment. A segment is a group of members, such as customers, that meet specific criteria. + /// + public SegmentValueConnection? segmentValueSuggestions { get; set; } + /// + ///A list of a shop's segments. + /// + 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; } + /// + ///List Selling Plan Groups. + /// + public SellingPlanGroupConnection? sellingPlanGroups { get; set; } + /// + ///The server pixel configured by the app. + /// + public ServerPixel? serverPixel { get; set; } + /// + ///Returns the Shop resource corresponding to the access token used in the request. The Shop resource contains + ///business and store management settings for the shop. + /// + public Shop? shop { get; set; } + /// + ///The shop's billing preferences. + /// + public ShopBillingPreferences? shopBillingPreferences { get; set; } + /// + ///A list of locales available on a shop. + /// + public IEnumerable? shopLocales { get; set; } + /// + ///The Shopify Function. + /// + public ShopifyFunction? shopifyFunction { get; set; } + /// + ///Returns the Shopify Functions for apps installed on the shop. + /// + public ShopifyFunctionConnection? shopifyFunctions { get; set; } + /// + ///Shopify Payments account information, including balances and payouts. + /// + public ShopifyPaymentsAccount? shopifyPaymentsAccount { get; set; } + /// + ///The StaffMember resource, by ID. + /// + public StaffMember? staffMember { get; set; } + /// + ///The shop staff members. + /// + public StaffMemberConnection? staffMembers { get; set; } + /// + ///Standard metafield definitions are intended for specific, common use cases. Their namespace and keys reflect these use cases and are reserved. + /// + ///Refer to all available [`Standard Metafield Definition Templates`](https://shopify.dev/api/admin-graphql/latest/objects/StandardMetafieldDefinitionTemplate). + /// + public StandardMetafieldDefinitionTemplateConnection? standardMetafieldDefinitionTemplates { get; set; } + /// + ///Returns a store credit account resource by ID. + /// + public StoreCreditAccount? storeCreditAccount { get; set; } + /// + ///Returns a SubscriptionBillingAttempt by ID. + /// + public SubscriptionBillingAttempt? subscriptionBillingAttempt { get; set; } + /// + ///Returns subscription billing attempts on a store. + /// + public SubscriptionBillingAttemptConnection? subscriptionBillingAttempts { get; set; } + /// + ///Returns a subscription billing cycle found either by cycle index or date. + /// + public SubscriptionBillingCycle? subscriptionBillingCycle { get; set; } + /// + ///Retrieves the results of the asynchronous job for the subscription billing cycle bulk action based on the specified job ID. + ///This query can be used to obtain the billing cycles that match the criteria defined in the subscriptionBillingCycleBulkSearch and subscriptionBillingCycleBulkCharge mutations. + /// + public SubscriptionBillingCycleConnection? subscriptionBillingCycleBulkResults { get; set; } + /// + ///Returns subscription billing cycles for a contract ID. + /// + public SubscriptionBillingCycleConnection? subscriptionBillingCycles { get; set; } + /// + ///Returns a Subscription Contract resource by ID. + /// + public SubscriptionContract? subscriptionContract { get; set; } + /// + ///List Subscription Contracts. + /// + public SubscriptionContractConnection? subscriptionContracts { get; set; } + /// + ///Returns a Subscription Draft resource by ID. + /// + 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; } + /// + ///Returns a particular theme for the shop. + /// + public OnlineStoreTheme? theme { get; set; } + /// + ///Returns a paginated list of themes for the shop. + /// + public OnlineStoreThemeConnection? themes { get; set; } + /// + ///A resource that can have localized values for different languages. + /// + public TranslatableResource? translatableResource { get; set; } + /// + ///Resources that can have localized values for different languages. + /// + public TranslatableResourceConnection? translatableResources { get; set; } + /// + ///Resources that can have localized values for different languages. + /// + public TranslatableResourceConnection? translatableResourcesByIds { get; set; } + /// + ///Returns a redirect resource by ID. + /// + public UrlRedirect? urlRedirect { get; set; } + /// + ///Returns a redirect import resource by ID. + /// + public UrlRedirectImport? urlRedirectImport { get; set; } + /// + ///A list of the shop's URL redirect saved searches. + /// + public SavedSearchConnection? urlRedirectSavedSearches { get; set; } + /// + ///A list of redirects for a shop. + /// + public UrlRedirectConnection? urlRedirects { get; set; } + /// + ///Count of redirects. Limited to a maximum of 10000. + /// + public Count? urlRedirectsCount { get; set; } + /// + ///Validation available on the shop. + /// + public Validation? validation { get; set; } + /// + ///Validations available on the shop. + /// + public ValidationConnection? validations { get; set; } + /// + ///The web pixel configured by the app. + /// + public WebPixel? webPixel { get; set; } + /// + ///Returns a webhook subscription by ID. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public WebhookSubscription? webhookSubscription { get; set; } + /// + ///Returns a list of webhook subscriptions. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). + /// + public WebhookSubscriptionConnection? webhookSubscriptions { get; set; } + /// + ///The count of webhook subscriptions. + /// + ///Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). Limited to a maximum of 10000. + /// + public Count? webhookSubscriptionsCount { get; set; } + } + + /// + ///The record of the line items and transactions that were refunded to a customer, along with restocking instructions for refunded line items. + /// + public class Refund : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The date and time when the refund was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A list of the refunded duties as part of this refund. + /// + public IEnumerable? duties { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The optional note associated with the refund. + /// + public string? note { get; set; } + /// + ///The order associated with the refund. + /// + public Order? order { get; set; } + /// + ///The order adjustments that are attached with the refund. + /// + public OrderAdjustmentConnection? orderAdjustments { get; set; } + /// + ///The `RefundLineItem` resources attached to the refund. + /// + 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; } + /// + ///The staff member who created the refund. + /// + public StaffMember? staffMember { get; set; } + + /// + ///The total amount across all transactions for the refund. + /// + [Obsolete("Use `totalRefundedSet` instead.")] + public MoneyV2? totalRefunded { get; set; } + /// + ///The total amount across all transactions for the refund, in shop and presentment currencies. + /// + public MoneyBag? totalRefundedSet { get; set; } + /// + ///The transactions associated with the refund. + /// + public OrderTransactionConnection? transactions { get; set; } + /// + ///The date and time when the refund was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An agreement between the merchant and customer to refund all or a portion of the order. + /// + public class RefundAgreement : 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 string? reason { get; set; } + /// + ///The refund associated with the agreement. + /// + public Refund? refund { 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; } + } + + /// + ///An auto-generated type for paginating through multiple Refunds. + /// + public class RefundConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in RefundEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `refundCreate` mutation. + /// + public class RefundCreatePayload : GraphQLObject + { + /// + ///The order associated with the created refund. + /// + public Order? order { get; set; } + /// + ///The created refund. + /// + public Refund? refund { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a refunded duty. + /// + public class RefundDuty : GraphQLObject + { + /// + ///The amount of a refunded duty in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///The duty associated with this refunded duty. + /// + public Duty? originalDuty { get; set; } + } + + /// + ///The type of refund to perform for a particular refund duty. + /// + public enum RefundDutyRefundType + { + /// + ///The duty is proportionally refunded based on the quantity of the refunded line item. + /// + PROPORTIONAL, + /// + ///The duty is fully refunded. + /// + FULL, + } + + /// + ///An auto-generated type which holds one Refund and a cursor during pagination. + /// + public class RefundEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of RefundEdge. + /// + public Refund? node { get; set; } + } + + /// + ///A line item that's included in a refund. + /// + public class RefundLineItem : GraphQLObject + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The `LineItem` resource associated to the refunded line item. + /// + public LineItem? lineItem { get; set; } + /// + ///The inventory restock location. + /// + public Location? location { get; set; } + + /// + ///The price of a refunded line item. + /// + [Obsolete("Use `priceSet` instead.")] + public decimal? price { get; set; } + /// + ///The price of a refunded line item in shop and presentment currencies. + /// + public MoneyBag? priceSet { get; set; } + /// + ///The quantity of a refunded line item. + /// + public int? quantity { get; set; } + /// + ///The type of restock for the refunded line item. + /// + public string? restockType { get; set; } + /// + ///Whether the refunded line item was restocked. Not applicable in the context of a SuggestedRefund. + /// + public bool? restocked { get; set; } + + /// + ///The subtotal price of a refunded line item. + /// + [Obsolete("Use `subtotalSet` instead.")] + public decimal? subtotal { get; set; } + /// + ///The subtotal price of a refunded line item in shop and presentment currencies. + /// + public MoneyBag? subtotalSet { get; set; } + + /// + ///The total tax charged on a refunded line item. + /// + [Obsolete("Use `totalTaxSet` instead.")] + public decimal? totalTax { get; set; } + /// + ///The total tax charged on a refunded line item in shop and presentment currencies. + /// + public MoneyBag? totalTaxSet { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple RefundLineItems. + /// + public class RefundLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in RefundLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one RefundLineItem and a cursor during pagination. + /// + public class RefundLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of RefundLineItemEdge. + /// + public RefundLineItem? node { get; set; } + } + + /// + ///The type of restock performed for a particular refund line item. + /// + public enum RefundLineItemRestockType + { + /// + ///The refund line item was returned. Use this when restocking line items that were fulfilled. + /// + RETURN, + /// + ///The refund line item was canceled. Use this when restocking unfulfilled line items. + /// + CANCEL, + /// + ///Deprecated. The refund line item was restocked, without specifically beingidentified as a return or cancelation. This value is not accepted when creating new refunds. + /// + LEGACY_RESTOCK, + /// + ///Refund line item was not restocked. + /// + 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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in RefundShippingLineEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one RefundShippingLine and a cursor during pagination. + /// + public class RefundShippingLineEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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. + /// + public class ResourceAlert : GraphQLObject + { + /// + ///Buttons in the alert that link to related information. + ///For example, _Edit variants_. + /// + public IEnumerable? actions { get; set; } + /// + ///The secondary text in the alert that includes further information or instructions about how to solve a problem. + /// + public string? content { get; set; } + /// + ///Unique identifier that appears when an alert is manually closed by the merchant. + ///Most alerts can't be manually closed. + /// + public string? dismissibleHandle { get; set; } + /// + ///An icon that's optionally displayed with the alert. + /// + public string? icon { get; set; } + /// + ///Indication of how important the alert is. + /// + public string? severity { get; set; } + /// + ///The primary text in the alert that includes information or describes the problem. + /// + public string? title { get; set; } + } + + /// + ///An action associated to a resource alert, such as editing variants. + /// + public class ResourceAlertAction : GraphQLObject + { + /// + ///Whether the action appears as a button or as a link. + /// + public bool? primary { get; set; } + /// + ///Resource for the action to show. + /// + public string? show { get; set; } + /// + ///The text for the button in the alert. For example, _Edit variants_. + /// + public string? title { get; set; } + /// + ///The target URL that the button links to. + /// + public string? url { get; set; } + } + + /// + ///The available icons for resource alerts. + /// + public enum ResourceAlertIcon + { + /// + ///A checkmark inside a circle. + /// + CHECKMARK_CIRCLE, + /// + ///A lowercase `i` inside a circle. + /// + INFORMATION_CIRCLE, + } + + /// + ///The possible severity levels for a resource alert. + /// + public enum ResourceAlertSeverity + { + /// + ///Indicates a neutral alert. For example, an accepted dispute. + /// + DEFAULT, + /// + ///Indicates an informative alert. For example, an escalated dispute. + /// + INFO, + /// + ///Indicates an informative alert. For example, a new dispute. + /// + WARNING, + /// + ///Indicates a success alert. For example, a winning a dispute. + /// + SUCCESS, + /// + ///Indicates a critical alert. For example, a blocked app. + /// + CRITICAL, + [Obsolete("`ERROR` severity is being deprecated in favour of `WARNING` or `CRITICAL` instead.")] + ERROR, + } + + /// + ///Represents feedback from apps about a resource, and the steps required to set up the apps on the shop. + /// + public class ResourceFeedback : GraphQLObject + { + /// + ///Feedback from an app about the steps a merchant needs to take to set up the app on their store. + /// + [Obsolete("Use `details` instead.")] + public IEnumerable? appFeedback { get; set; } + /// + ///List of AppFeedback detailing issues regarding a resource. + /// + public IEnumerable? details { get; set; } + /// + ///Summary of resource feedback pertaining to the resource. + /// + public string? summary { get; set; } + } + + /// + ///The state of the resource feedback. + /// + public enum ResourceFeedbackState + { + /// + ///No action required from merchant. + /// + ACCEPTED, + /// + ///The merchant needs to resolve an issue with the resource. + /// + REQUIRES_ACTION, + } + + /// + ///Represents a merchandising background operation interface. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(AddAllProductsOperation), typeDiscriminator: "AddAllProductsOperation")] + [JsonDerivedType(typeof(CatalogCsvOperation), typeDiscriminator: "CatalogCsvOperation")] + [JsonDerivedType(typeof(PublicationResourceOperation), typeDiscriminator: "PublicationResourceOperation")] + public interface IResourceOperation : IGraphQLObject + { + public AddAllProductsOperation? AsAddAllProductsOperation() => this as AddAllProductsOperation; + public CatalogCsvOperation? AsCatalogCsvOperation() => this as CatalogCsvOperation; + public PublicationResourceOperation? AsPublicationResourceOperation() => this as PublicationResourceOperation; + /// + ///A globally-unique ID. + /// + public string? id { get; } + /// + ///The count of processed rows, summing imported, failed, and skipped rows. + /// + public int? processedRowCount { get; } + /// + ///Represents a rows objects within this background operation. + /// + public RowCount? rowCount { get; } + /// + ///The status of this operation. + /// + public string? status { get; } + } + + /// + ///Represents the state of this catalog operation. + /// + public enum ResourceOperationStatus + { + /// + ///Operation has been created. + /// + CREATED, + /// + ///Operation is currently running. + /// + ACTIVE, + /// + ///Operation is complete. + /// + COMPLETE, + } + + /// + ///A resource publication represents information about the publication of a resource. + ///An instance of `ResourcePublication`, unlike `ResourcePublicationV2`, can be neither published or scheduled to be published. + /// + ///See [ResourcePublicationV2](/api/admin-graphql/latest/objects/ResourcePublicationV2) for more context. + /// + public class ResourcePublication : GraphQLObject + { + /// + ///The channel the resource publication is published to. + /// + [Obsolete("Use `publication` instead.")] + public Channel? channel { get; set; } + /// + ///Whether the resource publication is published. Also returns true if the resource publication is scheduled to be published. + ///If false, then the resource publication is neither published nor scheduled to be published. + /// + public bool? isPublished { get; set; } + /// + ///The publication the resource publication is published to. + /// + public Publication? publication { get; set; } + /// + ///The date that the resource publication was or is going to be published to the publication. + ///If the product isn't published, then this field returns an epoch timestamp. + /// + public DateTime? publishDate { get; set; } + /// + ///The resource published to the publication. + /// + public IPublishable? publishable { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ResourcePublications. + /// + public class ResourcePublicationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ResourcePublicationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ResourcePublication and a cursor during pagination. + /// + public class ResourcePublicationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ResourcePublicationEdge. + /// + public ResourcePublication? node { get; set; } + } + + /// + ///A resource publication represents information about the publication of a resource. + ///Unlike `ResourcePublication`, an instance of `ResourcePublicationV2` can't be unpublished. It must either be published or scheduled to be published. + /// + ///See [ResourcePublication](/api/admin-graphql/latest/objects/ResourcePublication) for more context. + /// + public class ResourcePublicationV2 : GraphQLObject + { + /// + ///Whether the resource publication is published. If true, then the resource publication is published to the publication. + ///If false, then the resource publication is staged to be published to the publication. + /// + public bool? isPublished { get; set; } + /// + ///The publication the resource publication is published to. + /// + public Publication? publication { get; set; } + /// + ///The date that the resource publication was or is going to be published to the publication. + /// + public DateTime? publishDate { get; set; } + /// + ///The resource published to the publication. + /// + public IPublishable? publishable { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ResourcePublicationV2s. + /// + public class ResourcePublicationV2Connection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ResourcePublicationV2Edge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ResourcePublicationV2 and a cursor during pagination. + /// + public class ResourcePublicationV2Edge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ResourcePublicationV2Edge. + /// + public ResourcePublicationV2? node { get; set; } + } + + /// + ///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 decimal? percentage { get; set; } + } + + /// + ///Information about product is restricted for a given resource. + /// + public class RestrictedForResource : GraphQLObject + { + /// + ///Returns true when the product is restricted for the given resource. + /// + public bool? restricted { get; set; } + /// + ///Restriction reason for the given resource. + /// + public string? restrictedReason { get; set; } + } + + /// + ///Represents a return. + /// + public class Return : GraphQLObject, INode + { + /// + ///Additional information about the declined return. + /// + 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; } + /// + ///The name of the return. + /// + public string? name { get; set; } + /// + ///The order that the return belongs to. + /// + public Order? order { get; set; } + /// + ///The list of refunds associated with the return. + /// + public RefundConnection? refunds { get; set; } + /// + ///The return line items attached to the return. + /// + public ReturnLineItemTypeConnection? 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; } + /// + ///The status of the return. + /// + public string? status { get; set; } + /// + ///A suggested refund for the return. + /// + public SuggestedReturnRefund? suggestedRefund { get; set; } + /// + ///The sum of all return line item quantities for the return. + /// + 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 string? 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. + /// + public class ReturnApproveRequestPayload : GraphQLObject + { + /// + ///The approved return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `returnCancel` mutation. + /// + public class ReturnCancelPayload : GraphQLObject + { + /// + ///The canceled return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `returnClose` mutation. + /// + public class ReturnClosePayload : GraphQLObject + { + /// + ///The closed return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Returns. + /// + public class ReturnConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReturnEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `returnCreate` mutation. + /// + public class ReturnCreatePayload : GraphQLObject + { + /// + ///The created return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Additional information about why a merchant declined the customer's return request. + /// + public class ReturnDecline : GraphQLObject + { + /// + ///The notification message sent to the customer about their declined return request. + ///Maximum length: 500 characters. + /// + public string? note { get; set; } + /// + ///The reason the customer's return request was declined. + /// + public string? reason { get; set; } + } + + /// + ///The reason why the merchant declined a customer's return request. + /// + public enum ReturnDeclineReason + { + /// + ///The return period has ended. + /// + RETURN_PERIOD_ENDED, + /// + ///The return contains final sale items. + /// + FINAL_SALE, + /// + ///The return is declined for another reason. + /// + OTHER, + } + + /// + ///Return type for `returnDeclineRequest` mutation. + /// + public class ReturnDeclineRequestPayload : GraphQLObject + { + /// + ///The declined return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Return and a cursor during pagination. + /// + public class ReturnEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReturnEdge. + /// + public Return? node { get; set; } + } + + /// + ///Possible error codes that can be returned by `ReturnUserError`. + /// + public enum ReturnErrorCode + { + /// + ///Unexpected internal error happened. + /// + INTERNAL_ERROR, + /// + ///Too many arguments provided. + /// + TOO_MANY_ARGUMENTS, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value should be equal to the value allowed. + /// + EQUAL_TO, + /// + ///The input value should be greater than the minimum allowed value. + /// + GREATER_THAN, + /// + ///The input value should be greater than or equal to the minimum value allowed. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value should be less than the maximum value allowed. + /// + LESS_THAN, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///The input value is not a number. + /// + NOT_A_NUMBER, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too big. + /// + TOO_BIG, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is the wrong length. + /// + WRONG_LENGTH, + /// + ///The requested resource already exists. + /// + ALREADY_EXISTS, + /// + ///A requested resource could not be created. + /// + CREATION_FAILED, + /// + ///A required feature is not enabled. + /// + FEATURE_NOT_ENABLED, + /// + ///A resource was not in the correct state for the operation to succeed. + /// + INVALID_STATE, + /// + ///A requested notification could not be sent. + /// + NOTIFICATION_FAILED, + /// + ///A requested item is not editable. + /// + NOT_EDITABLE, + /// + ///A requested item could not be found. + /// + NOT_FOUND, + } + + /// + ///A return line item. + /// + public class ReturnLineItem : GraphQLObject, INode, IReturnLineItemType + { + /// + ///A note from the customer that describes the item to be returned. Maximum length: 300 characters. + /// + public string? customerNote { get; set; } + /// + ///The fulfillment line item from which items are returned. + /// + public FulfillmentLineItem? fulfillmentLineItem { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The quantity being returned. + /// + public int? quantity { get; set; } + /// + ///The quantity that can be refunded. + /// + public int? refundableQuantity { get; set; } + /// + ///The quantity that was refunded. + /// + 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 string? returnReason { get; set; } + /// + ///Additional information about the reason for the return. Maximum length: 255 characters. + /// + public string? returnReasonNote { get; set; } + /// + ///The total weight of the item. + /// + public Weight? totalWeight { get; set; } + /// + ///The total line price after all discounts on the line item, including both line item level discounts and code-based line item discounts, are applied. + /// + public MoneyBag? withCodeDiscountedTotalPriceSet { get; set; } + } + + /// + ///Return type for `returnLineItemRemoveFromReturn` mutation. + /// + public class ReturnLineItemRemoveFromReturnPayload : GraphQLObject + { + /// + ///The modified return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A return line item of any type. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ReturnLineItem), typeDiscriminator: "ReturnLineItem")] + [JsonDerivedType(typeof(UnverifiedReturnLineItem), typeDiscriminator: "UnverifiedReturnLineItem")] + public interface IReturnLineItemType : IGraphQLObject, INode + { + /// + ///A note from the customer that describes the item to be returned. Maximum length: 300 characters. + /// + public string? customerNote { get; } + /// + ///The quantity being returned. + /// + public int? quantity { get; } + /// + ///The quantity that can be refunded. + /// + public int? refundableQuantity { get; } + /// + ///The quantity that was refunded. + /// + public int? refundedQuantity { get; } + /// + ///The reason for returning the item. + /// + public string? returnReason { get; } + /// + ///Additional information about the reason for the return. Maximum length: 255 characters. + /// + public string? returnReasonNote { get; } + } + + /// + ///An auto-generated type for paginating through multiple ReturnLineItemTypes. + /// + public class ReturnLineItemTypeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReturnLineItemTypeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ReturnLineItemType and a cursor during pagination. + /// + public class ReturnLineItemTypeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReturnLineItemTypeEdge. + /// + public IReturnLineItemType? node { get; set; } + } + + /// + ///The reason for returning the return line item. + /// + public enum ReturnReason + { + /// + ///The item is returned because the size was too small. + /// + SIZE_TOO_SMALL, + /// + ///The item is returned because the size was too large. + /// + SIZE_TOO_LARGE, + /// + ///The item is returned because the customer changed their mind. + /// + UNWANTED, + /// + ///The item is returned because it was not as described. + /// + NOT_AS_DESCRIBED, + /// + ///The item is returned because the customer received the wrong one. + /// + WRONG_ITEM, + /// + ///The item is returned because it is damaged or defective. + /// + DEFECTIVE, + /// + ///The item is returned because the buyer did not like the style. + /// + STYLE, + /// + ///The item is returned because the buyer did not like the color. + /// + COLOR, + /// + ///The item is returned for another reason. For this value, a return reason note is also provided. + /// + OTHER, + /// + ///The item is returned because of an unknown reason. + /// + UNKNOWN, + } + + /// + ///Return type for `returnRefund` mutation. + /// + public class ReturnRefundPayload : GraphQLObject + { + /// + ///The created refund. + /// + public Refund? refund { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `returnReopen` mutation. + /// + public class ReturnReopenPayload : GraphQLObject + { + /// + ///The reopened return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `returnRequest` mutation. + /// + public class ReturnRequestPayload : GraphQLObject + { + /// + ///The requested return. + /// + public Return? @return { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + 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. + /// + public enum ReturnStatus + { + /// + ///The return has been canceled. + /// + CANCELED, + /// + ///The return has been completed. + /// + CLOSED, + /// + ///The return is in progress. + /// + OPEN, + /// + ///The return was requested. + /// + REQUESTED, + /// + ///The return was declined. + /// + DECLINED, + } + + /// + ///An error that occurs during the execution of a return mutation. + /// + public class ReturnUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///A returnable fulfillment, which is an order that has been delivered + ///and is eligible to be returned to the merchant. + /// + public class ReturnableFulfillment : GraphQLObject, INode + { + /// + ///The fulfillment that the returnable fulfillment refers to. + /// + public Fulfillment? fulfillment { get; set; } + /// + ///The unique ID of the Returnable Fulfillment. + /// + public string? id { get; set; } + /// + ///The list of returnable fulfillment line items. + /// + public ReturnableFulfillmentLineItemConnection? returnableFulfillmentLineItems { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReturnableFulfillments. + /// + public class ReturnableFulfillmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReturnableFulfillmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ReturnableFulfillment and a cursor during pagination. + /// + public class ReturnableFulfillmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReturnableFulfillmentEdge. + /// + public ReturnableFulfillment? node { get; set; } + } + + /// + ///A returnable fulfillment line item. + /// + public class ReturnableFulfillmentLineItem : GraphQLObject + { + /// + ///The fulfillment line item that can be returned. + /// + public FulfillmentLineItem? fulfillmentLineItem { get; set; } + /// + ///The quantity available to be returned. + /// + public int? quantity { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReturnableFulfillmentLineItems. + /// + public class ReturnableFulfillmentLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReturnableFulfillmentLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ReturnableFulfillmentLineItem and a cursor during pagination. + /// + public class ReturnableFulfillmentLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReturnableFulfillmentLineItemEdge. + /// + public ReturnableFulfillmentLineItem? node { get; set; } + } + + /// + ///A reverse delivery is a post-fulfillment object that represents a buyer sending a package to a merchant. + ///For example, a buyer requests a return, and a merchant sends the buyer a shipping label. + ///The reverse delivery contains the context of the items sent back, how they're being sent back + ///(for example, a shipping label), and the current state of the delivery (tracking information). + /// + public class ReverseDelivery : GraphQLObject, INode + { + /// + ///The deliverable associated with the reverse delivery. + /// + public IReverseDeliveryDeliverable? deliverable { get; set; } + /// + ///The ID of the reverse delivery. + /// + public string? id { get; set; } + /// + ///The reverse delivery line items attached to the reverse delivery. + /// + public ReverseDeliveryLineItemConnection? reverseDeliveryLineItems { get; set; } + /// + ///The `ReverseFulfillmentOrder` associated with the reverse delivery. + /// + public ReverseFulfillmentOrder? reverseFulfillmentOrder { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReverseDeliveries. + /// + public class ReverseDeliveryConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReverseDeliveryEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `reverseDeliveryCreateWithShipping` mutation. + /// + public class ReverseDeliveryCreateWithShippingPayload : GraphQLObject + { + /// + ///The created reverse delivery. + /// + public ReverseDelivery? reverseDelivery { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The delivery method and artifacts associated with a reverse delivery. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ReverseDeliveryShippingDeliverable), typeDiscriminator: "ReverseDeliveryShippingDeliverable")] + public interface IReverseDeliveryDeliverable : IGraphQLObject + { + public ReverseDeliveryShippingDeliverable? AsReverseDeliveryShippingDeliverable() => this as ReverseDeliveryShippingDeliverable; + /// + ///The return label attached to the reverse delivery. + /// + public ReverseDeliveryLabelV2? label { get; set; } + /// + ///The information to track the reverse delivery. + /// + public ReverseDeliveryTrackingV2? tracking { get; set; } + } + + /// + ///An auto-generated type which holds one ReverseDelivery and a cursor during pagination. + /// + public class ReverseDeliveryEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReverseDeliveryEdge. + /// + public ReverseDelivery? node { get; set; } + } + + /// + ///The return label file information for a reverse delivery. + /// + public class ReverseDeliveryLabelV2 : GraphQLObject + { + /// + ///The date and time when the reverse delivery label was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A public link that can be used to download the label image. + /// + public string? publicFileUrl { get; set; } + /// + ///The date and time when the reverse delivery label was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///The details about a reverse delivery line item. + /// + public class ReverseDeliveryLineItem : GraphQLObject, INode + { + /// + ///The dispositions of the item. + /// + public IEnumerable? dispositions { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The expected number of units. + /// + public int? quantity { get; set; } + /// + ///The corresponding reverse fulfillment order line item. + /// + public ReverseFulfillmentOrderLineItem? reverseFulfillmentOrderLineItem { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReverseDeliveryLineItems. + /// + public class ReverseDeliveryLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReverseDeliveryLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ReverseDeliveryLineItem and a cursor during pagination. + /// + public class ReverseDeliveryLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReverseDeliveryLineItemEdge. + /// + public ReverseDeliveryLineItem? node { get; set; } + } + + /// + ///A reverse shipping deliverable that may include a label and tracking information. + /// + public class ReverseDeliveryShippingDeliverable : GraphQLObject, IReverseDeliveryDeliverable + { + /// + ///The return label attached to the reverse delivery. + /// + public ReverseDeliveryLabelV2? label { get; set; } + /// + ///The information to track the reverse delivery. + /// + public ReverseDeliveryTrackingV2? tracking { get; set; } + } + + /// + ///Return type for `reverseDeliveryShippingUpdate` mutation. + /// + public class ReverseDeliveryShippingUpdatePayload : GraphQLObject + { + /// + ///The updated reverse delivery. + /// + public ReverseDelivery? reverseDelivery { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents the information used to track a reverse delivery. + /// + public class ReverseDeliveryTrackingV2 : GraphQLObject + { + /// + ///The provider of the tracking information, in a human-readable format for display purposes. + /// + public string? carrierName { get; set; } + /// + ///The identifier used by the courier to identify the shipment. + /// + public string? number { get; set; } + /// + ///The URL to track a shipment. + /// + public string? url { get; set; } + } + + /// + ///A group of one or more items in a return that will be processed at a fulfillment service. + ///There can be more than one reverse fulfillment order for a return at a given location. + /// + public class ReverseFulfillmentOrder : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The list of reverse fulfillment order line items for the reverse fulfillment order. + /// + public ReverseFulfillmentOrderLineItemConnection? lineItems { get; set; } + /// + ///The order associated with the reverse fulfillment order. + /// + public Order? order { get; set; } + /// + ///The list of reverse deliveries for the reverse fulfillment order. + /// + public ReverseDeliveryConnection? reverseDeliveries { get; set; } + /// + ///The status of the reverse fulfillment order. + /// + public string? status { get; set; } + /// + ///The current confirmation for the reverse fulfillment order from a third-party logistics service. + ///If no third-party service is involved, then this value is `nil`. + /// + public ReverseFulfillmentOrderThirdPartyConfirmation? thirdPartyConfirmation { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReverseFulfillmentOrders. + /// + public class ReverseFulfillmentOrderConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReverseFulfillmentOrderEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `reverseFulfillmentOrderDispose` mutation. + /// + public class ReverseFulfillmentOrderDisposePayload : GraphQLObject + { + /// + ///The disposed reverse fulfillment order line items. + /// + public IEnumerable? reverseFulfillmentOrderLineItems { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The details of the arrangement of an item. + /// + public class ReverseFulfillmentOrderDisposition : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The location where the disposition occurred. + /// + public Location? location { get; set; } + /// + ///The number of disposed units. + /// + public int? quantity { get; set; } + /// + ///The final arrangement of an item. + /// + public string? type { get; set; } + } + + /// + ///The final arrangement of an item from a reverse fulfillment order. + /// + public enum ReverseFulfillmentOrderDispositionType + { + /// + ///An item that was restocked. + /// + RESTOCKED, + /// + ///An item that requires further processing before being restocked or discarded. + /// + PROCESSING_REQUIRED, + /// + ///An item that wasn't restocked. + /// + NOT_RESTOCKED, + /// + ///An item that was expected but absent. + /// + MISSING, + } + + /// + ///An auto-generated type which holds one ReverseFulfillmentOrder and a cursor during pagination. + /// + public class ReverseFulfillmentOrderEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReverseFulfillmentOrderEdge. + /// + public ReverseFulfillmentOrder? node { get; set; } + } + + /// + ///The details about a reverse fulfillment order line item. + /// + public class ReverseFulfillmentOrderLineItem : GraphQLObject, INode + { + /// + ///The dispositions of the item. + /// + public IEnumerable? dispositions { get; set; } + /// + ///The corresponding fulfillment line item for a reverse fulfillment order line item. + /// + public FulfillmentLineItem? fulfillmentLineItem { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The total number of units to be processed. + /// + public int? totalQuantity { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ReverseFulfillmentOrderLineItems. + /// + public class ReverseFulfillmentOrderLineItemConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ReverseFulfillmentOrderLineItemEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ReverseFulfillmentOrderLineItem and a cursor during pagination. + /// + public class ReverseFulfillmentOrderLineItemEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ReverseFulfillmentOrderLineItemEdge. + /// + public ReverseFulfillmentOrderLineItem? node { get; set; } + } + + /// + ///The status of a reverse fulfillment order. + /// + public enum ReverseFulfillmentOrderStatus + { + /// + ///The reverse fulfillment order has been canceled. + /// + CANCELED, + /// + ///The reverse fulfillment order has been completed. + /// + CLOSED, + /// + ///The reverse fulfillment order is in progress. + /// + OPEN, + } + + /// + ///The third-party confirmation of a reverse fulfillment order. + /// + public class ReverseFulfillmentOrderThirdPartyConfirmation : GraphQLObject + { + /// + ///The status of the reverse fulfillment order third-party confirmation. + /// + public string? status { get; set; } + } + + /// + ///The status of a reverse fulfillment order third-party confirmation. + /// + public enum ReverseFulfillmentOrderThirdPartyConfirmationStatus + { + /// + ///The reverse fulfillment order was accepted by the fulfillment service. + /// + ACCEPTED, + /// + ///The reverse fulfillment order cancelation was accepted by the fulfillment service. + /// + CANCEL_ACCEPTED, + /// + ///The reverse fulfillment order cancelation was rejected by the fulfillment service. + /// + CANCEL_REJECTED, + /// + ///The reverse fulfillment order is awaiting acceptance by the fulfillment service. + /// + PENDING_ACCEPTANCE, + /// + ///The reverse fulfillment order is awaiting cancelation by the fulfillment service. + /// + PENDING_CANCELATION, + /// + ///The reverse fulfillment order was rejected by the fulfillment service. + /// + 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 string? 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. + /// + public class RowCount : GraphQLObject + { + /// + ///Estimated number of rows contained within this background operation. + /// + public int? count { get; set; } + /// + ///Whether the operation exceeds max number of reportable rows. + /// + public bool? exceedsMax { get; set; } + } + + /// + ///SEO information. + /// + public class SEO : GraphQLObject + { + /// + ///SEO Description. + /// + public string? description { get; set; } + /// + ///SEO Title. + /// + public string? title { get; set; } + } + + /// + ///An individual sale record associated with a sales agreement. Every money value in an order's sales data is represented in the currency's smallest unit. When amounts are divided across multiple line items, such as taxes or order discounts, the amounts might not divide evenly across all of the line items on the order. To address this, the remaining currency units that couldn't be divided evenly are allocated one at a time, starting with the first line item, until they are all accounted for. In aggregate, the values sum up correctly. In isolation, one line item might have a different tax or discount amount than another line item of the same price, before taxes and discounts. This is because the amount could not be divided evenly across the items. The allocation of currency units across line items is immutable. After they are allocated, currency units are never reallocated or redistributed among the line items. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [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")] + [JsonDerivedType(typeof(TipSale), typeDiscriminator: "TipSale")] + [JsonDerivedType(typeof(UnknownSale), typeDiscriminator: "UnknownSale")] + 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; + public TipSale? AsTipSale() => this as TipSale; + public UnknownSale? AsUnknownSale() => this as UnknownSale; + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; } + /// + ///The unique ID for the sale. + /// + public string? id { get; } + /// + ///The line type assocated with the sale. + /// + public string? lineType { get; } + /// + ///The number of units either ordered or intended to be returned. + /// + public int? quantity { get; } + /// + ///All individual taxes associated with the sale. + /// + public IEnumerable? taxes { get; } + /// + ///The total sale amount after taxes and discounts. + /// + public MoneyBag? totalAmount { get; } + /// + ///The total discounts allocated to the sale after taxes. + /// + public MoneyBag? totalDiscountAmountAfterTaxes { get; } + /// + ///The total discounts allocated to the sale before taxes. + /// + public MoneyBag? totalDiscountAmountBeforeTaxes { get; } + /// + ///The total amount of taxes for the sale. + /// + public MoneyBag? totalTaxAmount { get; } + } + + /// + ///The possible order action types for a sale. + /// + public enum SaleActionType + { + /// + ///A purchase or charge. + /// + ORDER, + /// + ///A removal or return. + /// + RETURN, + /// + ///A change to the price, taxes, or discounts for a prior purchase. + /// + UPDATE, + /// + ///An unknown order action. Represents new actions that may be added in future versions. + /// + UNKNOWN, + } + + /// + ///The additional fee details for a line item. + /// + public class SaleAdditionalFee : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The name of the additional fee. + /// + public string? name { get; set; } + /// + ///The price of the additional fee. + /// + public MoneyBag? price { get; set; } + /// + ///A list of taxes charged on the additional fee. + /// + public IEnumerable? taxLines { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Sales. + /// + public class SaleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SaleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one Sale and a cursor during pagination. + /// + public class SaleEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SaleEdge. + /// + public ISale? node { get; set; } + } + + /// + ///The possible line types for a sale record. One of the possible order line types for a sale is an adjustment. Sales adjustments occur when a refund is issued for a line item that is either more or less than the total value of the line item. Examples are restocking fees and goodwill payments. When this happens, Shopify produces a sales agreement with sale records for each line item that is returned or refunded and an additional sale record for the adjustment (for example, a restocking fee). The sales records for the returned or refunded items represent the reversal of the original line item sale value. The additional adjustment sale record represents the difference between the original total value of all line items that were refunded, and the actual amount refunded. + /// + public enum SaleLineType + { + /// + ///A product purchased, returned or exchanged. + /// + PRODUCT, + /// + ///A tip added by the customer. + /// + TIP, + /// + ///A gift card. + /// + GIFT_CARD, + /// + ///A shipping cost. + /// + SHIPPING, + /// + ///A duty charge. + /// + DUTY, + /// + ///An additional fee. + /// + ADDITIONAL_FEE, + /// + ///A fee charge. + /// + FEE, + /// + ///An unknown sale line. Represents new types that may be added in future versions. + /// + UNKNOWN, + /// + ///A sale adjustment. + /// + ADJUSTMENT, + } + + /// + ///The tax allocated to a sale from a single tax line. + /// + public class SaleTax : GraphQLObject + { + /// + ///The portion of the total tax amount on the related sale that comes from the associated tax line. + /// + public MoneyBag? amount { get; set; } + /// + ///The unique ID for the sale tax. + /// + public string? id { get; set; } + /// + ///The tax line associated with the sale. + /// + public TaxLine? taxLine { get; set; } + } + + /// + ///A contract between a merchant and a customer to do business. Shopify creates a sales agreement whenever an order is placed, edited, or refunded. A sales agreement has one or more sales records, which provide itemized details about the initial agreement or subsequent changes made to the order. For example, when a customer places an order, Shopify creates the order, generates a sales agreement, and records a sale for each line item purchased in the order. A sale record is specific to a type of order line. Order lines can represent different things such as a purchased product, a tip added by a customer, shipping costs collected at checkout, and more. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [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. + /// + public App? app { get; } + /// + ///The date and time at which the agreement occured. + /// + public DateTime? happenedAt { get; } + /// + ///The unique ID for the agreement. + /// + public string? id { get; } + /// + ///The reason the agremeent was created. + /// + public string? reason { get; } + /// + ///The sales associated with the agreement. + /// + public SaleConnection? sales { get; } + /// + ///The staff member associated with the agreement. + /// + public StaffMember? user { get; } + } + + /// + ///An auto-generated type for paginating through multiple SalesAgreements. + /// + public class SalesAgreementConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SalesAgreementEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SalesAgreement and a cursor during pagination. + /// + public class SalesAgreementEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SalesAgreementEdge. + /// + public ISalesAgreement? node { get; set; } + } + + /// + ///A saved search is a representation of a search query saved in the admin. + /// + public class SavedSearch : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The filters of a saved search. + /// + public IEnumerable? filters { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The name of a saved search. + /// + public string? name { get; set; } + /// + ///The query string of a saved search. This includes search terms and filters. + /// + public string? query { get; set; } + /// + ///The type of resource this saved search is searching in. + /// + public string? resourceType { get; set; } + /// + ///The search terms of a saved search. + /// + public string? searchTerms { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SavedSearches. + /// + public class SavedSearchConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SavedSearchEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `savedSearchCreate` mutation. + /// + public class SavedSearchCreatePayload : GraphQLObject + { + /// + ///The saved search that was created. + /// + public SavedSearch? savedSearch { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `savedSearchDelete` mutation. + /// + public class SavedSearchDeletePayload : GraphQLObject + { + /// + ///The ID of the saved search that was deleted. + /// + public string? deletedSavedSearchId { get; set; } + /// + ///The shop of the saved search that was deleted. + /// + public Shop? shop { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one SavedSearch and a cursor during pagination. + /// + public class SavedSearchEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SavedSearchEdge. + /// + public SavedSearch? node { get; set; } + } + + /// + ///Return type for `savedSearchUpdate` mutation. + /// + public class SavedSearchUpdatePayload : GraphQLObject + { + /// + ///The saved search that was updated. + /// + public SavedSearch? savedSearch { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the ScheduledChange query. + /// + public enum ScheduledChangeSortKeys + { + /// + ///Sort by the `expected_at` value. + /// + EXPECTED_AT, + /// + ///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, + } + + /// + ///Script discount applications capture the intentions of a discount that + ///was created by a Shopify Script for an order's line item or shipping line. + /// + ///Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object. + /// + public class ScriptDiscountApplication : GraphQLObject, IDiscountApplication + { + /// + ///The method by which the discount's value is applied to its entitled items. + /// + public string? allocationMethod { get; set; } + + /// + ///The description of the application as defined by the Script. + /// + [Obsolete("Use `title` instead.")] + public string? description { get; set; } + /// + ///An ordered index that can be used to identify the discount application and indicate the precedence + ///of the discount application for calculations. + /// + public int? index { get; set; } + /// + ///How the discount amount is distributed on the discounted lines. + /// + public string? targetSelection { get; set; } + /// + ///Whether the discount is applied on line items or shipping lines. + /// + public string? targetType { get; set; } + /// + ///The title of the application as defined by the Script. + /// + public string? title { get; set; } + /// + ///The value of the discount application. + /// + public IPricingValue? value { get; set; } + } + + /// + ///

Theme app extensions

+ ///

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

+ /// + ///

Script tag deprecation

+ ///

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

+ /// + /// + ///A script tag represents remote JavaScript code that is loaded into the pages of a shop's storefront or the **Order status** page of checkout. + ///
+ public class ScriptTag : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///Whether the Shopify CDN can cache and serve the script tag. + ///If `true`, then the script will be cached and served by the CDN. + ///The cache expires 15 minutes after the script tag is successfully returned. + ///If `false`, then the script will be served as is. + /// + public bool? cache { get; set; } + /// + ///The date and time when the script tag was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The page or pages on the online store that the script should be included. + /// + public string? displayScope { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The URL to the remote script. + /// + public string? src { get; set; } + /// + ///The date and time when the script tag was last updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ScriptTags. + /// + public class ScriptTagConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ScriptTagEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `scriptTagCreate` mutation. + /// + public class ScriptTagCreatePayload : GraphQLObject + { + /// + ///The script tag that was created. + /// + public ScriptTag? scriptTag { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `scriptTagDelete` mutation. + /// + public class ScriptTagDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted script tag. + /// + public string? deletedScriptTagId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The page or pages on the online store where the script should be included. + /// + public enum ScriptTagDisplayScope + { + /// + ///Include the script on both the web storefront and the Order status page. + /// + ALL, + /// + ///Include the script only on the Order status page. + /// + ORDER_STATUS, + /// + ///Include the script only on the web storefront. + /// + ONLINE_STORE, + } + + /// + ///An auto-generated type which holds one ScriptTag and a cursor during pagination. + /// + public class ScriptTagEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ScriptTagEdge. + /// + public ScriptTag? node { get; set; } + } + + /// + ///Return type for `scriptTagUpdate` mutation. + /// + public class ScriptTagUpdatePayload : GraphQLObject + { + /// + ///The script tag that was updated. + /// + public ScriptTag? scriptTag { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A filter in a search query represented by a key value pair. + /// + public class SearchFilter : GraphQLObject + { + /// + ///The key of the search filter. + /// + public string? key { get; set; } + /// + ///The value of the search filter. + /// + public string? value { get; set; } + } + + /// + ///A list of search filters along with their specific options in value and label pair for filtering. + /// + public class SearchFilterOptions : GraphQLObject + { + /// + ///A list of options that can be use to filter product availability. + /// + public IEnumerable? productAvailability { get; set; } + } + + /// + ///Represents an individual result returned from a search. + /// + public class SearchResult : GraphQLObject + { + /// + ///Returns the search result description text. + /// + public string? description { get; set; } + /// + ///Returns the Image resource presented to accompany a search result. + /// + public Image? image { get; set; } + /// + ///Returns the ID of the resource returned in the search result. + /// + public INode? reference { get; set; } + /// + ///Returns the resource title. + /// + public string? title { get; set; } + /// + ///Returns the absolute URL to the resource in the search result. + /// + public string? url { get; set; } + } + + /// + ///The connection type for SearchResult. + /// + public class SearchResultConnection : GraphQLObject, IConnectionWithEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + [Obsolete("The provided information is not accurate.")] + public int? resultsAfterCount { get; set; } + } + + /// + ///An auto-generated type which holds one SearchResult and a cursor during pagination. + /// + public class SearchResultEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SearchResultEdge. + /// + public SearchResult? node { get; set; } + } + + /// + ///Specifies the type of resources to be returned from a search. + /// + public enum SearchResultType + { + CUSTOMER, + DRAFT_ORDER, + PRODUCT, + COLLECTION, + /// + ///A file. + /// + FILE, + /// + ///A page. + /// + PAGE, + /// + ///A blog. + /// + BLOG, + /// + ///An article. + /// + ARTICLE, + /// + ///A URL redirect. + /// + URL_REDIRECT, + PRICE_RULE, + /// + ///A code discount redeem code. + /// + DISCOUNT_REDEEM_CODE, + ORDER, + /// + ///A balance transaction. + /// + BALANCE_TRANSACTION, + } + + /// + ///A dynamic collection of customers based on specific criteria. + /// + public class Segment : GraphQLObject, INode + { + /// + ///The date and time when the segment was added to the store. + /// + public DateTime? creationDate { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The date and time when the segment was last updated. + /// + public DateTime? lastEditDate { get; set; } + /// + ///The name of the segment. + /// + public string? name { get; set; } + /// + ///A precise definition of the segment. The definition is composed of a combination of conditions on facts about customers. + /// + public string? query { get; set; } + } + + /// + ///A filter that takes a value that's associated with an object. For example, the `tags` field is associated with the [`Customer`](/api/admin-graphql/latest/objects/Customer) object. + /// + public class SegmentAssociationFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///The statistics of a given attribute. + /// + public class SegmentAttributeStatistics : GraphQLObject + { + /// + ///The average of a given attribute. + /// + public decimal? average { get; set; } + /// + ///The sum of a given attribute. + /// + public decimal? sum { get; set; } + } + + /// + ///A filter with a Boolean value that's been added to a segment query. + /// + public class SegmentBooleanFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Segments. + /// + public class SegmentConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SegmentEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `segmentCreate` mutation. + /// + public class SegmentCreatePayload : GraphQLObject + { + /// + ///The newly created segment. + /// + public Segment? segment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A filter with a date value that's been added to a segment query. + /// + public class SegmentDateFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///Return type for `segmentDelete` mutation. + /// + public class SegmentDeletePayload : GraphQLObject + { + /// + ///ID of the deleted segment. + /// + public string? deletedSegmentId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Segment and a cursor during pagination. + /// + public class SegmentEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SegmentEdge. + /// + public Segment? node { get; set; } + } + + /// + ///A filter with a set of possible values that's been added to a segment query. + /// + public class SegmentEnumFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///A filter that's used to segment customers based on the date that an event occured. For example, the `product_bought` event filter allows you to segment customers based on what products they've bought. + /// + public class SegmentEventFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The parameters for an event segment filter. + /// + public IEnumerable? parameters { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + /// + ///The return value type for an event segment filter. + /// + public string? returnValueType { get; set; } + } + + /// + ///The parameters for an event segment filter. + /// + public class SegmentEventFilterParameter : GraphQLObject + { + /// + ///Whether the parameter accepts a list of values. + /// + public bool? acceptsMultipleValues { get; set; } + /// + ///The localized description of the parameter. + /// + public string? localizedDescription { get; set; } + /// + ///The localized name of the parameter. + /// + public string? localizedName { get; set; } + /// + ///Whether the parameter is optional. + /// + public bool? optional { get; set; } + /// + ///The type of the parameter. + /// + public string? parameterType { get; set; } + /// + ///The query name of the parameter. + /// + public string? queryName { get; set; } + } + + /// + ///The filters used in segment queries associated with a shop. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SegmentAssociationFilter), typeDiscriminator: "SegmentAssociationFilter")] + [JsonDerivedType(typeof(SegmentBooleanFilter), typeDiscriminator: "SegmentBooleanFilter")] + [JsonDerivedType(typeof(SegmentDateFilter), typeDiscriminator: "SegmentDateFilter")] + [JsonDerivedType(typeof(SegmentEnumFilter), typeDiscriminator: "SegmentEnumFilter")] + [JsonDerivedType(typeof(SegmentEventFilter), typeDiscriminator: "SegmentEventFilter")] + [JsonDerivedType(typeof(SegmentFloatFilter), typeDiscriminator: "SegmentFloatFilter")] + [JsonDerivedType(typeof(SegmentIntegerFilter), typeDiscriminator: "SegmentIntegerFilter")] + [JsonDerivedType(typeof(SegmentStringFilter), typeDiscriminator: "SegmentStringFilter")] + public interface ISegmentFilter : IGraphQLObject + { + public SegmentAssociationFilter? AsSegmentAssociationFilter() => this as SegmentAssociationFilter; + public SegmentBooleanFilter? AsSegmentBooleanFilter() => this as SegmentBooleanFilter; + public SegmentDateFilter? AsSegmentDateFilter() => this as SegmentDateFilter; + public SegmentEnumFilter? AsSegmentEnumFilter() => this as SegmentEnumFilter; + public SegmentEventFilter? AsSegmentEventFilter() => this as SegmentEventFilter; + public SegmentFloatFilter? AsSegmentFloatFilter() => this as SegmentFloatFilter; + public SegmentIntegerFilter? AsSegmentIntegerFilter() => this as SegmentIntegerFilter; + public SegmentStringFilter? AsSegmentStringFilter() => this as SegmentStringFilter; + /// + ///The localized name of the filter. + /// + public string? localizedName { get; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; } + /// + ///The query name of the filter. + /// + public string? queryName { get; } + } + + /// + ///An auto-generated type for paginating through multiple SegmentFilters. + /// + public class SegmentFilterConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SegmentFilterEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SegmentFilter and a cursor during pagination. + /// + public class SegmentFilterEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SegmentFilterEdge. + /// + public ISegmentFilter? node { get; set; } + } + + /// + ///A filter with a double-precision, floating-point value that's been added to a segment query. + /// + public class SegmentFloatFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///A filter with an integer that's been added to a segment query. + /// + public class SegmentIntegerFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///The response type for the `segmentMembership` object. + /// + public class SegmentMembership : GraphQLObject + { + /// + ///A Boolean that indicates whether or not the customer in the query is a member of the segment, which is identified using the `segmentId`. + /// + public bool? isMember { get; set; } + /// + ///A `segmentId` that's used for testing membership. + /// + public string? segmentId { get; set; } + } + + /// + ///A list of maps that contain `segmentId` IDs and `isMember` Booleans. The maps represent segment memberships. + /// + public class SegmentMembershipResponse : GraphQLObject + { + /// + ///The membership status for the given list of segments. + /// + public IEnumerable? memberships { get; set; } + } + + /// + ///A segment and its corresponding saved search. + ///For example, you can use `SegmentMigration` to retrieve the segment ID that corresponds to a saved search ID. + /// + public class SegmentMigration : GraphQLObject + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The ID of the saved search. + /// + public string? savedSearchId { get; set; } + /// + ///The ID of the segment. + /// + public string? segmentId { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SegmentMigrations. + /// + public class SegmentMigrationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SegmentMigrationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SegmentMigration and a cursor during pagination. + /// + public class SegmentMigrationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SegmentMigrationEdge. + /// + public SegmentMigration? node { get; set; } + } + + /// + ///The set of valid sort keys for the Segment query. + /// + public enum SegmentSortKeys + { + /// + ///Sort by the `creation_date` value. + /// + CREATION_DATE, + /// + ///Sort by the `last_edit_date` value. + /// + LAST_EDIT_DATE, + /// + ///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, + } + + /// + ///The statistics of a given segment. + /// + public class SegmentStatistics : GraphQLObject + { + /// + ///The statistics of a given attribute. + /// + public SegmentAttributeStatistics? attributeStatistics { get; set; } + } + + /// + ///A filter with a string that's been added to a segment query. + /// + public class SegmentStringFilter : GraphQLObject, ISegmentFilter + { + /// + ///The localized name of the filter. + /// + public string? localizedName { get; set; } + /// + ///Whether a file can have multiple values for a single customer. + /// + public bool? multiValue { get; set; } + /// + ///The query name of the filter. + /// + public string? queryName { get; set; } + } + + /// + ///Return type for `segmentUpdate` mutation. + /// + public class SegmentUpdatePayload : GraphQLObject + { + /// + ///The updated segment. + /// + public Segment? segment { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A list of suggested values associated with an individual segment. A + ///segment is a group of members, such as customers, that meet specific + ///criteria. + /// + public class SegmentValue : GraphQLObject + { + /// + ///The localized version of the value's name. This name is displayed to the merchant. + /// + public string? localizedValue { get; set; } + /// + ///The name of the query associated with the suggestion. + /// + public string? queryName { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SegmentValues. + /// + public class SegmentValueConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SegmentValueEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SegmentValue and a cursor during pagination. + /// + public class SegmentValueEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SegmentValueEdge. + /// + public SegmentValue? node { get; set; } + } + + /// + ///Properties used by customers to select a product variant. + ///Products can have multiple options, like different sizes or colors. + /// + public class SelectedOption : GraphQLObject + { + /// + ///The product option’s name. + /// + 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; } + } + + /// + ///Represents how a product can be sold and purchased. Selling plans and associated records (selling plan groups + ///and policies) are deleted 48 hours after a merchant uninstalls their subscriptions app. We recommend backing + ///up these records if you need to restore them later. + /// + ///For more information on selling plans, refer to + ///[*Creating and managing selling plans*](https://shopify.dev/docs/apps/selling-strategies/subscriptions/selling-plans). + /// + public class SellingPlan : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, IHasPublishedTranslations, INode + { + /// + ///A selling plan policy which describes the recurring billing details. + /// + public ISellingPlanBillingPolicy? billingPolicy { get; set; } + /// + ///The category used to classify the selling plan for reporting purposes. + /// + public string? category { get; set; } + /// + ///The date and time when the selling plan was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A selling plan policy which describes the delivery details. + /// + public ISellingPlanDeliveryPolicy? deliveryPolicy { get; set; } + /// + ///Buyer facing string which describes the selling plan commitment. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///When to reserve inventory for a selling plan. + /// + public SellingPlanInventoryPolicy? inventoryPolicy { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///A customer-facing description of the selling plan. + /// + ///If your store supports multiple currencies, then don't include country-specific pricing content, such as "Buy monthly, get 10$ CAD off". This field won't be converted to reflect different currencies. + /// + public string? name { get; set; } + /// + ///The values of all options available on the selling plan. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. + /// + public IEnumerable? options { get; set; } + /// + ///Relative position of the selling plan for display. A lower position will be displayed before a higher position. + /// + public int? position { get; set; } + /// + ///Selling plan pricing details. + /// + public IEnumerable? pricingPolicies { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + } + + /// + ///Specifies the date when delivery or fulfillment is completed by a merchant for a given time cycle. You can also + ///define a cutoff for which customers are eligible to enter this cycle and the desired behavior for customers who + ///start their subscription inside the cutoff period. + /// + ///Some example scenarios where anchors can be useful to implement advanced delivery behavior: + ///- A merchant starts fulfillment on a specific date every month. + ///- A merchant wants to bill the 1st of every quarter. + ///- A customer expects their delivery every Tuesday. + /// + ///For more details, see [About Selling Plans](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/selling-plans#anchors). + /// + public class SellingPlanAnchor : GraphQLObject + { + /// + ///The cutoff day for the anchor. Specifies a buffer period before the anchor date for orders to be included in a + ///delivery or fulfillment cycle. + /// + ///If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets + ///the days of the week according to ISO 8601, where 1 is Monday. + /// + ///If `type` is MONTHDAY, then the value must be between 1-31. + /// + ///If `type` is YEARDAY, then the value must be `null`. + /// + public int? cutoffDay { get; set; } + /// + ///The day of the anchor. + /// + ///If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets + ///the days of the week according to ISO 8601, where 1 is Monday. + /// + ///If `type` isn't WEEKDAY, then the value must be between 1-31. + /// + public int? day { get; set; } + /// + ///The month of the anchor. If type is different than YEARDAY, then the value must + ///be `null` or between 1-12. + /// + public int? month { get; set; } + /// + ///Represents the anchor type, it can be one one of WEEKDAY, MONTHDAY, YEARDAY. + /// + public string? type { get; set; } + } + + /// + ///Represents the anchor type. + /// + public enum SellingPlanAnchorType + { + /// + ///Which day of the week, between 1-7. + /// + WEEKDAY, + /// + ///Which day of the month, between 1-31. + /// + MONTHDAY, + /// + ///Which days of the month and year, month between 1-12, and day between 1-31. + /// + YEARDAY, + } + + /// + ///Represents the billing frequency associated to the selling plan (for example, bill every week, or bill every + ///three months). The selling plan billing policy and associated records (selling plan groups, selling plans, pricing + ///policies, and delivery policy) are deleted 48 hours after a merchant uninstalls their subscriptions app. + ///We recommend backing up these records if you need to restore them later. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SellingPlanFixedBillingPolicy), typeDiscriminator: "SellingPlanFixedBillingPolicy")] + [JsonDerivedType(typeof(SellingPlanRecurringBillingPolicy), typeDiscriminator: "SellingPlanRecurringBillingPolicy")] + public interface ISellingPlanBillingPolicy : IGraphQLObject + { + public SellingPlanFixedBillingPolicy? AsSellingPlanFixedBillingPolicy() => this as SellingPlanFixedBillingPolicy; + public SellingPlanRecurringBillingPolicy? AsSellingPlanRecurringBillingPolicy() => this as SellingPlanRecurringBillingPolicy; + } + + /// + ///The category of the selling plan. For the `OTHER` category, + /// you must fill out our [request form](https://docs.google.com/forms/d/e/1FAIpQLSeU18Xmw0Q61V8wdH-dfGafFqIBfRchQKUO8WAF3yJTvgyyZQ/viewform), + /// where we'll review your request for a new purchase option. + /// + public enum SellingPlanCategory + { + /// + ///The selling plan is for anything not in one of the other categories. + /// + OTHER, + /// + ///The selling plan is for pre-orders. + /// + PRE_ORDER, + /// + ///The selling plan is for subscriptions. + /// + SUBSCRIPTION, + /// + ///The selling plan is for try before you buy purchases. + /// + TRY_BEFORE_YOU_BUY, + } + + /// + ///The amount charged at checkout when the full amount isn't charged at checkout. + /// + public class SellingPlanCheckoutCharge : GraphQLObject + { + /// + ///The charge type for the checkout charge. + /// + public string? type { get; set; } + /// + ///The charge value for the checkout charge. + /// + public ISellingPlanCheckoutChargeValue? value { get; set; } + } + + /// + ///The percentage value of the price used for checkout charge. + /// + public class SellingPlanCheckoutChargePercentageValue : GraphQLObject, ISellingPlanCheckoutChargeValue + { + /// + ///The percentage value of the price used for checkout charge. + /// + public decimal? percentage { get; set; } + } + + /// + ///The checkout charge when the full amount isn't charged at checkout. + /// + public enum SellingPlanCheckoutChargeType + { + /// + ///The checkout charge is a percentage of the product or variant price. + /// + PERCENTAGE, + /// + ///The checkout charge is a fixed price amount. + /// + PRICE, + } + + /// + ///The portion of the price to be charged at checkout. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(MoneyV2), typeDiscriminator: "MoneyV2")] + [JsonDerivedType(typeof(SellingPlanCheckoutChargePercentageValue), typeDiscriminator: "SellingPlanCheckoutChargePercentageValue")] + public interface ISellingPlanCheckoutChargeValue : IGraphQLObject + { + public MoneyV2? AsMoneyV2() => this as MoneyV2; + public SellingPlanCheckoutChargePercentageValue? AsSellingPlanCheckoutChargePercentageValue() => this as SellingPlanCheckoutChargePercentageValue; + } + + /// + ///An auto-generated type for paginating through multiple SellingPlans. + /// + public class SellingPlanConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SellingPlanEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Represents the delivery frequency associated to the selling plan (for example, deliver every month, or deliver + ///every other week). The selling plan delivery policy and associated records (selling plan groups, selling plans, + ///pricing policies, and billing policy) are deleted 48 hours after a merchant uninstalls their subscriptions app. + ///We recommend backing up these records if you need to restore them later. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SellingPlanFixedDeliveryPolicy), typeDiscriminator: "SellingPlanFixedDeliveryPolicy")] + [JsonDerivedType(typeof(SellingPlanRecurringDeliveryPolicy), typeDiscriminator: "SellingPlanRecurringDeliveryPolicy")] + public interface ISellingPlanDeliveryPolicy : IGraphQLObject + { + public SellingPlanFixedDeliveryPolicy? AsSellingPlanFixedDeliveryPolicy() => this as SellingPlanFixedDeliveryPolicy; + public SellingPlanRecurringDeliveryPolicy? AsSellingPlanRecurringDeliveryPolicy() => this as SellingPlanRecurringDeliveryPolicy; + /// + ///The specific anchor dates upon which the delivery interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///A buffer period for orders to be included in next fulfillment anchor. + /// + public int? cutoff { get; set; } + /// + ///Whether the delivery policy is merchant or buyer-centric. + ///Buyer-centric delivery policies state the time when the buyer will receive the goods. + ///Merchant-centric delivery policies state the time when the fulfillment should be started. + ///Currently, only merchant-centric delivery policies are supported. + /// + public string? intent { get; set; } + /// + ///The fulfillment or delivery behavior of the first fulfillment when the order is placed before the anchor. The default value for this field is `ASAP`. + /// + public string? preAnchorBehavior { get; set; } + } + + /// + ///An auto-generated type which holds one SellingPlan and a cursor during pagination. + /// + public class SellingPlanEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SellingPlanEdge. + /// + public SellingPlan? node { get; set; } + } + + /// + ///The fixed selling plan billing policy defines how much of the price of the product will be billed to customer + ///at checkout. If there is an outstanding balance, it determines when it will be paid. + /// + public class SellingPlanFixedBillingPolicy : GraphQLObject, ISellingPlanBillingPolicy + { + /// + ///The checkout charge when the full amount isn't charged at checkout. + /// + public SellingPlanCheckoutCharge? checkoutCharge { get; set; } + /// + ///The exact time when to capture the full payment. + /// + public DateTime? remainingBalanceChargeExactTime { get; set; } + /// + ///The period after remaining_balance_charge_trigger, before capturing the full payment. Expressed as an ISO8601 duration. + /// + public string? remainingBalanceChargeTimeAfterCheckout { get; set; } + /// + ///When to capture payment for amount due. + /// + public string? remainingBalanceChargeTrigger { get; set; } + } + + /// + ///Represents a fixed selling plan delivery policy. + /// + public class SellingPlanFixedDeliveryPolicy : GraphQLObject, ISellingPlanDeliveryPolicy + { + /// + ///The specific anchor dates upon which the delivery interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///A buffer period for orders to be included in next fulfillment anchor. + /// + public int? cutoff { get; set; } + /// + ///The date and time when the fulfillment should trigger. + /// + public DateTime? fulfillmentExactTime { get; set; } + /// + ///What triggers the fulfillment. The value must be one of ANCHOR, ASAP, EXACT_TIME, or UNKNOWN. + /// + public string? fulfillmentTrigger { get; set; } + /// + ///Whether the delivery policy is merchant or buyer-centric. + ///Buyer-centric delivery policies state the time when the buyer will receive the goods. + ///Merchant-centric delivery policies state the time when the fulfillment should be started. + ///Currently, only merchant-centric delivery policies are supported. + /// + public string? intent { get; set; } + /// + ///The fulfillment or delivery behavior of the first fulfillment when the order is placed before the anchor. The default value for this field is `ASAP`. + /// + public string? preAnchorBehavior { get; set; } + } + + /// + ///Possible intentions of a Delivery Policy. + /// + public enum SellingPlanFixedDeliveryPolicyIntent + { + /// + ///A merchant-centric delivery policy. Mark this delivery policy to define when the merchant should start fulfillment. + /// + FULFILLMENT_BEGIN, + } + + /// + ///The fulfillment or delivery behavior of the first fulfillment when the orderis placed before the anchor. + /// + public enum SellingPlanFixedDeliveryPolicyPreAnchorBehavior + { + /// + ///Orders placed can be fulfilled / delivered immediately. Orders placed inside a cutoff can be fulfilled / delivered at the next anchor. + /// + ASAP, + /// + ///Orders placed can be fulfilled / delivered at the next anchor date. + ///Orders placed inside a cutoff will skip the next anchor and can be fulfilled / + ///delivered at the following anchor. + /// + NEXT, + } + + /// + ///Represents the pricing policy of a subscription or deferred purchase option selling plan. + ///The selling plan fixed pricing policy works with the billing and delivery policy + ///to determine the final price. Discounts are divided among fulfillments. + ///For example, a subscription with a $10 discount and two deliveries will have a $5 + ///discount applied to each delivery. + /// + public class SellingPlanFixedPricingPolicy : GraphQLObject, ISellingPlanPricingPolicyBase, ISellingPlanPricingPolicy + { + /// + ///The price adjustment type. + /// + public string? adjustmentType { get; set; } + /// + ///The price adjustment value. + /// + public ISellingPlanPricingPolicyAdjustmentValue? adjustmentValue { get; set; } + /// + ///The date and time when the fixed selling plan pricing policy was created. + /// + public DateTime? createdAt { get; set; } + } + + /// + ///Describes what triggers fulfillment. + /// + public enum SellingPlanFulfillmentTrigger + { + /// + ///Use the anchor values to calculate fulfillment date. + /// + ANCHOR, + /// + ///As soon as possible. + /// + ASAP, + /// + ///At an exact time defined by the fulfillment_exact_time field. + /// + EXACT_TIME, + /// + ///Unknown. Usually to be determined in the future. + /// + UNKNOWN, + } + + /// + ///Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups + ///and associated records (selling plans and policies) are deleted 48 hours after a merchant + ///uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later. + /// + public class SellingPlanGroup : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///The ID for app, exposed in Liquid and product JSON. + /// + public string? appId { get; set; } + /// + ///Whether the given product is directly associated to the selling plan group. + /// + public bool? appliesToProduct { get; set; } + /// + ///Whether the given product variant is directly associated to the selling plan group. + /// + public bool? appliesToProductVariant { get; set; } + /// + ///Whether any of the product variants of the given product are associated to the selling plan group. + /// + public bool? appliesToProductVariants { get; set; } + /// + ///The date and time when the selling plan group was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The merchant-facing description of the selling plan group. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The merchant-facing label of the selling plan group. + /// + public string? merchantCode { get; set; } + /// + ///The buyer-facing label of the selling plan group. + /// + public string? name { get; set; } + /// + ///The values of all options available on the selling plan group. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. + /// + public IEnumerable? options { get; set; } + /// + ///The relative position of the selling plan group for display. + /// + public int? position { get; set; } + /// + ///Product variants associated to the selling plan group. + /// + public ProductVariantConnection? productVariants { get; set; } + /// + ///A count of product variants associated to the selling plan group. + /// + 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; } + /// + ///A summary of the policies associated to the selling plan group. + /// + public string? summary { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + } + + /// + ///Return type for `sellingPlanGroupAddProductVariants` mutation. + /// + public class SellingPlanGroupAddProductVariantsPayload : GraphQLObject + { + /// + ///The updated selling plan group. + /// + public SellingPlanGroup? sellingPlanGroup { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `sellingPlanGroupAddProducts` mutation. + /// + public class SellingPlanGroupAddProductsPayload : GraphQLObject + { + /// + ///The updated selling plan group. + /// + public SellingPlanGroup? sellingPlanGroup { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SellingPlanGroups. + /// + public class SellingPlanGroupConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SellingPlanGroupEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `sellingPlanGroupCreate` mutation. + /// + public class SellingPlanGroupCreatePayload : GraphQLObject + { + /// + ///The created selling plan group object. + /// + public SellingPlanGroup? sellingPlanGroup { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `sellingPlanGroupDelete` mutation. + /// + public class SellingPlanGroupDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted selling plan group object. + /// + public string? deletedSellingPlanGroupId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one SellingPlanGroup and a cursor during pagination. + /// + public class SellingPlanGroupEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SellingPlanGroupEdge. + /// + public SellingPlanGroup? node { get; set; } + } + + /// + ///Return type for `sellingPlanGroupRemoveProductVariants` mutation. + /// + public class SellingPlanGroupRemoveProductVariantsPayload : GraphQLObject + { + /// + ///The removed product variant ids. + /// + public IEnumerable? removedProductVariantIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `sellingPlanGroupRemoveProducts` mutation. + /// + public class SellingPlanGroupRemoveProductsPayload : GraphQLObject + { + /// + ///The removed product ids. + /// + public IEnumerable? removedProductIds { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The set of valid sort keys for the SellingPlanGroup query. + /// + public enum SellingPlanGroupSortKeys + { + /// + ///Sort by the `name` value. + /// + NAME, + /// + ///Sort by the `updated_at` value. + /// + UPDATED_AT, + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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, + } + + /// + ///Return type for `sellingPlanGroupUpdate` mutation. + /// + public class SellingPlanGroupUpdatePayload : GraphQLObject + { + /// + ///The IDs of the deleted Subscription Plans. + /// + public IEnumerable? deletedSellingPlanIds { get; set; } + /// + ///The updated Selling Plan Group. + /// + public SellingPlanGroup? sellingPlanGroup { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a selling plan group custom error. + /// + public class SellingPlanGroupUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `SellingPlanGroupUserError`. + /// + public enum SellingPlanGroupUserErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value should be equal to the value allowed. + /// + EQUAL_TO, + /// + ///The input value should be greater than the minimum allowed value. + /// + GREATER_THAN, + /// + ///The input value should be greater than or equal to the minimum value allowed. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value should be less than the maximum value allowed. + /// + LESS_THAN, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///The input value is not a number. + /// + NOT_A_NUMBER, + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value is too big. + /// + TOO_BIG, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The input value is the wrong length. + /// + WRONG_LENGTH, + /// + ///Exceeded the selling plan limit (31). + /// + SELLING_PLAN_COUNT_UPPER_BOUND, + /// + ///Must include at least one selling plan. + /// + SELLING_PLAN_COUNT_LOWER_BOUND, + /// + ///Selling plan's billing policy max cycles must be greater than min cycles. + /// + SELLING_PLAN_MAX_CYCLES_MUST_BE_GREATER_THAN_MIN_CYCLES, + /// + ///Selling plan's billing and delivery policies anchors must be equal. + /// + SELLING_PLAN_BILLING_AND_DELIVERY_POLICY_ANCHORS_MUST_BE_EQUAL, + /// + ///Selling plan's billing cycle must be a multiple of delivery cycle. + /// + SELLING_PLAN_BILLING_CYCLE_MUST_BE_A_MULTIPLE_OF_DELIVERY_CYCLE, + /// + ///Selling plan's pricing policies must contain one fixed pricing policy. + /// + SELLING_PLAN_PRICING_POLICIES_MUST_CONTAIN_A_FIXED_PRICING_POLICY, + /// + ///Cannot define option2 on this selling plan as there's no label on the parent selling plan group. + /// + SELLING_PLAN_MISSING_OPTION2_LABEL_ON_PARENT_GROUP, + /// + ///Cannot define option3 on this selling plan as there's no label on the parent selling plan group. + /// + SELLING_PLAN_MISSING_OPTION3_LABEL_ON_PARENT_GROUP, + /// + ///Selling plan's option2 is required because option2 exists. + /// + SELLING_PLAN_OPTION2_REQUIRED_AS_DEFINED_ON_PARENT_GROUP, + /// + ///Selling plan's option3 is required because option3 exists. + /// + SELLING_PLAN_OPTION3_REQUIRED_AS_DEFINED_ON_PARENT_GROUP, + /// + ///Selling plans can't have more than 2 pricing policies. + /// + SELLING_PLAN_PRICING_POLICIES_LIMIT, + /// + ///The selling plan list provided contains 1 or more invalid IDs. + /// + RESOURCE_LIST_CONTAINS_INVALID_IDS, + /// + ///Product variant does not exist. + /// + PRODUCT_VARIANT_DOES_NOT_EXIST, + /// + ///Product does not exist. + /// + PRODUCT_DOES_NOT_EXIST, + /// + ///Selling plan group does not exist. + /// + GROUP_DOES_NOT_EXIST, + /// + ///Selling plan group could not be deleted. + /// + GROUP_COULD_NOT_BE_DELETED, + /// + ///Could not add the resource to the selling plan group. + /// + ERROR_ADDING_RESOURCE_TO_GROUP, + /// + ///Missing delivery policy. + /// + SELLING_PLAN_DELIVERY_POLICY_MISSING, + /// + ///Missing billing policy. + /// + SELLING_PLAN_BILLING_POLICY_MISSING, + /// + ///Selling plan does not exist. + /// + PLAN_DOES_NOT_EXIST, + /// + ///Selling plan ID must be specified to update. + /// + PLAN_ID_MUST_BE_SPECIFIED_TO_UPDATE, + /// + ///Only one billing policy type can be defined. + /// + ONLY_NEED_ONE_BILLING_POLICY_TYPE, + /// + ///Only one delivery policy type can be defined. + /// + ONLY_NEED_ONE_DELIVERY_POLICY_TYPE, + /// + ///Only one pricing policy type can be defined. + /// + ONLY_NEED_ONE_PRICING_POLICY_TYPE, + /// + ///Billing and delivery policy types must be the same. + /// + BILLING_AND_DELIVERY_POLICY_TYPES_MUST_BE_THE_SAME, + /// + ///Only one pricing policy adjustment value type can be defined. + /// + ONLY_NEED_ONE_PRICING_POLICY_VALUE, + /// + ///Pricing policy's adjustment value and adjustment type must match. + /// + PRICING_POLICY_ADJUSTMENT_VALUE_AND_TYPE_MUST_MATCH, + /// + ///Cannot have multiple selling plans with the same name. + /// + SELLING_PLAN_DUPLICATE_NAME, + /// + ///Cannot have multiple selling plans with the same options. + /// + SELLING_PLAN_DUPLICATE_OPTIONS, + /// + ///A fixed selling plan can have at most one pricing policy. + /// + SELLING_PLAN_FIXED_PRICING_POLICIES_LIMIT, + /// + ///A fixed billing policy's remaining_balance_charge_exact_time can't be blank when the remaining_balance_charge_trigger is EXACT_TIME. + /// + REMAINING_BALANCE_CHARGE_EXACT_TIME_REQUIRED, + /// + ///A fixed billing policy's checkout charge value and type must match. + /// + CHECKOUT_CHARGE_VALUE_AND_TYPE_MUST_MATCH, + /// + ///A fixed billing policy's checkout charge can have at most one value. + /// + ONLY_NEED_ONE_CHECKOUT_CHARGE_VALUE, + /// + ///A fixed billing policy's remaining_balance_charge_exact_time must not be present when the remaining_balance_charge_trigger isn't EXACT_TIME. + /// + REMAINING_BALANCE_CHARGE_EXACT_TIME_NOT_ALLOWED, + /// + ///A fixed billing policy's remaining_balance_charge_time_after_checkout must be present and greater than zero when the remaining_balance_charge_trigger is TIME_AFTER_CHECKOUT. + /// + REMAINING_BALANCE_CHARGE_TIME_AFTER_CHECKOUT_MUST_BE_GREATER_THAN_ZERO, + /// + ///A fixed billing policy's remaining_balance_charge_trigger must be NO_REMAINING_BALANCE when the checkout_charge_type is PERCENTAGE and checkout_charge_value is 100. + /// + REMAINING_BALANCE_CHARGE_TRIGGER_ON_FULL_CHECKOUT, + /// + ///A fixed billing policy's remaining_balance_charge_trigger can't be NO_REMAINING_BALANCE when the checkout_charge_type is PERCENTAGE and checkout_charge_value is less than 100. + /// + REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PARTIAL_PERCENTAGE_CHECKOUT_CHARGE, + /// + ///A fixed billing policy's remaining_balance_charge_trigger can't be NO_REMAINING_BALANCE when the checkout_charge_type is PRICE. + /// + REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PRICE_CHECKOUT_CHARGE, + /// + ///A fixed billing policy's fulfillment_exact_time can't be blank when the fulfillment_trigger is EXACT_TIME. + /// + FULFILLMENT_EXACT_TIME_REQUIRED, + /// + ///A fixed billing policy's fulfillment_exact_time must not be present when the fulfillment_trigger isn't EXACT_TIME. + /// + FULFILLMENT_EXACT_TIME_NOT_ALLOWED, + /// + ///A fixed delivery policy's anchors must not be present when the fulfillment_trigger isn't ANCHOR. + /// + SELLING_PLAN_ANCHORS_NOT_ALLOWED, + /// + ///A fixed delivery policy's anchors must be present when the fulfillment_trigger is ANCHOR. + /// + SELLING_PLAN_ANCHORS_REQUIRED, + /// + ///A selling plan can't have both fixed and recurring billing policies. + /// + ONLY_ONE_OF_FIXED_OR_RECURRING_BILLING, + /// + ///A selling plan can't have both fixed and recurring delivery policies. + /// + ONLY_ONE_OF_FIXED_OR_RECURRING_DELIVERY, + /// + ///Billing policy's interval is too large. + /// + BILLING_POLICY_INTERVAL_TOO_LARGE, + /// + ///Delivery policy's interval is too large. + /// + DELIVERY_POLICY_INTERVAL_TOO_LARGE, + /// + ///The input submitted is invalid. + /// + INVALID_INPUT, + } + + /// + ///Represents valid selling plan interval. + /// + public enum SellingPlanInterval + { + /// + ///Day interval. + /// + DAY, + /// + ///Week interval. + /// + WEEK, + /// + ///Month interval. + /// + MONTH, + /// + ///Year interval. + /// + YEAR, + } + + /// + ///The selling plan inventory policy. + /// + public class SellingPlanInventoryPolicy : GraphQLObject + { + /// + ///When to reserve inventory for the order. + /// + public string? reserve { get; set; } + } + + /// + ///Represents the type of pricing associated to the selling plan (for example, a $10 or 20% discount that is set + ///for a limited period or that is fixed for the duration of the subscription). Selling plan pricing policies and + ///associated records (selling plan groups, selling plans, billing policy, and delivery policy) are deleted 48 + ///hours after a merchant uninstalls their subscriptions app. We recommend backing up these records if you need + ///to restore them later. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SellingPlanFixedPricingPolicy), typeDiscriminator: "SellingPlanFixedPricingPolicy")] + [JsonDerivedType(typeof(SellingPlanRecurringPricingPolicy), typeDiscriminator: "SellingPlanRecurringPricingPolicy")] + public interface ISellingPlanPricingPolicy : IGraphQLObject + { + public SellingPlanFixedPricingPolicy? AsSellingPlanFixedPricingPolicy() => this as SellingPlanFixedPricingPolicy; + public SellingPlanRecurringPricingPolicy? AsSellingPlanRecurringPricingPolicy() => this as SellingPlanRecurringPricingPolicy; + /// + ///The price adjustment type. + /// + public string? adjustmentType { get; set; } + /// + ///The price adjustment value. + /// + public ISellingPlanPricingPolicyAdjustmentValue? adjustmentValue { get; set; } + /// + ///The date and time when the fixed selling plan pricing policy was created. + /// + public DateTime? createdAt { get; set; } + } + + /// + ///Represents a selling plan pricing policy adjustment type. + /// + public enum SellingPlanPricingPolicyAdjustmentType + { + /// + ///Percentage off adjustment. + /// + PERCENTAGE, + /// + ///Fixed amount off adjustment. + /// + FIXED_AMOUNT, + /// + ///Price of the policy. + /// + PRICE, + } + + /// + ///Represents a selling plan pricing policy adjustment value type. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(MoneyV2), typeDiscriminator: "MoneyV2")] + [JsonDerivedType(typeof(SellingPlanPricingPolicyPercentageValue), typeDiscriminator: "SellingPlanPricingPolicyPercentageValue")] + public interface ISellingPlanPricingPolicyAdjustmentValue : IGraphQLObject + { + public MoneyV2? AsMoneyV2() => this as MoneyV2; + public SellingPlanPricingPolicyPercentageValue? AsSellingPlanPricingPolicyPercentageValue() => this as SellingPlanPricingPolicyPercentageValue; + } + + /// + ///Represents selling plan pricing policy common fields. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SellingPlanFixedPricingPolicy), typeDiscriminator: "SellingPlanFixedPricingPolicy")] + [JsonDerivedType(typeof(SellingPlanRecurringPricingPolicy), typeDiscriminator: "SellingPlanRecurringPricingPolicy")] + public interface ISellingPlanPricingPolicyBase : IGraphQLObject + { + public SellingPlanFixedPricingPolicy? AsSellingPlanFixedPricingPolicy() => this as SellingPlanFixedPricingPolicy; + public SellingPlanRecurringPricingPolicy? AsSellingPlanRecurringPricingPolicy() => this as SellingPlanRecurringPricingPolicy; + /// + ///The price adjustment type. + /// + public string? adjustmentType { get; } + /// + ///The price adjustment value. + /// + public ISellingPlanPricingPolicyAdjustmentValue? adjustmentValue { get; } + } + + /// + ///The percentage value of a selling plan pricing policy percentage type. + /// + public class SellingPlanPricingPolicyPercentageValue : GraphQLObject, ISellingPlanPricingPolicyAdjustmentValue + { + /// + ///The percentage value. + /// + public decimal? percentage { get; set; } + } + + /// + ///Represents a recurring selling plan billing policy. + /// + public class SellingPlanRecurringBillingPolicy : GraphQLObject, ISellingPlanBillingPolicy + { + /// + ///Specific anchor dates upon which the billing interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///The date and time when the selling plan billing policy was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The billing frequency, it can be either: day, week, month or year. + /// + public string? interval { get; set; } + /// + ///The number of intervals between billings. + /// + public int? intervalCount { get; set; } + /// + ///Maximum number of billing iterations. + /// + public int? maxCycles { get; set; } + /// + ///Minimum number of billing iterations. + /// + public int? minCycles { get; set; } + } + + /// + ///Represents a recurring selling plan delivery policy. + /// + public class SellingPlanRecurringDeliveryPolicy : GraphQLObject, ISellingPlanDeliveryPolicy + { + /// + ///The specific anchor dates upon which the delivery interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///The date and time when the selling plan delivery policy was created. + /// + public DateTime? createdAt { get; set; } + /// + ///Number of days which represent a buffer period for orders to be included in a cycle. + /// + public int? cutoff { get; set; } + /// + ///Whether the delivery policy is merchant or buyer-centric. + ///Buyer-centric delivery policies state the time when the buyer will receive the goods. + ///Merchant-centric delivery policies state the time when the fulfillment should be started. + ///Currently, only merchant-centric delivery policies are supported. + /// + public string? intent { get; set; } + /// + ///The delivery frequency, it can be either: day, week, month or year. + /// + public string? interval { get; set; } + /// + ///The number of intervals between deliveries. + /// + public int? intervalCount { get; set; } + /// + ///The fulfillment or delivery behavior of the first fulfillment when the order is placed before the anchor. The default value for this field is `ASAP`. + /// + public string? preAnchorBehavior { get; set; } + } + + /// + ///Whether the delivery policy is merchant or buyer-centric. + /// + public enum SellingPlanRecurringDeliveryPolicyIntent + { + /// + ///A merchant-centric delivery policy. Mark this delivery policy to define when the merchant should start fulfillment. + /// + FULFILLMENT_BEGIN, + } + + /// + ///The fulfillment or delivery behaviors of the first fulfillment when the orderis placed before the anchor. + /// + public enum SellingPlanRecurringDeliveryPolicyPreAnchorBehavior + { + /// + ///The orders placed can be fulfilled or delivered immediately. The orders placed inside a cutoff can be fulfilled or delivered at the next anchor. + /// + ASAP, + /// + ///The orders placed can be fulfilled or delivered at the next anchor date. + ///The orders placed inside a cutoff will skip the next anchor and can be fulfilled or + ///delivered at the following anchor. + /// + NEXT, + } + + /// + ///Represents a recurring selling plan pricing policy. It applies after the fixed pricing policy. By using the afterCycle parameter, you can specify the cycle when the recurring pricing policy comes into effect. Recurring pricing policies are not available for deferred purchase options. + /// + public class SellingPlanRecurringPricingPolicy : GraphQLObject, ISellingPlanPricingPolicyBase, ISellingPlanPricingPolicy + { + /// + ///The price adjustment type. + /// + public string? adjustmentType { get; set; } + /// + ///The price adjustment value. + /// + public ISellingPlanPricingPolicyAdjustmentValue? adjustmentValue { get; set; } + /// + ///Cycle after which this pricing policy applies. + /// + public int? afterCycle { get; set; } + /// + ///The date and time when the recurring selling plan pricing policy was created. + /// + public DateTime? createdAt { get; set; } + } + + /// + ///When to capture the payment for the remaining amount due. + /// + public enum SellingPlanRemainingBalanceChargeTrigger + { + /// + ///When there's no remaining balance to be charged after checkout. + /// + NO_REMAINING_BALANCE, + /// + ///At an exact time defined by the remaining_balance_charge_exact_time field. + /// + EXACT_TIME, + /// + ///After the duration defined by the remaining_balance_charge_time_after_checkout field. + /// + TIME_AFTER_CHECKOUT, + } + + /// + ///When to reserve inventory for a selling plan. + /// + public enum SellingPlanReserve + { + /// + ///Reserve inventory when order is fulfilled. + /// + ON_FULFILLMENT, + /// + ///Reserve inventory at time of sale. + /// + ON_SALE, + } + + /// + ///A server pixel stores configuration for streaming customer interactions to an EventBridge or PubSub endpoint. + /// + public class ServerPixel : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The current state of this server pixel. + /// + public string? status { get; set; } + /// + ///Address of the EventBridge or PubSub endpoint. + /// + public string? webhookEndpointAddress { get; set; } + } + + /// + ///Return type for `serverPixelCreate` mutation. + /// + public class ServerPixelCreatePayload : GraphQLObject + { + /// + ///The new server pixel. + /// + public ServerPixel? serverPixel { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `serverPixelDelete` mutation. + /// + public class ServerPixelDeletePayload : GraphQLObject + { + /// + ///The ID of the server pixel that was deleted, if one was deleted. + /// + public string? deletedServerPixelId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The current state of a server pixel. + /// + public enum ServerPixelStatus + { + /// + ///This server pixel is connected: it will stream customer events to the endpoint if it is configured properly. + /// + CONNECTED, + /// + ///This server pixel is disconnected and unconfigured: it does not stream events to the endpoint and no endpoint address had been added to the server pixel. + /// + DISCONNECTED_UNCONFIGURED, + /// + ///This server pixel is disconnected: it does not stream events to the endpoint and an endpoint address has been added to the server pixel. + /// + DISCONNECTED_CONFIGURED, + } + + /// + ///The class of the discount for combining purposes. + /// + public enum ShippingDiscountClass + { + /// + ///Combined as a shipping discount. + /// + SHIPPING, + } + + /// + ///Represents the shipping details that the customer chose for their order. + /// + public class ShippingLine : GraphQLObject, IDraftOrderPlatformDiscountAllocationTarget + { + /// + ///A reference to the carrier service that provided the rate. + ///Present when the rate was computed by a third-party carrier service. + /// + public string? carrierIdentifier { get; set; } + /// + ///A reference to the shipping method. + /// + public string? code { get; set; } + /// + ///The current shipping price after applying refunds, after applying discounts. If the parent `order.taxesIncluded`` field is true, then this price includes taxes. Otherwise, this field is the pre-tax price. + /// + public MoneyBag? currentDiscountedPriceSet { get; set; } + /// + ///Whether the shipping line is custom or not. + /// + public bool? custom { get; set; } + /// + ///The general classification of the delivery method. + /// + public string? deliveryCategory { get; set; } + /// + ///The discounts that have been allocated to the shipping line. + /// + public IEnumerable? discountAllocations { get; set; } + + /// + ///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 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. + /// + [Obsolete("Use `originalPriceSet` instead.")] + public MoneyV2? originalPrice { get; set; } + /// + ///The pre-tax shipping price without any discounts applied. + /// + public MoneyBag? originalPriceSet { get; set; } + /// + ///The phone number at the shipping address. + /// + public string? phone { get; set; } + + /// + ///Returns the price of the shipping line. + /// + [Obsolete("Use `originalPriceSet` instead.")] + public decimal? price { get; set; } + /// + ///The fulfillment service requested for the shipping method. + ///Present if the shipping method requires processing by a third party fulfillment service. + /// + public FulfillmentService? requestedFulfillmentService { get; set; } + /// + ///A unique identifier for the shipping rate. The format can change without notice and isn't meant to be shown to users. + /// + public string? shippingRateHandle { get; set; } + /// + ///Returns the rate source for the shipping line. + /// + public string? source { get; set; } + /// + ///The TaxLine objects connected to this shipping line. + /// + public IEnumerable? taxLines { get; set; } + /// + ///Returns the title of the shipping line. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShippingLines. + /// + public class ShippingLineConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShippingLineEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShippingLine and a cursor during pagination. + /// + public class ShippingLineEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShippingLineEdge. + /// + public ShippingLine? node { get; set; } + } + + /// + ///A sale associated with a shipping charge. + /// + public class ShippingLineSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? lineType { get; set; } + /// + ///The number of units either ordered or intended to be returned. + /// + public int? quantity { get; set; } + /// + ///The shipping line item for the associated sale. `shippingLine` is not available if the `SaleActionType` is a return. + /// + public ShippingLine? shippingLine { 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; } + } + + /// + ///Return type for `shippingPackageDelete` mutation. + /// + public class ShippingPackageDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted shipping package. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `shippingPackageMakeDefault` mutation. + /// + public class ShippingPackageMakeDefaultPayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Type of a shipping package. + /// + public enum ShippingPackageType + { + /// + ///A shipping box. + /// + BOX, + /// + ///A flat rate packaging supplied by a carrier. + /// + FLAT_RATE, + /// + ///An envelope. + /// + ENVELOPE, + /// + ///A soft-pack, bubble-wrap or vinyl envelope. + /// + SOFT_PACK, + } + + /// + ///Return type for `shippingPackageUpdate` mutation. + /// + public class ShippingPackageUpdatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A shipping rate is an additional cost added to the cost of the products that were ordered. + /// + public class ShippingRate : GraphQLObject + { + /// + ///Human-readable unique identifier for this shipping rate. + /// + public string? handle { get; set; } + /// + ///The cost associated with the shipping rate. + /// + public MoneyV2? price { get; set; } + /// + ///The name of the shipping rate. + /// + public string? title { get; set; } + } + + /// + ///Represents the shipping costs refunded on the Refund. + /// + public class ShippingRefund : GraphQLObject + { + /// + ///The monetary value of the shipping fees to be refunded. + /// + [Obsolete("Use `amountSet` instead.")] + public decimal? amount { get; set; } + /// + ///The monetary value of the shipping fees to be refunded in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + + /// + ///The maximum amount of shipping fees currently refundable. + /// + [Obsolete("Use `maximumRefundableSet` instead.")] + public decimal? maximumRefundable { get; set; } + /// + ///The maximum amount of shipping fees currently refundable in shop and presentment currencies. + /// + public MoneyBag? maximumRefundableSet { get; set; } + + /// + ///The monetary value of the tax allocated to shipping fees to be refunded. + /// + [Obsolete("Use `taxSet` instead.")] + public decimal? tax { get; set; } + /// + ///The monetary value of the tax allocated to shipping fees to be refunded in shop and presentment currencies. + /// + public MoneyBag? taxSet { get; set; } + } + + /// + ///Represents a collection of general settings and information about the shop. + /// + public class Shop : GraphQLObject, IHasMetafields, IHasPublishedTranslations, INode, IMetafieldReferencer + { + /// + ///Account owner information. + /// + public StaffMember? accountOwner { get; set; } + /// + ///A list of the shop's active alert messages that appear in the Shopify admin. + /// + public IEnumerable? alerts { get; set; } + + /// + ///A list of the shop's product categories. Limit: 1000 product categories. + /// + [Obsolete("Deprecated in API version 2024-07. Use `allProductCategoriesList` instead.")] + public IEnumerable? allProductCategories { get; set; } + /// + ///A list of the shop's product categories. Limit: 1000 product categories. + /// + public IEnumerable? allProductCategoriesList { get; set; } + + /// + ///The token required to query the shop's reports or dashboards. + /// + [Obsolete("Not supported anymore.")] + public string? analyticsToken { get; set; } + + /// + ///The paginated list of fulfillment orders assigned to the shop locations owned by the app. + /// + ///Assigned fulfillment orders are fulfillment orders that are set to be fulfilled from locations + ///managed by + ///[fulfillment services](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService) + ///that are registered by the app. + ///One app (api_client) can host multiple fulfillment services on a shop. + ///Each fulfillment service manages a dedicated location on a shop. + ///Assigned fulfillment orders can have associated + ///[fulfillment requests](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderRequestStatus), + ///or might currently not be requested to be fulfilled. + /// + ///The app must have `read_assigned_fulfillment_orders` + ///[access scope](https://shopify.dev/docs/api/usage/access-scopes) + ///to be able to retrieve fulfillment orders assigned to its locations. + /// + ///All assigned fulfillment orders (except those with the `CLOSED` status) will be returned by default. + ///Perform filtering with the `assignmentStatus` argument + ///to receive only fulfillment orders that have been requested to be fulfilled. + /// + [Obsolete("Use `QueryRoot.assignedFulfillmentOrders` instead. Details: https://shopify.dev/changelog/moving-the-shop-assignedfulfillmentorders-connection-to-queryroot")] + public FulfillmentOrderConnection? assignedFulfillmentOrders { get; set; } + /// + ///The list of sales channels not currently installed on the shop. + /// + public AppConnection? availableChannelApps { get; set; } + /// + ///The shop's billing address information. + /// + public ShopAddress? billingAddress { get; set; } + /// + ///List of all channel definitions associated with a shop. + /// + public IEnumerable? channelDefinitionsForInstalledChannels { get; set; } + + /// + ///List of the shop's active sales channels. + /// + [Obsolete("Use `QueryRoot.channels` instead.")] + public ChannelConnection? channels { get; set; } + /// + ///Specifies whether the shop supports checkouts via Checkout API. + /// + public bool? checkoutApiSupported { get; set; } + + /// + ///Return a collection by its handle. + /// + [Obsolete("Use `QueryRoot.collectionByHandle` instead.")] + public Collection? collectionByHandle { get; set; } + + /// + ///List of the shop's collection saved searches. + /// + [Obsolete("Use `QueryRoot.collectionSavedSearches` instead.")] + public SavedSearchConnection? collectionSavedSearches { get; set; } + + /// + ///List of the shop's collections. + /// + [Obsolete("Use `QueryRoot.collections` instead.")] + public CollectionConnection? collections { get; set; } + /// + ///The public-facing contact email address for the shop. + ///Customers will use this email to communicate with the shop owner. + /// + public string? contactEmail { get; set; } + /// + ///Countries that have been defined in shipping zones for the shop. + /// + 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 string? currencyCode { get; set; } + /// + ///How currencies are displayed on your store. + /// + public CurrencyFormats? currencyFormats { get; set; } + /// + ///The presentment currency settings for the shop excluding the shop's own currency. + /// + public CurrencySettingConnection? currencySettings { get; set; } + /// + ///Whether customer accounts are required, optional, or disabled for the shop. + /// + public string? customerAccounts { get; set; } + /// + ///Information about the shop's customer accounts. + /// + public CustomerAccountsV2? customerAccountsV2 { get; set; } + + /// + ///List of the shop's customer saved searches. + /// + [Obsolete("Use `QueryRoot.customerSavedSearches` instead.")] + public SavedSearchConnection? customerSavedSearches { get; set; } + /// + ///A list of tags that have been added to customer accounts. + /// + public StringConnection? customerTags { get; set; } + + /// + ///Customer accounts associated to the shop. + /// + [Obsolete("Use `QueryRoot.customers` instead.")] + public CustomerConnection? customers { get; set; } + /// + ///The shop's meta description used in search engine results. + /// + public string? description { get; set; } + + /// + ///The domains configured for the shop. + /// + [Obsolete("Use `domainsPaginated` instead.")] + public IEnumerable? domains { get; set; } + + /// + ///List of the shop's draft order saved searches. + /// + [Obsolete("Use `QueryRoot.draftOrderSavedSearches` instead.")] + public SavedSearchConnection? draftOrderSavedSearches { get; set; } + /// + ///A list of tags that have been added to draft orders. + /// + public StringConnection? draftOrderTags { get; set; } + + /// + ///List of saved draft orders on the shop. + /// + [Obsolete("Use `QueryRoot.draftOrders` instead.")] + public DraftOrderConnection? draftOrders { get; set; } + /// + ///The shop owner's email address. + ///Shopify will use this email address to communicate with the shop owner. + /// + public string? email { get; set; } + /// + ///The presentment currencies enabled for the shop. + /// + public IEnumerable? enabledPresentmentCurrencies { get; set; } + /// + ///The set of features enabled for the shop. + /// + public ShopFeatures? features { get; set; } + + /// + ///The paginated list of merchant-managed and third-party fulfillment orders. + /// + [Obsolete("Use `QueryRoot.fulfillmentOrders` instead.")] + public FulfillmentOrderConnection? fulfillmentOrders { get; set; } + /// + ///List of the shop's installed fulfillment services. + /// + public IEnumerable? fulfillmentServices { get; set; } + /// + ///The shop's time zone as defined by the IANA. + /// + public string? ianaTimezone { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + + /// + ///List of the shop's inventory items. + /// + [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; } + + /// + ///List of active locations of the shop. + /// + [Obsolete("Use `QueryRoot.locations` instead.")] + public LocationConnection? locations { get; set; } + + /// + ///List of a shop's marketing events. + /// + [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; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + /// + ///The shop's .myshopify.com domain name. + /// + public string? myshopifyDomain { get; set; } + /// + ///The shop's name. + /// + public string? name { get; set; } + /// + ///The shop's settings related to navigation. + /// + public IEnumerable? navigationSettings { get; set; } + /// + ///The prefix that appears before order numbers. + /// + public string? orderNumberFormatPrefix { get; set; } + /// + ///The suffix that appears after order numbers. + /// + public string? orderNumberFormatSuffix { get; set; } + + /// + ///List of the shop's order saved searches. + /// + [Obsolete("Use `QueryRoot.orderSavedSearches` instead.")] + public SavedSearchConnection? orderSavedSearches { get; set; } + /// + ///A list of tags that have been added to orders. + /// + public StringConnection? orderTags { get; set; } + + /// + ///A list of the shop's orders. + /// + [Obsolete("Use `QueryRoot.orders` instead.")] + public OrderConnection? orders { get; set; } + /// + ///The shop's settings related to payments. + /// + public PaymentSettings? paymentSettings { get; set; } + /// + ///The shop's billing plan. + /// + public ShopPlan? plan { get; set; } + /// + ///The primary domain of the shop's online store. + /// + public Domain? primaryDomain { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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; } + + /// + ///Return a product by its handle. + /// + [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; } + + /// + ///List of the shop's product saved searches. + /// + [Obsolete("Use `QueryRoot.productSavedSearches` instead.")] + public SavedSearchConnection? productSavedSearches { get; set; } + /// + ///A list of tags that have been added to products. + /// + public StringConnection? productTags { get; set; } + /// + ///The list of types added to products. + /// + public StringConnection? productTypes { get; set; } + + /// + ///List of the shop's product variants. + /// + [Obsolete("Use `QueryRoot.productVariants` instead.")] + public ProductVariantConnection? productVariants { get; set; } + /// + ///The list of vendors added to products. + /// + public StringConnection? productVendors { get; set; } + + /// + ///List of the shop's products. + /// + [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. + /// + public ShopResourceLimits? resourceLimits { get; set; } + /// + ///The URL of the rich text editor that can be used for mobile devices. + /// + public string? richTextEditorUrl { get; set; } + /// + ///Fetches a list of admin search results by a specified query. + /// + public SearchResultConnection? search { get; set; } + /// + ///The list of search filter options for the shop. These can be used to filter productvisibility for the shop. + /// + public SearchFilterOptions? searchFilters { get; set; } + /// + ///Whether the shop has outstanding setup steps. + /// + public bool? setupRequired { get; set; } + /// + ///The list of countries that the shop ships to. + /// + public IEnumerable? shipsToCountries { get; set; } + /// + ///The name of the shop owner. + /// + public string? shopOwnerName { get; set; } + /// + ///The list of all legal policies associated with a shop. + /// + public IEnumerable? shopPolicies { get; set; } + + /// + ///The paginated list of the shop's staff members. + /// + [Obsolete("Use `QueryRoot.staffMembers` instead.")] + public StaffMemberConnection? staffMembers { get; set; } + /// + ///The storefront access token of a private application. These are scoped per-application. + /// + public StorefrontAccessTokenConnection? storefrontAccessTokens { get; set; } + + /// + ///The URL of the shop's storefront. + /// + [Obsolete("Use `url` instead.")] + public string? storefrontUrl { get; set; } + /// + ///Whether the shop charges taxes for shipping. + /// + public bool? taxShipping { get; set; } + /// + ///Whether applicable taxes are included in the shop's product prices. + /// + public bool? taxesIncluded { get; set; } + /// + ///The shop's time zone abbreviation. + /// + public string? timezoneAbbreviation { get; set; } + /// + ///The shop's time zone offset. + /// + public string? timezoneOffset { get; set; } + /// + ///The shop's time zone offset expressed as a number of minutes. + /// + public int? timezoneOffsetMinutes { get; set; } + /// + ///Whether transactional SMS sent by Shopify have been disabled for a shop. + /// + public bool? transactionalSmsDisabled { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The shop's unit system for weights and measures. + /// + public string? 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. + /// + [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 IEnumerable? uploadedImagesByIds { get; set; } + /// + ///The URL of the shop's online store. + /// + public string? url { get; set; } + /// + ///The shop's primary unit of weight for products and shipping. + /// + public string? weightUnit { get; set; } + } + + /// + ///An address for a shop. + /// + public class ShopAddress : GraphQLObject, INode + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the company or organization. + /// + public string? company { get; set; } + /// + ///Whether the address coordinates are valid. + /// + public bool? coordinatesValidated { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + + /// + ///The two-letter code for the country of the address. + /// + ///For example, US. + /// + [Obsolete("Use `countryCodeV2` instead.")] + public string? countryCode { get; set; } + /// + ///The two-letter code for the country of the address. + /// + ///For example, US. + /// + public string? countryCodeV2 { get; set; } + + /// + ///The first name. + /// + [Obsolete("Always null in this context.")] + public string? firstName { get; set; } + /// + ///A formatted version of the address, customized by the provided arguments. + /// + public IEnumerable? formatted { get; set; } + /// + ///A comma-separated list of the values for city, province, and country. + /// + public string? formattedArea { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + + /// + ///The last name. + /// + [Obsolete("Always null in this context.")] + public string? lastName { get; set; } + /// + ///The latitude coordinate of the address. + /// + public decimal? latitude { get; set; } + /// + ///The longitude coordinate of the address. + /// + public decimal? longitude { get; set; } + + /// + ///The full name, based on firstName and lastName. + /// + [Obsolete("Always null in this context.")] + public string? name { get; set; } + /// + ///A phone number associated with the address. + /// + ///Formatted using E.164 standard. For example, _+16135551111_. + /// + public string? phone { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The alphanumeric code for the region. + /// + ///For example, ON. + /// + public string? provinceCode { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///An alert message that appears in the Shopify admin about a problem with a store setting, with an action to take. For example, you could show an alert to ask the merchant to enter their billing information to activate Shopify Plus. + /// + public class ShopAlert : GraphQLObject + { + /// + ///The text for the button in the alert that links to related information. For example, _Add credit card_. + /// + public ShopAlertAction? action { get; set; } + /// + ///A description of the alert and further information, such as whether the merchant will be charged. + /// + public string? description { get; set; } + } + + /// + ///An action associated to a shop alert, such as adding a credit card. + /// + public class ShopAlertAction : GraphQLObject + { + /// + ///The text for the button in the alert. For example, _Add credit card_. + /// + public string? title { get; set; } + /// + ///The target URL that the button links to. + /// + public string? url { get; set; } + } + + /// + ///Billing preferences for the shop. + /// + public class ShopBillingPreferences : GraphQLObject + { + /// + ///The currency the shop uses to pay for apps and services. + /// + public string? currency { get; set; } + } + + /// + ///Possible branding of a shop. + ///Branding can be used to define the look of a shop including its styling and logo in the Shopify Admin. + /// + public enum ShopBranding + { + /// + ///Shop has Shopify Gold branding. + /// + SHOPIFY_GOLD, + /// + ///Shop has Shopify Plus branding. + /// + SHOPIFY_PLUS, + /// + ///Shop has Rogers branding. + /// + ROGERS, + /// + ///Shop has Shopify branding. + /// + SHOPIFY, + } + + /// + ///Represents the shop's customer account requirement preference. + /// + public enum ShopCustomerAccountsSetting + { + REQUIRED, + OPTIONAL, + DISABLED, + } + + /// + ///Represents the feature set available to the shop. + ///Most fields specify whether a feature is enabled for a shop, and some fields return information + ///related to specific features. + /// + public class ShopFeatures : GraphQLObject + { + /// + ///Whether a shop has access to Avalara AvaTax. + /// + public bool? avalaraAvatax { get; set; } + /// + ///The branding of the shop, which influences its look and feel in the Shopify admin. + /// + public string? branding { get; set; } + /// + ///Represents the Bundles feature configuration for the shop. + /// + public BundlesFeature? bundles { get; set; } + /// + ///Whether a shop's online store can have CAPTCHA protection. + /// + public bool? captcha { get; set; } + + /// + ///Whether a shop's online store can have CAPTCHA protection for domains not managed by Shopify. + /// + [Obsolete("No longer required for external domains")] + public bool? captchaExternalDomains { get; set; } + /// + ///Represents the cart transform feature configuration for the shop. + /// + public CartTransformFeature? cartTransform { get; set; } + + /// + ///Whether the delivery profiles functionality is enabled for this shop. + /// + [Obsolete("Delivery profiles are now 100% enabled across Shopify.")] + public bool? deliveryProfiles { get; set; } + /// + ///Whether a shop has access to the Google Analytics dynamic remarketing feature. + /// + public bool? dynamicRemarketing { get; set; } + /// + ///Whether a shop can be migrated to use Shopify subscriptions. + /// + public bool? eligibleForSubscriptionMigration { get; set; } + /// + ///Whether a shop is configured properly to sell subscriptions. + /// + public bool? eligibleForSubscriptions { get; set; } + /// + ///Whether a shop can create gift cards. + /// + public bool? giftCards { get; set; } + /// + ///Whether a shop displays Harmonized System codes on products. This is used for customs when shipping + ///internationally. + /// + public bool? harmonizedSystemCode { get; set; } + + /// + ///Whether a shop can enable international domains. + /// + [Obsolete("All shops have international domains through Shopify Markets.")] + public bool? internationalDomains { get; set; } + /// + ///Whether a shop can enable international price overrides. + /// + public bool? internationalPriceOverrides { get; set; } + /// + ///Whether a shop can enable international price rules. + /// + public bool? internationalPriceRules { get; set; } + /// + ///Whether a shop has enabled a legacy subscription gateway to handle older subscriptions. + /// + public bool? legacySubscriptionGatewayEnabled { get; set; } + /// + ///Whether to show the Live View metrics in the Shopify admin. Live view is hidden from merchants that are on a trial + ///or don't have a storefront. + /// + public bool? liveView { get; set; } + + /// + ///Whether a shop has multi-location functionality. + /// + [Obsolete("All shops support multi-location inventory. Use `QueryRoot.locations` to determine whether shop has more than one location.")] + public bool? multiLocation { get; set; } + /// + ///Whether a shop has access to the onboarding visual. + /// + public bool? onboardingVisual { get; set; } + /// + ///Whether a shop is configured to sell subscriptions with PayPal Express. + /// + public string? paypalExpressSubscriptionGatewayStatus { get; set; } + /// + ///Whether a shop has access to all reporting features. + /// + public bool? reports { get; set; } + /// + ///Whether a shop has ever had subscription products. + /// + public bool? sellsSubscriptions { get; set; } + + /// + ///Whether the shop has a Shopify Plus subscription. + /// + [Obsolete("Use Shop.plan.shopifyPlus instead.")] + public bool? shopifyPlus { get; set; } + /// + ///Whether to show metrics in the Shopify admin. Metrics are hidden for new merchants until they become meaningful. + /// + public bool? showMetrics { get; set; } + /// + ///Whether a shop has an online store. + /// + public bool? storefront { get; set; } + /// + ///Whether a shop is using Shopify Balance. + /// + public bool? usingShopifyBalance { get; set; } + } + + /// + ///A locale that's been enabled on a shop. + /// + public class ShopLocale : GraphQLObject + { + /// + ///The locale ISO code. + /// + public string? locale { get; set; } + /// + ///The market web presences that use the locale. + /// + public IEnumerable? marketWebPresences { get; set; } + /// + ///The human-readable locale name. + /// + public string? name { get; set; } + /// + ///Whether the locale is the default locale for the shop. + /// + public bool? primary { get; set; } + /// + ///Whether the locale is visible to buyers. + /// + public bool? published { get; set; } + } + + /// + ///Return type for `shopLocaleDisable` mutation. + /// + public class ShopLocaleDisablePayload : GraphQLObject + { + /// + ///ISO code of the locale that was deleted. + /// + public string? locale { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `shopLocaleEnable` mutation. + /// + public class ShopLocaleEnablePayload : GraphQLObject + { + /// + ///ISO code of the locale that was enabled. + /// + public ShopLocale? shopLocale { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `shopLocaleUpdate` mutation. + /// + public class ShopLocaleUpdatePayload : GraphQLObject + { + /// + ///The locale that was updated. + /// + public ShopLocale? shopLocale { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Shop Pay Installments payment details related to a transaction. + /// + public class ShopPayInstallmentsPaymentDetails : GraphQLObject, IBasePaymentDetails, IPaymentDetails + { + /// + ///The name of payment method used by the buyer. + /// + public string? paymentMethodName { get; set; } + } + + /// + ///The billing plan of the shop. + /// + public class ShopPlan : GraphQLObject + { + /// + ///The name of the shop's billing plan. + /// + public string? displayName { get; set; } + /// + ///Whether the shop is a partner development shop for testing purposes. + /// + public bool? partnerDevelopment { get; set; } + /// + ///Whether the shop has a Shopify Plus subscription. + /// + public bool? shopifyPlus { get; set; } + } + + /// + ///Policy that a merchant has configured for their store, such as their refund or privacy policy. + /// + public class ShopPolicy : GraphQLObject, IHasPublishedTranslations, INode + { + /// + ///The text of the policy. The maximum size is 512kb. + /// + public string? body { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the policy was created. + /// + public DateOnly? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The translated title of the policy. For example, Refund Policy or Politique de remboursement. + /// + public string? title { get; set; } + /// + ///The published translations associated with the resource. + /// + public IEnumerable? translations { get; set; } + /// + ///The shop policy type. + /// + public string? type { get; set; } + /// + ///The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the policy was last modified. + /// + public DateOnly? updatedAt { get; set; } + /// + ///The public URL of the policy. + /// + public string? url { get; set; } + } + + /// + ///Possible error codes that can be returned by `ShopPolicyUserError`. + /// + public enum ShopPolicyErrorCode + { + /// + ///The input value is too big. + /// + TOO_BIG, + } + + /// + ///Available shop policy types. + /// + public enum ShopPolicyType + { + /// + ///The refund policy. + /// + REFUND_POLICY, + /// + ///The shipping policy. + /// + SHIPPING_POLICY, + /// + ///The privacy policy. + /// + PRIVACY_POLICY, + /// + ///The terms of service. + /// + TERMS_OF_SERVICE, + /// + ///The terms of sale. + /// + TERMS_OF_SALE, + /// + ///The legal notice. + /// + LEGAL_NOTICE, + /// + ///The purchase options cancellation policy. + /// + SUBSCRIPTION_POLICY, + /// + ///The contact information. + /// + CONTACT_INFORMATION, + } + + /// + ///Return type for `shopPolicyUpdate` mutation. + /// + public class ShopPolicyUpdatePayload : GraphQLObject + { + /// + ///The shop policy that has been updated. + /// + public ShopPolicy? shopPolicy { 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 a shop policy mutation. + /// + public class ShopPolicyUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Return type for `shopResourceFeedbackCreate` mutation. + /// + public class ShopResourceFeedbackCreatePayload : GraphQLObject + { + /// + ///The shop feedback that's created. + /// + public AppFeedback? feedback { 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 `ShopResourceFeedbackCreate`. + /// + public class ShopResourceFeedbackCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ShopResourceFeedbackCreateUserError`. + /// + public enum ShopResourceFeedbackCreateUserErrorCode + { + /// + ///The feedback for a later version of the resource was already accepted. + /// + OUTDATED_FEEDBACK, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value needs to be blank. + /// + PRESENT, + } + + /// + ///Resource limits of a shop. + /// + public class ShopResourceLimits : GraphQLObject + { + /// + ///Maximum number of locations allowed. + /// + public int? locationLimit { get; set; } + /// + ///Maximum number of product options allowed. + /// + public int? maxProductOptions { get; set; } + /// + ///The maximum number of variants allowed per product. + /// + public int? maxProductVariants { get; set; } + /// + ///Whether the shop has reached the limit of the number of URL redirects it can make for resources. + /// + public bool? redirectLimitReached { get; set; } + } + + /// + ///Possible sort of tags. + /// + public enum ShopTagSort + { + /// + ///Alphabetical sort. + /// + ALPHABETICAL, + /// + ///Popularity sort. + /// + POPULAR, + } + + /// + ///A Shopify Function. + /// + public class ShopifyFunction : GraphQLObject + { + /// + ///The API type of the Shopify Function. + /// + public string? apiType { get; set; } + /// + ///The API version of the Shopify Function. + /// + public string? apiVersion { get; set; } + /// + ///The app that owns the Shopify Function. + /// + public App? app { get; set; } + /// + ///The App Bridge information for the Shopify Function. + /// + public FunctionsAppBridge? appBridge { get; set; } + /// + ///The client ID of the app that owns the Shopify Function. + /// + public string? appKey { get; set; } + /// + ///The description of the Shopify Function. + /// + public string? description { get; set; } + /// + ///The ID of the Shopify Function. + /// + public string? id { get; set; } + /// + ///The input query of the Shopify Function. + /// + public string? inputQuery { get; set; } + /// + ///The title of the Shopify Function. + /// + public string? title { get; set; } + /// + ///If the Shopify Function uses the creation UI in the Admin. + /// + public bool? useCreationUi { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShopifyFunctions. + /// + public class ShopifyFunctionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShopifyFunctionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShopifyFunction and a cursor during pagination. + /// + public class ShopifyFunctionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShopifyFunctionEdge. + /// + public ShopifyFunction? node { get; set; } + } + + /// + ///Balance and payout information for a + ///[Shopify Payments](https://help.shopify.com/manual/payments/shopify-payments/getting-paid-with-shopify-payments) + ///account. Balance includes all balances for the currencies supported by the shop. + ///You can also query for a list of payouts, where each payout includes the corresponding currencyCode field. + /// + public class ShopifyPaymentsAccount : GraphQLObject, INode + { + /// + ///Whether the Shopify Payments setup is completed. + /// + public bool? activated { get; set; } + /// + ///Current balances in all currencies for the account. + /// + public IEnumerable? balance { get; set; } + /// + ///A list of balance transactions associated with the shop. + /// + public ShopifyPaymentsBalanceTransactionConnection? balanceTransactions { get; set; } + /// + ///All bank accounts configured for the Shopify Payments account. + /// + public ShopifyPaymentsBankAccountConnection? bankAccounts { get; set; } + + /// + ///The statement descriptor used for charges. + /// + ///The statement descriptor appears on a customer's credit card or bank statement when they make a purchase. + /// + [Obsolete("Use `chargeStatementDescriptors` instead.")] + public string? chargeStatementDescriptor { get; set; } + /// + ///The statement descriptors used for charges. + /// + ///These descriptors appear on a customer's credit card or bank statement when they make a purchase. + /// + public IShopifyPaymentsChargeStatementDescriptor? chargeStatementDescriptors { get; set; } + /// + ///The Shopify Payments account country. + /// + public string? country { get; set; } + /// + ///The default payout currency for the Shopify Payments account. + /// + public string? defaultCurrency { get; set; } + /// + ///All disputes that originated from a transaction made with the Shopify Payments account. + /// + public ShopifyPaymentsDisputeConnection? disputes { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Whether the Shopify Payments account can be onboarded. + /// + public bool? onboardable { get; set; } + /// + ///The payout schedule for the account. + /// + public ShopifyPaymentsPayoutSchedule? payoutSchedule { get; set; } + /// + ///The descriptor used for payouts. + /// + ///The descriptor appears on a merchant's bank statement when they receive a payout. + /// + public string? payoutStatementDescriptor { get; set; } + /// + ///All current and previous payouts made between the account and the bank account. + /// + public ShopifyPaymentsPayoutConnection? payouts { get; set; } + } + + /// + ///The adjustment order object. + /// + public class ShopifyPaymentsAdjustmentOrder : GraphQLObject + { + /// + ///The amount of the adjustment order. + /// + public MoneyV2? amount { get; set; } + /// + ///The link to the adjustment order. + /// + public string? link { get; set; } + /// + ///The name of the adjustment order. + /// + public string? name { get; set; } + /// + ///The ID of the order transaction. + /// + public long? orderTransactionId { get; set; } + } + + /// + ///The order associated to the balance transaction. + /// + public class ShopifyPaymentsAssociatedOrder : GraphQLObject + { + /// + ///The ID of the associated order. + /// + public string? id { get; set; } + /// + ///The name of the associated order. + /// + public string? name { get; set; } + } + + /// + ///A transaction that contributes to a Shopify Payments account balance. + /// + public class ShopifyPaymentsBalanceTransaction : GraphQLObject, INode + { + /// + ///The reason for the adjustment that's associated with the transaction. + /// If the source_type isn't an adjustment, the value will be null. + /// + public string? adjustmentReason { get; set; } + /// + ///The adjustment orders associated to the transaction. + /// + public IEnumerable? adjustmentsOrders { get; set; } + /// + ///The amount contributing to the balance transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The associated order for the balance transaction. + /// + public ShopifyPaymentsAssociatedOrder? associatedOrder { get; set; } + /// + ///Payout assoicated with the transaction. + /// + public ShopifyPaymentsBalanceTransactionAssociatedPayout? associatedPayout { get; set; } + /// + ///The fee amount contributing to the balance transaction. + /// + public MoneyV2? fee { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The net amount contributing to the merchant's balance. + /// + public MoneyV2? net { get; set; } + /// + ///The ID of the resource leading to the transaction. + /// + public long? sourceId { get; set; } + /// + ///The id of the + /// [Order Transaction](https://shopify.dev/docs/admin-api/rest/reference/orders/transaction) + /// + /// that resulted in this balance transaction. + /// + public long? sourceOrderTransactionId { get; set; } + /// + ///The source type of the balance transaction. + /// + public string? sourceType { get; set; } + /// + ///Wether the tranaction was created in test mode. + /// + public bool? test { get; set; } + /// + ///The date and time when the balance transaction was processed. + /// + public DateTime? transactionDate { get; set; } + /// + ///The type of transaction. + /// + public string? type { get; set; } + } + + /// + ///The payout associated with a balance transaction. + /// + public class ShopifyPaymentsBalanceTransactionAssociatedPayout : GraphQLObject + { + /// + ///The ID of the payout associated with the balance transaction. + /// + public string? id { get; set; } + /// + ///The status of the payout associated with the balance transaction. + /// + public string? status { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShopifyPaymentsBalanceTransactions. + /// + public class ShopifyPaymentsBalanceTransactionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShopifyPaymentsBalanceTransactionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShopifyPaymentsBalanceTransaction and a cursor during pagination. + /// + public class ShopifyPaymentsBalanceTransactionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShopifyPaymentsBalanceTransactionEdge. + /// + public ShopifyPaymentsBalanceTransaction? node { get; set; } + } + + /// + ///The payout status of the balance transaction. + /// + public enum ShopifyPaymentsBalanceTransactionPayoutStatus + { + /// + ///The payout has been created and had transactions assigned to it, but + ///it has not yet been submitted to the bank. + /// + SCHEDULED, + /// + ///The payout has been submitted to the bank. + /// + IN_TRANSIT, + /// + ///The payout has been successfully deposited into the bank. + /// + PAID, + /// + ///The payout has been declined by the bank. + /// + FAILED, + /// + ///The payout has been canceled by Shopify. + /// + CANCELED, + /// + ///The transaction has not been assigned a payout yet. + /// + PENDING, + /// + ///The transaction requires action before it can be paid out. + /// + ACTION_REQUIRED, + } + + /// + ///A bank account that can receive payouts. + /// + public class ShopifyPaymentsBankAccount : GraphQLObject, INode + { + /// + ///The account number of the bank account. + /// + public string? accountNumber { get; set; } + /// + ///The last digits of the account number (the rest is redacted). + /// + public string? accountNumberLastDigits { get; set; } + /// + ///The name of the bank. + /// + public string? bankName { get; set; } + /// + ///The country of the bank. + /// + public string? country { get; set; } + /// + ///The date that the bank account was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The currency of the bank account. + /// + public string? currency { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///All current and previous payouts made between the account and the bank account. + /// + public ShopifyPaymentsPayoutConnection? payouts { get; set; } + /// + ///The routing number of the bank account. + /// + public string? routingNumber { get; set; } + /// + ///The status of the bank account. + /// + public string? status { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShopifyPaymentsBankAccounts. + /// + public class ShopifyPaymentsBankAccountConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShopifyPaymentsBankAccountEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShopifyPaymentsBankAccount and a cursor during pagination. + /// + public class ShopifyPaymentsBankAccountEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShopifyPaymentsBankAccountEdge. + /// + public ShopifyPaymentsBankAccount? node { get; set; } + } + + /// + ///The bank account status. + /// + public enum ShopifyPaymentsBankAccountStatus + { + /// + ///A bank account that hasn't had any activity and that's not validated. + /// + NEW, + /// + ///It was determined that the bank account exists. + /// + VALIDATED, + /// + ///Bank account validation was successful. + /// + VERIFIED, + /// + ///A payout to the bank account failed. + /// + ERRORED, + } + + /// + ///The charge descriptors for a payments account. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(ShopifyPaymentsDefaultChargeStatementDescriptor), typeDiscriminator: "ShopifyPaymentsDefaultChargeStatementDescriptor")] + [JsonDerivedType(typeof(ShopifyPaymentsJpChargeStatementDescriptor), typeDiscriminator: "ShopifyPaymentsJpChargeStatementDescriptor")] + public interface IShopifyPaymentsChargeStatementDescriptor : IGraphQLObject + { + public ShopifyPaymentsDefaultChargeStatementDescriptor? AsShopifyPaymentsDefaultChargeStatementDescriptor() => this as ShopifyPaymentsDefaultChargeStatementDescriptor; + public ShopifyPaymentsJpChargeStatementDescriptor? AsShopifyPaymentsJpChargeStatementDescriptor() => this as ShopifyPaymentsJpChargeStatementDescriptor; + /// + ///The default charge statement descriptor. + /// + public string? @default { get; } + /// + ///The prefix of the statement descriptor. + /// + public string? prefix { get; } + } + + /// + ///The charge descriptors for a payments account. + /// + public class ShopifyPaymentsDefaultChargeStatementDescriptor : GraphQLObject, IShopifyPaymentsChargeStatementDescriptor + { + /// + ///The default charge statement descriptor. + /// + public string? @default { get; set; } + /// + ///The prefix of the statement descriptor. + /// + public string? prefix { get; set; } + } + + /// + ///A dispute occurs when a buyer questions the legitimacy of a charge with their financial institution. + /// + public class ShopifyPaymentsDispute : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The total amount disputed by the cardholder. + /// + public MoneyV2? amount { get; set; } + /// + ///The deadline for evidence submission. + /// + public DateTime? evidenceDueBy { get; set; } + /// + ///The date when evidence was sent. Returns null if evidence hasn't yet been sent. + /// + public DateTime? evidenceSentOn { get; set; } + /// + ///The date when this dispute was resolved. Returns null if the dispute isn't yet resolved. + /// + public DateTime? finalizedOn { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The date when this dispute was initiated. + /// + public DateTime? initiatedAt { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The order that contains the charge that's under dispute. + /// + public Order? order { get; set; } + /// + ///The reason of the dispute. + /// + public ShopifyPaymentsDisputeReasonDetails? reasonDetails { get; set; } + /// + ///The current state of the dispute. + /// + public string? status { get; set; } + /// + ///Indicates if this dispute is still in the inquiry phase or has turned into a chargeback. + /// + public string? type { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShopifyPaymentsDisputes. + /// + public class ShopifyPaymentsDisputeConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShopifyPaymentsDisputeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShopifyPaymentsDispute and a cursor during pagination. + /// + public class ShopifyPaymentsDisputeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShopifyPaymentsDisputeEdge. + /// + public ShopifyPaymentsDispute? node { get; set; } + } + + /// + ///The evidence associated with the dispute. + /// + public class ShopifyPaymentsDisputeEvidence : GraphQLObject, INode + { + /// + ///The activity logs associated with the dispute evidence. + /// + public string? accessActivityLog { get; set; } + /// + ///The billing address that's provided by the customer. + /// + public MailingAddress? billingAddress { get; set; } + /// + ///The cancellation policy disclosure associated with the dispute evidence. + /// + public string? cancellationPolicyDisclosure { get; set; } + /// + ///The cancellation policy file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? cancellationPolicyFile { get; set; } + /// + ///The cancellation rebuttal associated with the dispute evidence. + /// + public string? cancellationRebuttal { get; set; } + /// + ///The customer communication file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? customerCommunicationFile { get; set; } + /// + ///The customer's email address. + /// + public string? customerEmailAddress { get; set; } + /// + ///The customer's first name. + /// + public string? customerFirstName { get; set; } + /// + ///The customer's last name. + /// + public string? customerLastName { get; set; } + /// + ///The customer purchase ip for this dispute evidence. + /// + public string? customerPurchaseIp { get; set; } + /// + ///The dispute associated with the evidence. + /// + public ShopifyPaymentsDispute? dispute { get; set; } + /// + ///The file uploads associated with the dispute evidence. + /// + public IEnumerable? disputeFileUploads { get; set; } + /// + ///The fulfillments associated with the dispute evidence. + /// + public IEnumerable? fulfillments { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The product description for this dispute evidence. + /// + public string? productDescription { get; set; } + /// + ///The refund policy disclosure associated with the dispute evidence. + /// + public string? refundPolicyDisclosure { get; set; } + /// + ///The refund policy file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? refundPolicyFile { get; set; } + /// + ///The refund refusal explanation associated with dispute evidence. + /// + public string? refundRefusalExplanation { get; set; } + /// + ///The service documentation file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? serviceDocumentationFile { get; set; } + /// + ///The mailing address for shipping that's provided by the customer. + /// + public MailingAddress? shippingAddress { get; set; } + /// + ///The shipping documentation file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? shippingDocumentationFile { get; set; } + /// + ///Whether the dispute evidence is submitted. + /// + public bool? submitted { get; set; } + /// + ///The uncategorized file associated with the dispute evidence. + /// + public ShopifyPaymentsDisputeFileUpload? uncategorizedFile { get; set; } + /// + ///The uncategorized text for the dispute evidence. + /// + public string? uncategorizedText { get; set; } + } + + /// + ///The possible dispute evidence file types. + /// + public enum ShopifyPaymentsDisputeEvidenceFileType + { + /// + ///Customer Communication File. + /// + CUSTOMER_COMMUNICATION_FILE, + /// + ///Refund Policy File. + /// + REFUND_POLICY_FILE, + /// + ///Cancellation Policy File. + /// + CANCELLATION_POLICY_FILE, + /// + ///Uncategorized File. + /// + UNCATEGORIZED_FILE, + /// + ///Shipping Documentation File. + /// + SHIPPING_DOCUMENTATION_FILE, + /// + ///Service Documentation File. + /// + SERVICE_DOCUMENTATION_FILE, + } + + /// + ///The file upload associated with the dispute evidence. + /// + public class ShopifyPaymentsDisputeFileUpload : GraphQLObject, INode + { + /// + ///The type of the file for the dispute evidence. + /// + public string? disputeEvidenceType { get; set; } + /// + ///The file size. + /// + public int? fileSize { get; set; } + /// + ///The file type. + /// + public string? fileType { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The original file name. + /// + public string? originalFileName { get; set; } + /// + ///The URL for accessing the file. + /// + public string? url { get; set; } + } + + /// + ///The fulfillment associated with dispute evidence. + /// + public class ShopifyPaymentsDisputeFulfillment : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The shipping carrier for this fulfillment. + /// + public string? shippingCarrier { get; set; } + /// + ///The shipping date for this fulfillment. + /// + public DateOnly? shippingDate { get; set; } + /// + ///The shipping tracking number for this fulfillment. + /// + public string? shippingTrackingNumber { get; set; } + } + + /// + ///The reason for the dispute provided by the cardholder's bank. + /// + public enum ShopifyPaymentsDisputeReason + { + /// + ///The cardholder claims that they didn’t authorize the payment. + /// + FRAUDULENT, + /// + ///The dispute is uncategorized, so you should contact the customer for additional details to find out why the payment was disputed. + /// + GENERAL, + /// + ///The customer doesn’t recognize the payment appearing on their card statement. + /// + UNRECOGNIZED, + /// + ///The customer claims they were charged multiple times for the same product or service. + /// + DUPLICATE, + /// + ///The customer claims that you continued to charge them after a subscription was canceled. + /// + SUBSCRIPTION_CANCELLED, + /// + ///The product or service was received but was defective, damaged, or not as described. + /// + PRODUCT_UNACCEPTABLE, + /// + ///The customer claims they did not receive the products or services purchased. + /// + PRODUCT_NOT_RECEIVED, + /// + ///The customer claims that the purchased product was returned or the transaction was otherwise canceled, but you haven't yet provided a refund or credit. + /// + CREDIT_NOT_PROCESSED, + /// + ///The customer account associated with the purchase is incorrect. + /// + INCORRECT_ACCOUNT_DETAILS, + /// + ///The customer's bank account has insufficient funds. + /// + INSUFFICIENT_FUNDS, + /// + ///The customer's bank can't process the charge. + /// + BANK_CANNOT_PROCESS, + /// + ///The customer's bank can't proceed with the debit since it hasn't been authorized. + /// + DEBIT_NOT_AUTHORIZED, + /// + ///The customer initiated the dispute. Contact the customer for additional details on why the payment was disputed. + /// + CUSTOMER_INITIATED, + } + + /// + ///Details regarding a dispute reason. + /// + public class ShopifyPaymentsDisputeReasonDetails : GraphQLObject + { + /// + ///The raw code provided by the payment network. + /// + public string? networkReasonCode { get; set; } + /// + ///The reason for the dispute provided by the cardholder's banks. + /// + public string? reason { get; set; } + } + + /// + ///Presents all Shopify Payments information related to an extended authorization. + /// + public class ShopifyPaymentsExtendedAuthorization : GraphQLObject + { + /// + ///The time after which the extended authorization expires. After the expiry, the merchant is unable to capture the payment. + /// + public DateTime? extendedAuthorizationExpiresAt { get; set; } + /// + ///The time after which capture will incur an additional fee. + /// + public DateTime? standardAuthorizationExpiresAt { get; set; } + } + + /// + ///The charge descriptors for a Japanese payments account. + /// + public class ShopifyPaymentsJpChargeStatementDescriptor : GraphQLObject, IShopifyPaymentsChargeStatementDescriptor + { + /// + ///The default charge statement descriptor. + /// + public string? @default { get; set; } + /// + ///The charge statement descriptor in kana. + /// + public string? kana { get; set; } + /// + ///The charge statement descriptor in kanji. + /// + public string? kanji { get; set; } + /// + ///The prefix of the statement descriptor. + /// + public string? prefix { get; set; } + } + + /// + ///Payouts represent the movement of money between a merchant's Shopify + ///Payments balance and their bank account. + /// + public class ShopifyPaymentsPayout : GraphQLObject, ILegacyInteroperability, INode + { + /// + ///The bank account for the payout. + /// + public ShopifyPaymentsBankAccount? bankAccount { get; set; } + /// + ///The business entity associated with the payout. + /// + public BusinessEntity? businessEntity { get; set; } + + /// + ///The total amount and currency of the payout. + /// + [Obsolete("Use `net` instead.")] + public MoneyV2? gross { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The exact time when the payout was issued. The payout only contains + ///balance transactions that were available at this time. + /// + public DateTime? issuedAt { get; set; } + /// + ///The ID of the corresponding resource in the REST Admin API. + /// + public ulong? legacyResourceId { get; set; } + /// + ///The total amount and currency of the payout. + /// + public MoneyV2? net { get; set; } + /// + ///The transfer status of the payout. + /// + public string? status { get; set; } + /// + ///The summary of the payout. + /// + public ShopifyPaymentsPayoutSummary? summary { get; set; } + /// + ///The direction of the payout. + /// + public string? transactionType { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple ShopifyPaymentsPayouts. + /// + public class ShopifyPaymentsPayoutConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ShopifyPaymentsPayoutEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one ShopifyPaymentsPayout and a cursor during pagination. + /// + public class ShopifyPaymentsPayoutEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ShopifyPaymentsPayoutEdge. + /// + public ShopifyPaymentsPayout? node { get; set; } + } + + /// + ///The interval at which payouts are sent to the connected bank account. + /// + public enum ShopifyPaymentsPayoutInterval + { + /// + ///Each business day. + /// + DAILY, + /// + ///Each week, on the day of week specified by weeklyAnchor. + /// + WEEKLY, + /// + ///Each month, on the day of month specified by monthlyAnchor. + /// + MONTHLY, + /// + ///Payouts will not be automatically made. + /// + MANUAL, + } + + /// + ///The payment schedule for a payments account. + /// + public class ShopifyPaymentsPayoutSchedule : GraphQLObject + { + /// + ///The interval at which payouts are sent to the connected bank account. + /// + public string? interval { get; set; } + /// + ///The day of the month funds will be paid out. + /// + ///The value can be any day of the month from the 1st to the 31st. + ///If the payment interval is set to monthly, this value will be used. + ///Payouts scheduled between 29-31st of the month are sent on the last day of shorter months. + /// + public int? monthlyAnchor { get; set; } + /// + ///The day of the week funds will be paid out. + /// + ///The value can be any weekday from Monday to Friday. + ///If the payment interval is set to weekly, this value will be used. + /// + public string? weeklyAnchor { get; set; } + } + + /// + ///The transfer status of the payout. + /// + public enum ShopifyPaymentsPayoutStatus + { + /// + ///The payout has been created and had transactions assigned to it, but + ///it has not yet been submitted to the bank. + /// + SCHEDULED, + /// + ///The payout has been submitted to the bank. + /// + IN_TRANSIT, + /// + ///The payout has been successfully deposited into the bank. + /// + PAID, + /// + ///The payout has been declined by the bank. + /// + FAILED, + /// + ///The payout has been canceled by Shopify. + /// + CANCELED, + } + + /// + ///Breakdown of the total fees and gross of each of the different types of transactions associated + ///with the payout. + /// + public class ShopifyPaymentsPayoutSummary : GraphQLObject + { + /// + ///Total fees for all adjustments including disputes. + /// + public MoneyV2? adjustmentsFee { get; set; } + /// + ///Total gross amount for all adjustments including disputes. + /// + public MoneyV2? adjustmentsGross { get; set; } + /// + ///Total fees for all advances. + /// + public MoneyV2? advanceFees { get; set; } + /// + ///Total gross amount for all advances. + /// + public MoneyV2? advanceGross { get; set; } + /// + ///Total fees for all charges. + /// + public MoneyV2? chargesFee { get; set; } + /// + ///Total gross amount for all charges. + /// + public MoneyV2? chargesGross { get; set; } + /// + ///Total fees for all refunds. + /// + public MoneyV2? refundsFee { get; set; } + /// + ///Total gross amount for all refunds. + /// + public MoneyV2? refundsFeeGross { get; set; } + /// + ///Total fees for all reserved funds. + /// + public MoneyV2? reservedFundsFee { get; set; } + /// + ///Total gross amount for all reserved funds. + /// + public MoneyV2? reservedFundsGross { get; set; } + /// + ///Total fees for all retried payouts. + /// + public MoneyV2? retriedPayoutsFee { get; set; } + /// + ///Total gross amount for all retried payouts. + /// + public MoneyV2? retriedPayoutsGross { get; set; } + } + + /// + ///The possible transaction types for a payout. + /// + public enum ShopifyPaymentsPayoutTransactionType + { + /// + ///The payout is a deposit. + /// + DEPOSIT, + /// + ///The payout is a withdrawal. + /// + WITHDRAWAL, + } + + /// + ///Presents all Shopify Payments specific information related to an order refund. + /// + public class ShopifyPaymentsRefundSet : GraphQLObject + { + /// + ///The acquirer reference number (ARN) code generated for Visa/Mastercard transactions. + /// + public string? acquirerReferenceNumber { get; set; } + } + + /// + ///The possible source types for a balance transaction. + /// + public enum ShopifyPaymentsSourceType + { + /// + ///The adjustment_reversal source type. + /// + ADJUSTMENT_REVERSAL, + /// + ///The charge source type. + /// + CHARGE, + /// + ///The refund source type. + /// + REFUND, + /// + ///The system_adjustment source type. + /// + SYSTEM_ADJUSTMENT, + /// + ///The dispute source type. + /// + DISPUTE, + /// + ///The adjustment source type. + /// + ADJUSTMENT, + /// + ///The transfer source type. + /// + TRANSFER, + } + + /// + ///Presents all Shopify Payments specific information related to an order transaction. + /// + public class ShopifyPaymentsTransactionSet : GraphQLObject + { + /// + ///Contains all fields related to an extended authorization. + /// + public ShopifyPaymentsExtendedAuthorization? extendedAuthorizationSet { get; set; } + /// + ///Contains all fields related to a refund. + /// + public ShopifyPaymentsRefundSet? refundSet { get; set; } + } + + /// + ///The possible types of transactions. + /// + public enum ShopifyPaymentsTransactionType + { + /// + ///The chargeback_protection_credit transaction type. + /// + CHARGEBACK_PROTECTION_CREDIT, + /// + ///The chargeback_protection_credit_reversal transaction type. + /// + CHARGEBACK_PROTECTION_CREDIT_REVERSAL, + /// + ///The chargeback_protection_debit transaction type. + /// + CHARGEBACK_PROTECTION_DEBIT, + /// + ///The chargeback_protection_debit_reversal transaction type. + /// + CHARGEBACK_PROTECTION_DEBIT_REVERSAL, + /// + ///The collections_credit transaction type. + /// + COLLECTIONS_CREDIT, + /// + ///The collections_credit_reversal transaction type. + /// + COLLECTIONS_CREDIT_REVERSAL, + /// + ///The promotion_credit transaction type. + /// + PROMOTION_CREDIT, + /// + ///The promotion_credit_reversal transaction type. + /// + PROMOTION_CREDIT_REVERSAL, + /// + ///The anomaly_credit transaction type. + /// + ANOMALY_CREDIT, + /// + ///The anomaly_credit_reversal transaction type. + /// + ANOMALY_CREDIT_REVERSAL, + /// + ///The anomaly_debit transaction type. + /// + ANOMALY_DEBIT, + /// + ///The anomaly_debit_reversal transaction type. + /// + ANOMALY_DEBIT_REVERSAL, + /// + ///The vat_refund_credit transaction type. + /// + VAT_REFUND_CREDIT, + /// + ///The vat_refund_credit_reversal transaction type. + /// + VAT_REFUND_CREDIT_REVERSAL, + /// + ///The channel_credit transaction type. + /// + CHANNEL_CREDIT, + /// + ///The channel_credit_reversal transaction type. + /// + CHANNEL_CREDIT_REVERSAL, + /// + ///The channel_transfer_credit transaction type. + /// + CHANNEL_TRANSFER_CREDIT, + /// + ///The channel_transfer_credit_reversal transaction type. + /// + CHANNEL_TRANSFER_CREDIT_REVERSAL, + /// + ///The channel_transfer_debit transaction type. + /// + CHANNEL_TRANSFER_DEBIT, + /// + ///The channel_transfer_debit_reversal transaction type. + /// + CHANNEL_TRANSFER_DEBIT_REVERSAL, + /// + ///The channel_promotion_credit transaction type. + /// + CHANNEL_PROMOTION_CREDIT, + /// + ///The channel_promotion_credit_reversal transaction type. + /// + CHANNEL_PROMOTION_CREDIT_REVERSAL, + /// + ///The marketplace_fee_credit transaction type. + /// + MARKETPLACE_FEE_CREDIT, + /// + ///The marketplace_fee_credit_reversal transaction type. + /// + MARKETPLACE_FEE_CREDIT_REVERSAL, + /// + ///The merchant_goodwill_credit transaction type. + /// + MERCHANT_GOODWILL_CREDIT, + /// + ///The merchant_goodwill_credit_reversal transaction type. + /// + MERCHANT_GOODWILL_CREDIT_REVERSAL, + /// + ///The tax_adjustment_debit transaction type. + /// + TAX_ADJUSTMENT_DEBIT, + /// + ///The tax_adjustment_debit_reversal transaction type. + /// + TAX_ADJUSTMENT_DEBIT_REVERSAL, + /// + ///The tax_adjustment_credit transaction type. + /// + TAX_ADJUSTMENT_CREDIT, + /// + ///The tax_adjustment_credit_reversal transaction type. + /// + TAX_ADJUSTMENT_CREDIT_REVERSAL, + /// + ///The billing_debit transaction type. + /// + BILLING_DEBIT, + /// + ///The billing_debit_reversal transaction type. + /// + BILLING_DEBIT_REVERSAL, + /// + ///The shop_cash_credit transaction type. + /// + SHOP_CASH_CREDIT, + /// + ///The shop_cash_credit_reversal transaction type. + /// + SHOP_CASH_CREDIT_REVERSAL, + /// + ///The shop_cash_billing_debit transaction type. + /// + SHOP_CASH_BILLING_DEBIT, + /// + ///The shop_cash_billing_debit_reversal transaction type. + /// + SHOP_CASH_BILLING_DEBIT_REVERSAL, + /// + ///The shop_cash_refund_debit transaction type. + /// + SHOP_CASH_REFUND_DEBIT, + /// + ///The shop_cash_refund_debit_reversal transaction type. + /// + SHOP_CASH_REFUND_DEBIT_REVERSAL, + /// + ///The shop_cash_campaign_billing_debit transaction type. + /// + SHOP_CASH_CAMPAIGN_BILLING_DEBIT, + /// + ///The shop_cash_campaign_billing_debit_reversal transaction type. + /// + SHOP_CASH_CAMPAIGN_BILLING_DEBIT_REVERSAL, + /// + ///The shop_cash_campaign_billing_credit transaction type. + /// + SHOP_CASH_CAMPAIGN_BILLING_CREDIT, + /// + ///The shop_cash_campaign_billing_credit_reversal transaction type. + /// + SHOP_CASH_CAMPAIGN_BILLING_CREDIT_REVERSAL, + /// + ///The seller_protection_credit transaction type. + /// + SELLER_PROTECTION_CREDIT, + /// + ///The seller_protection_credit_reversal transaction type. + /// + SELLER_PROTECTION_CREDIT_REVERSAL, + /// + ///The shopify_collective_debit transaction type. + /// + SHOPIFY_COLLECTIVE_DEBIT, + /// + ///The shopify_collective_debit_reversal transaction type. + /// + SHOPIFY_COLLECTIVE_DEBIT_REVERSAL, + /// + ///The shopify_collective_credit transaction type. + /// + SHOPIFY_COLLECTIVE_CREDIT, + /// + ///The shopify_collective_credit_reversal transaction type. + /// + SHOPIFY_COLLECTIVE_CREDIT_REVERSAL, + /// + ///The balance_transfer_inbound transaction type. + /// + BALANCE_TRANSFER_INBOUND, + /// + ///The markets_pro_credit transaction type. + /// + MARKETS_PRO_CREDIT, + /// + ///The customs_duty_adjustment transaction type. + /// + CUSTOMS_DUTY_ADJUSTMENT, + /// + ///The import_tax_adjustment transaction type. + /// + IMPORT_TAX_ADJUSTMENT, + /// + ///The shipping_label_adjustment transaction type. + /// + SHIPPING_LABEL_ADJUSTMENT, + /// + ///The shipping_label_adjustment_base transaction type. + /// + SHIPPING_LABEL_ADJUSTMENT_BASE, + /// + ///The shipping_label_adjustment_surcharge transaction type. + /// + SHIPPING_LABEL_ADJUSTMENT_SURCHARGE, + /// + ///The shipping_return_to_origin_adjustment transaction type. + /// + SHIPPING_RETURN_TO_ORIGIN_ADJUSTMENT, + /// + ///The shipping_other_carrier_charge_adjustment transaction type. + /// + SHIPPING_OTHER_CARRIER_CHARGE_ADJUSTMENT, + /// + ///The charge_adjustment transaction type. + /// + CHARGE_ADJUSTMENT, + /// + ///The refund_adjustment transaction type. + /// + REFUND_ADJUSTMENT, + /// + ///The chargeback_fee transaction type. + /// + CHARGEBACK_FEE, + /// + ///The chargeback_fee_refund transaction type. + /// + CHARGEBACK_FEE_REFUND, + /// + ///The transfer transaction type. + /// + TRANSFER, + /// + ///The transfer_failure transaction type. + /// + TRANSFER_FAILURE, + /// + ///The transfer_cancel transaction type. + /// + TRANSFER_CANCEL, + /// + ///The reserved_funds_withdrawal transaction type. + /// + RESERVED_FUNDS_WITHDRAWAL, + /// + ///The reserved_funds_reversal transaction type. + /// + RESERVED_FUNDS_REVERSAL, + /// + ///The risk_reversal transaction type. + /// + RISK_REVERSAL, + /// + ///The risk_withdrawal transaction type. + /// + RISK_WITHDRAWAL, + /// + ///The merchant_to_merchant_debit transaction type. + /// + MERCHANT_TO_MERCHANT_DEBIT, + /// + ///The merchant_to_merchant_debit_reversal transaction type. + /// + MERCHANT_TO_MERCHANT_DEBIT_REVERSAL, + /// + ///The merchant_to_merchant_credit transaction type. + /// + MERCHANT_TO_MERCHANT_CREDIT, + /// + ///The merchant_to_merchant_credit_reversal transaction type. + /// + MERCHANT_TO_MERCHANT_CREDIT_REVERSAL, + /// + ///The shopify_source_debit transaction type. + /// + SHOPIFY_SOURCE_DEBIT, + /// + ///The shopify_source_debit_reversal transaction type. + /// + SHOPIFY_SOURCE_DEBIT_REVERSAL, + /// + ///The shopify_source_credit transaction type. + /// + SHOPIFY_SOURCE_CREDIT, + /// + ///The shopify_source_credit_reversal transaction type. + /// + SHOPIFY_SOURCE_CREDIT_REVERSAL, + /// + ///The charge transaction type. + /// + CHARGE, + /// + ///The refund transaction type. + /// + REFUND, + /// + ///The refund_failure transaction type. + /// + REFUND_FAILURE, + /// + ///The application_fee_refund transaction type. + /// + APPLICATION_FEE_REFUND, + /// + ///The adjustment transaction type. + /// + ADJUSTMENT, + /// + ///The dispute_withdrawal transaction type. + /// + DISPUTE_WITHDRAWAL, + /// + ///The dispute_reversal transaction type. + /// + DISPUTE_REVERSAL, + /// + ///The shipping_label transaction type. + /// + SHIPPING_LABEL, + /// + ///The customs_duty transaction type. + /// + CUSTOMS_DUTY, + /// + ///The import_tax transaction type. + /// + IMPORT_TAX, + /// + ///The chargeback_hold transaction type. + /// + CHARGEBACK_HOLD, + /// + ///The chargeback_hold_release transaction type. + /// + CHARGEBACK_HOLD_RELEASE, + /// + ///The reserved_funds transaction type. + /// + RESERVED_FUNDS, + /// + ///The stripe_fee transaction type. + /// + STRIPE_FEE, + /// + ///The transfer_refund transaction type. + /// + TRANSFER_REFUND, + /// + ///The advance transaction type. + /// + ADVANCE, + /// + ///The advance funding transaction type. + /// + ADVANCE_FUNDING, + } + + /// + ///Each subject (individual) of an account has a verification object giving + /// information about the verification state. + /// + public class ShopifyPaymentsVerification : GraphQLObject, INode + { + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The status of the verification. + /// + public string? status { get; set; } + /// + ///The subject/individual who has to be verified. + /// + public ShopifyPaymentsVerificationSubject? subject { get; set; } + } + + /// + ///The status of a verification. + /// + public enum ShopifyPaymentsVerificationStatus + { + /// + ///The verification has been verified. + /// + VERIFIED, + /// + ///The verification has not yet been verified. + /// + UNVERIFIED, + /// + ///The verification request has been submitted but a response has not yet been given. + /// + PENDING, + } + + /// + ///The verification subject represents an individual that has to be verified. + /// + public class ShopifyPaymentsVerificationSubject : GraphQLObject + { + /// + ///The family name of the individual to verify. + /// + public string? familyName { get; set; } + /// + ///The given name of the individual to verify. + /// + public string? givenName { get; set; } + } + + /// + ///The status of an order's eligibility for protection against fraudulent chargebacks by Shopify Protect. + /// + public enum ShopifyProtectEligibilityStatus + { + /// + ///The eligibility of the order is pending and has not yet been determined. + /// + PENDING, + /// + ///The order is eligible for protection against fraudulent chargebacks. + ///If an order is updated, the order's eligibility may change and protection could be removed. + /// + ELIGIBLE, + /// + ///The order isn't eligible for protection against fraudulent chargebacks. + /// + NOT_ELIGIBLE, + } + + /// + ///The eligibility details of an order's protection against fraudulent chargebacks by Shopify Protect. + /// + public class ShopifyProtectOrderEligibility : GraphQLObject + { + /// + ///The status of whether an order is eligible for protection against fraudulent chargebacks. + /// + public string? status { get; set; } + } + + /// + ///A summary of Shopify Protect details for an order. + /// + public class ShopifyProtectOrderSummary : GraphQLObject + { + /// + ///The eligibility details of an order's protection against fraudulent chargebacks. + /// + public ShopifyProtectOrderEligibility? eligibility { get; set; } + /// + ///The status of the order's protection against fraudulent chargebacks. + /// + public string? status { get; set; } + } + + /// + ///The status of an order's protection with Shopify Protect. + /// + public enum ShopifyProtectStatus + { + /// + ///The protection for the order is pending and has not yet been determined. + /// + PENDING, + /// + ///The protection for the order is active and eligible for reimbursement against fraudulent chargebacks. + ///If an order is updated, the order's eligibility may change and protection could become inactive. + /// + ACTIVE, + /// + ///The protection for an order isn't active because the order didn't meet eligibility requirements. + /// + INACTIVE, + /// + ///The order received a fraudulent chargeback and it was protected. + /// + PROTECTED, + /// + ///The order received a chargeback but the order wasn't protected because it didn't meet coverage requirements. + /// + NOT_PROTECTED, + } + + /// + ///Represents the data about a staff member's Shopify account. Merchants can use staff member data to get more information about the staff members in their store. + /// + public class StaffMember : GraphQLObject, INode + { + /// + ///The type of account the staff member has. + /// + public string? accountType { get; set; } + /// + ///Whether the staff member is active. + /// + public bool? active { get; set; } + /// + ///The image used as the staff member's avatar in the Shopify admin. + /// + public Image? avatar { get; set; } + /// + ///The staff member's email address. + /// + public string? email { get; set; } + /// + ///Whether the staff member's account exists. + /// + public bool? exists { get; set; } + /// + ///The staff member's first name. + /// + public string? firstName { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The staff member's initials, if available. + /// + public IEnumerable? initials { get; set; } + /// + ///Whether the staff member is the shop owner. + /// + public bool? isShopOwner { get; set; } + /// + ///The staff member's last name. + /// + public string? lastName { get; set; } + /// + ///The staff member's preferred locale. Locale values use the format `language` or `language-COUNTRY`, where `language` is a two-letter language code, and `COUNTRY` is a two-letter country code. For example: `en` or `en-US` + /// + public string? locale { get; set; } + /// + ///The staff member's full name. + /// + public string? name { get; set; } + /// + ///The staff member's phone number. + /// + public string? phone { get; set; } + /// + ///The data used to customize the Shopify admin experience for the staff member. + /// + public StaffMemberPrivateData? privateData { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple StaffMembers. + /// + public class StaffMemberConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in StaffMemberEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Represents the fallback avatar image for a staff member. This is used only if the staff member has no avatar image. + /// + public enum StaffMemberDefaultImage + { + /// + ///Returns a default avatar image for the staff member. + /// + DEFAULT, + /// + ///Returns a transparent avatar image for the staff member. + /// + TRANSPARENT, + /// + ///Returns a URL that returns a 404 error if the image is not present. + /// + NOT_FOUND, + } + + /// + ///An auto-generated type which holds one StaffMember and a cursor during pagination. + /// + public class StaffMemberEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StaffMemberEdge. + /// + public StaffMember? node { get; set; } + } + + /// + ///Represents access permissions for a staff member. + /// + public enum StaffMemberPermission + { + /// + ///The staff member can manage and install apps and channels. + /// + APPLICATIONS, + /// + ///The staff member can manage and install sales channels. + /// + CHANNELS, + /// + ///The staff member can create and edit customers. + /// + CREATE_AND_EDIT_CUSTOMERS, + /// + ///The staff member can view customers. + /// + CUSTOMERS, + /// + ///The staff member can view the Shopify Home page, which includes sales information and other shop data. + /// + DASHBOARD, + /// + ///The staff member can delete customers. + /// + DELETE_CUSTOMERS, + /// + ///The staff member can view, buy, and manage domains. + /// + DOMAINS, + /// + ///The staff member can create, update, and delete draft orders. + /// + DRAFT_ORDERS, + /// + ///The staff member can update orders. + /// + EDIT_ORDERS, + /// + ///The staff member can erase customer private data. + /// + ERASE_CUSTOMER_DATA, + /// + ///The staff member can export customers. + /// + EXPORT_CUSTOMERS, + /// + ///The staff has the same permissions as the [store owner](https://shopify.dev/en/manual/your-account/staff-accounts/staff-permissions#store-owner-permissions) with some exceptions, such as modifying the account billing or deleting staff accounts. + /// + [Obsolete("Use the list of the staff member's explicit permissions returned in the `StaffMember.permissions.userPermissions` field instead of `full` permission.")] + FULL, + /// + ///The staff member can view, create, issue, and export gift cards to a CSV file. + /// + GIFT_CARDS, + /// + ///The staff member can view and modify links and navigation menus. + /// + LINKS, + /// + ///The staff member can create, update, and delete locations where inventory is stocked or managed. + /// + LOCATIONS, + /// + ///The staff member can view and create discount codes and automatic discounts, and export discounts to a CSV file. + /// + MARKETING, + /// + ///The staff member can view, create, and automate marketing campaigns. + /// + MARKETING_SECTION, + /// + ///The staff member can merge customers. + /// + MERGE_CUSTOMERS, + /// + ///The staff member can view, create, update, delete, and cancel orders, and receive order notifications. The staff member can still create draft orders without this permission. + /// + ORDERS, + /// + ///The staff member can view the Overview and Live view pages, which include sales information, and other shop and sales channels data. + /// + OVERVIEWS, + /// + ///The staff member can view, create, update, publish, and delete blog posts and pages. + /// + PAGES, + /// + ///The staff member can pay for an order by using a vaulted card. + /// + PAY_ORDERS_BY_VAULTED_CARD, + /// + ///The staff member can view the preferences and configuration of a shop. + /// + PREFERENCES, + /// + ///The staff member can view, create, import, and update products, collections, and inventory. + /// + PRODUCTS, + /// + ///The staff member can view and create all reports, which includes sales information and other shop data. + /// + REPORTS, + /// + ///The staff member can request customer private data. + /// + REQUEST_CUSTOMER_DATA, + /// + ///The staff member can view, update, and publish themes. + /// + THEMES, + /// + ///The staff member can view and create translations. + /// + [Obsolete("Unused.")] + TRANSLATIONS, + } + + /// + ///Represents the data used to customize the Shopify admin experience for a logged-in staff member. + /// + public class StaffMemberPrivateData : GraphQLObject + { + /// + ///The URL to the staff member's account settings page. + /// + public string? accountSettingsUrl { get; set; } + /// + ///The date and time when the staff member was created. + /// + public DateTime? createdAt { get; set; } + + /// + ///Access permissions for the staff member. + /// + [Obsolete("Use StaffMember.permissions.userPermissions instead")] + public IEnumerable? permissions { get; set; } + } + + /// + ///The set of valid sort keys for the StaffMembers query. + /// + public enum StaffMembersSortKeys + { + /// + ///Sort by the `first_name` value. + /// + FIRST_NAME, + /// + ///Sort by the `last_name` value. + /// + LAST_NAME, + /// + ///Sort by the `email` value. + /// + EMAIL, + /// + ///Sort by the `id` value. + /// + ID, + } + + /// + ///Information about a staged upload target, which should be used to send a request to upload + ///the file. + /// + ///For more information on the upload process, refer to + ///[Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify). + /// + public class StagedMediaUploadTarget : GraphQLObject + { + /// + ///Parameters needed to authenticate a request to upload the file. + /// + public IEnumerable? parameters { get; set; } + /// + ///The URL to be passed as `originalSource` in + ///[CreateMediaInput](https://shopify.dev/api/admin-graphql/latest/input-objects/CreateMediaInput) + ///and [FileCreateInput](https://shopify.dev/api/admin-graphql/2022-04/input-objects/FileCreateInput) + ///for the [productCreateMedia](https://shopify.dev/api/admin-graphql/2022-04/mutations/productCreateMedia) + ///and [fileCreate](https://shopify.dev/api/admin-graphql/2022-04/mutations/fileCreate) + ///mutations. + /// + public string? resourceUrl { get; set; } + /// + ///The URL to use when sending an request to upload the file. Should be used in conjunction with + ///the parameters field. + /// + public string? url { get; set; } + } + + /// + ///The possible HTTP methods that can be used when sending a request to upload a file using information from a + ///[StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget). + /// + public enum StagedUploadHttpMethodType + { + /// + ///The POST HTTP method. + /// + POST, + /// + ///The PUT HTTP method. + /// + PUT, + } + + /// + ///The parameters required to authenticate a file upload request using a + ///[StagedMediaUploadTarget's url field](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget#field-stagedmediauploadtarget-url). + /// + ///For more information on the upload process, refer to + ///[Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify). + /// + public class StagedUploadParameter : GraphQLObject + { + /// + ///The parameter's name. + /// + public string? name { get; set; } + /// + ///The parameter's value. + /// + public string? value { get; set; } + } + + /// + ///Information about the staged target. + /// + ///Deprecated in favor of + ///[StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget), + ///which is returned by the + ///[stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate). + /// + public class StagedUploadTarget : GraphQLObject + { + /// + ///The parameters of an image to be uploaded. + /// + public IEnumerable? parameters { get; set; } + /// + ///The image URL. + /// + public string? url { get; set; } + } + + /// + ///Return type for `stagedUploadTargetGenerate` mutation. + /// + public class StagedUploadTargetGeneratePayload : GraphQLObject + { + /// + ///The signed parameters that can be used to upload the asset. + /// + public IEnumerable? parameters { get; set; } + /// + ///The signed URL where the asset can be uploaded. + /// + public string? url { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The resource type to receive. + /// + public enum StagedUploadTargetGenerateUploadResource + { + /// + ///An image associated with a collection. + /// + ///For example, after uploading an image, you can use the + ///[collectionUpdate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/collectionUpdate) + ///to add the image to a collection. + /// + COLLECTION_IMAGE, + /// + ///Represents any file other than HTML. + /// + ///For example, after uploading the file, you can add the file to the + ///[Files page](https://shopify.com/admin/settings/files) in Shopify admin using the + ///[fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate). + /// + FILE, + /// + ///An image. + /// + ///For example, after uploading an image, you can add the image to a product using the + ///[productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia) + ///or to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the + ///[fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate). + /// + IMAGE, + /// + ///A Shopify hosted 3d model. + /// + ///For example, after uploading the 3d model, you can add the 3d model to a product using the + ///[productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia). + /// + MODEL_3D, + /// + ///An image that's associated with a product. + /// + ///For example, after uploading the image, you can add the image to a product using the + ///[productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia). + /// + PRODUCT_IMAGE, + /// + ///An image. + /// + ///For example, after uploading the image, you can add the image to the + ///[Files page](https://shopify.com/admin/settings/files) in Shopify admin using the + ///[fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate). + /// + SHOP_IMAGE, + /// + ///A Shopify-hosted video. + /// + ///For example, after uploading the video, you can add the video to a product using the + ///[productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia) + ///or to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the + ///[fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate). + /// + VIDEO, + /// + ///Represents bulk mutation variables. + /// + ///For example, bulk mutation variables can be used for bulk operations using the + ///[bulkOperationRunMutation mutation](https://shopify.dev/api/admin-graphql/latest/mutations/bulkOperationRunMutation). + /// + BULK_MUTATION_VARIABLES, + /// + ///Represents a label associated with a return. + /// + ///For example, once uploaded, this resource can be used to [create a + ///ReverseDelivery](https://shopify.dev/api/admin-graphql/unstable/mutations/reverseDeliveryCreateWithShipping). + /// + RETURN_LABEL, + /// + ///Represents a redirect CSV file. + /// + ///Example usage: This resource can be used for creating a + ///[UrlRedirectImport](https://shopify.dev/api/admin-graphql/2022-04/objects/UrlRedirectImport) + ///object for use in the + ///[urlRedirectImportCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportCreate). + /// + URL_REDIRECT_IMPORT, + } + + /// + ///Return type for `stagedUploadTargetsGenerate` mutation. + /// + public class StagedUploadTargetsGeneratePayload : GraphQLObject + { + /// + ///The staged upload targets that were generated. + /// + public IEnumerable? urls { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `stagedUploadsCreate` mutation. + /// + public class StagedUploadsCreatePayload : GraphQLObject + { + /// + ///The staged upload targets that were generated. + /// + public IEnumerable? stagedTargets { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `standardMetafieldDefinitionEnable` mutation. + /// + public class StandardMetafieldDefinitionEnablePayload : GraphQLObject + { + /// + ///The metafield definition that was created. + /// + public MetafieldDefinition? createdDefinition { 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 `StandardMetafieldDefinitionEnable`. + /// + public class StandardMetafieldDefinitionEnableUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `StandardMetafieldDefinitionEnableUserError`. + /// + public enum StandardMetafieldDefinitionEnableUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The standard metafield definition template was not found. + /// + TEMPLATE_NOT_FOUND, + /// + ///The maximum number of definitions per owner type has been exceeded. + /// + LIMIT_EXCEEDED, + /// + ///The namespace and key is already in use for a set of your metafields. + /// + UNSTRUCTURED_ALREADY_EXISTS, + /// + ///The definition type is not eligible to be used as collection condition. + /// + TYPE_NOT_ALLOWED_FOR_CONDITIONS, + /// + ///The input combination is invalid. + /// + INVALID_INPUT_COMBINATION, + } + + /// + ///Standard metafield definition templates provide preset configurations to create metafield definitions. + ///Each template has a specific namespace and key that we've reserved to have specific meanings for common use cases. + /// + ///Refer to the [list of standard metafield definitions](https://shopify.dev/apps/metafields/definitions/standard-definitions). + /// + public class StandardMetafieldDefinitionTemplate : GraphQLObject, INode + { + /// + ///The description of the standard metafield definition. + /// + public string? description { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The key owned by the definition after the definition has been activated. + /// + public string? key { get; set; } + /// + ///The human-readable name for the standard metafield definition. + /// + public string? name { get; set; } + /// + ///The namespace owned by the definition after the definition has been activated. + /// + public string? @namespace { get; set; } + /// + ///The list of resource types that the standard metafield definition can be applied to. + /// + public IEnumerable? ownerTypes { get; set; } + /// + ///The associated [metafield definition type](https://shopify.dev/apps/metafields/definitions/types) that the metafield stores. + /// + public MetafieldDefinitionType? type { get; set; } + /// + ///The configured validations for the standard metafield definition. + /// + public IEnumerable? validations { get; set; } + /// + ///Whether metafields for the definition are by default visible using the Storefront API. + /// + public bool? visibleToStorefrontApi { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple StandardMetafieldDefinitionTemplates. + /// + public class StandardMetafieldDefinitionTemplateConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in StandardMetafieldDefinitionTemplateEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one StandardMetafieldDefinitionTemplate and a cursor during pagination. + /// + public class StandardMetafieldDefinitionTemplateEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StandardMetafieldDefinitionTemplateEdge. + /// + public StandardMetafieldDefinitionTemplate? node { get; set; } + } + + /// + ///Return type for `standardMetaobjectDefinitionEnable` mutation. + /// + public class StandardMetaobjectDefinitionEnablePayload : GraphQLObject + { + /// + ///The metaobject definition that was enabled using the standard template. + /// + public MetaobjectDefinition? metaobjectDefinition { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents the details of a specific type of product within the [Shopify product taxonomy](https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17). + /// + public class StandardizedProductType : GraphQLObject + { + /// + ///The product taxonomy node associated with the standardized product type. + /// + public ProductTaxonomyNode? productTaxonomyNode { get; set; } + } + + /// + ///A store credit account contains a monetary balance that can be redeemed at checkout for purchases in the shop. + ///The account is held in the specified currency and has an owner that cannot be transferred. + /// + ///The account balance is redeemable at checkout only when the owner is authenticated via [new customer accounts authentication](https://shopify.dev/docs/api/customer). + /// + public class StoreCreditAccount : GraphQLObject, INode + { + /// + ///The current balance of the store credit account. + /// + public MoneyV2? balance { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The owner of the store credit account. + /// + public IHasStoreCreditAccounts? owner { get; set; } + /// + ///The transaction history of the store credit account. + /// + public StoreCreditAccountTransactionConnection? transactions { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple StoreCreditAccounts. + /// + public class StoreCreditAccountConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in StoreCreditAccountEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `storeCreditAccountCredit` mutation. + /// + public class StoreCreditAccountCreditPayload : GraphQLObject + { + /// + ///The store credit account transaction that was created. + /// + public StoreCreditAccountCreditTransaction? storeCreditAccountTransaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A credit transaction which increases the store credit account balance. + /// + public class StoreCreditAccountCreditTransaction : GraphQLObject, INode, IStoreCreditAccountTransaction + { + /// + ///The store credit account that the transaction belongs to. + /// + public StoreCreditAccount? account { get; set; } + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The balance of the account after the transaction. + /// + public MoneyV2? balanceAfterTransaction { get; set; } + /// + ///The date and time when the transaction was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The time at which the transaction expires. + ///Debit transactions will always spend the soonest expiring credit first. + /// + public DateTime? expiresAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The remaining amount of the credit. + ///The remaining amount will decrease when a debit spends this credit. It may also increase if that debit is subsequently reverted. + ///In the event that the credit expires, the remaining amount will represent the amount that remained as the expiry ocurred. + /// + public MoneyV2? remainingAmount { get; set; } + } + + /// + ///An error that occurs during the execution of `StoreCreditAccountCredit`. + /// + public class StoreCreditAccountCreditUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `StoreCreditAccountCreditUserError`. + /// + public enum StoreCreditAccountCreditUserErrorCode + { + /// + ///The store credit account could not be found. + /// + ACCOUNT_NOT_FOUND, + /// + ///Owner does not exist. + /// + OWNER_NOT_FOUND, + /// + ///A positive amount must be used to credit a store credit account. + /// + NEGATIVE_OR_ZERO_AMOUNT, + /// + ///The currency provided does not match the currency of the store credit account. + /// + MISMATCHING_CURRENCY, + /// + ///The expiry date must be in the future. + /// + EXPIRES_AT_IN_PAST, + /// + ///The operation would cause the account's credit limit to be exceeded. + /// + CREDIT_LIMIT_EXCEEDED, + } + + /// + ///Return type for `storeCreditAccountDebit` mutation. + /// + public class StoreCreditAccountDebitPayload : GraphQLObject + { + /// + ///The store credit account transaction that was created. + /// + public StoreCreditAccountDebitTransaction? storeCreditAccountTransaction { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///A debit revert transaction which increases the store credit account balance. + ///Debit revert transactions are created automatically when a [store credit account debit transaction](https://shopify.dev/api/admin-graphql/latest/objects/StoreCreditAccountDebitTransaction) is reverted. + /// + ///Store credit account debit transactions are reverted when an order is cancelled, refunded or in the event of a payment failure at checkout. + ///The amount added to the balance is equal to the amount reverted on the original credit. + /// + public class StoreCreditAccountDebitRevertTransaction : GraphQLObject, INode, IStoreCreditAccountTransaction + { + /// + ///The store credit account that the transaction belongs to. + /// + public StoreCreditAccount? account { get; set; } + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The balance of the account after the transaction. + /// + public MoneyV2? balanceAfterTransaction { get; set; } + /// + ///The date and time when the transaction was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The reverted debit transaction. + /// + public StoreCreditAccountDebitTransaction? debitTransaction { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///A debit transaction which decreases the store credit account balance. + /// + public class StoreCreditAccountDebitTransaction : GraphQLObject, INode, IStoreCreditAccountTransaction + { + /// + ///The store credit account that the transaction belongs to. + /// + public StoreCreditAccount? account { get; set; } + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The balance of the account after the transaction. + /// + public MoneyV2? balanceAfterTransaction { get; set; } + /// + ///The date and time when the transaction was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + } + + /// + ///An error that occurs during the execution of `StoreCreditAccountDebit`. + /// + public class StoreCreditAccountDebitUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `StoreCreditAccountDebitUserError`. + /// + public enum StoreCreditAccountDebitUserErrorCode + { + /// + ///The store credit account could not be found. + /// + ACCOUNT_NOT_FOUND, + /// + ///A positive amount must be used to debit a store credit account. + /// + NEGATIVE_OR_ZERO_AMOUNT, + /// + ///The store credit account does not have sufficient funds to satisfy the request. + /// + INSUFFICIENT_FUNDS, + /// + ///The currency provided does not match the currency of the store credit account. + /// + MISMATCHING_CURRENCY, + } + + /// + ///An auto-generated type which holds one StoreCreditAccount and a cursor during pagination. + /// + public class StoreCreditAccountEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StoreCreditAccountEdge. + /// + public StoreCreditAccount? node { get; set; } + } + + /// + ///An expiration transaction which decreases the store credit account balance. + ///Expiration transactions are created automatically when a [store credit account credit transaction](https://shopify.dev/api/admin-graphql/latest/objects/StoreCreditAccountCreditTransaction) expires. + /// + ///The amount subtracted from the balance is equal to the remaining amount of the credit transaction. + /// + public class StoreCreditAccountExpirationTransaction : GraphQLObject, IStoreCreditAccountTransaction + { + /// + ///The store credit account that the transaction belongs to. + /// + public StoreCreditAccount? account { get; set; } + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///The balance of the account after the transaction. + /// + public MoneyV2? balanceAfterTransaction { get; set; } + /// + ///The date and time when the transaction was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The credit transaction which expired. + /// + public StoreCreditAccountCreditTransaction? creditTransaction { get; set; } + } + + /// + ///Interface for a store credit account transaction. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(StoreCreditAccountCreditTransaction), typeDiscriminator: "StoreCreditAccountCreditTransaction")] + [JsonDerivedType(typeof(StoreCreditAccountDebitRevertTransaction), typeDiscriminator: "StoreCreditAccountDebitRevertTransaction")] + [JsonDerivedType(typeof(StoreCreditAccountDebitTransaction), typeDiscriminator: "StoreCreditAccountDebitTransaction")] + [JsonDerivedType(typeof(StoreCreditAccountExpirationTransaction), typeDiscriminator: "StoreCreditAccountExpirationTransaction")] + public interface IStoreCreditAccountTransaction : IGraphQLObject + { + public StoreCreditAccountCreditTransaction? AsStoreCreditAccountCreditTransaction() => this as StoreCreditAccountCreditTransaction; + public StoreCreditAccountDebitRevertTransaction? AsStoreCreditAccountDebitRevertTransaction() => this as StoreCreditAccountDebitRevertTransaction; + public StoreCreditAccountDebitTransaction? AsStoreCreditAccountDebitTransaction() => this as StoreCreditAccountDebitTransaction; + public StoreCreditAccountExpirationTransaction? AsStoreCreditAccountExpirationTransaction() => this as StoreCreditAccountExpirationTransaction; + /// + ///The store credit account that the transaction belongs to. + /// + public StoreCreditAccount? account { get; } + /// + ///The amount of the transaction. + /// + public MoneyV2? amount { get; } + /// + ///The balance of the account after the transaction. + /// + public MoneyV2? balanceAfterTransaction { get; } + /// + ///The date and time when the transaction was created. + /// + public DateTime? createdAt { get; } + } + + /// + ///An auto-generated type for paginating through multiple StoreCreditAccountTransactions. + /// + public class StoreCreditAccountTransactionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in StoreCreditAccountTransactionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one StoreCreditAccountTransaction and a cursor during pagination. + /// + public class StoreCreditAccountTransactionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StoreCreditAccountTransactionEdge. + /// + public IStoreCreditAccountTransaction? node { get; set; } + } + + /// + ///A token that's used to delegate unauthenticated access scopes to clients that need to access + ///the unauthenticated [Storefront API](https://shopify.dev/docs/api/storefront). + /// + ///An app can have a maximum of 100 active storefront access + ///tokens for each shop. + /// + ///[Get started with the Storefront API](https://shopify.dev/docs/storefronts/headless/building-with-the-storefront-api/getting-started). + /// + public class StorefrontAccessToken : GraphQLObject, INode + { + /// + ///List of permissions associated with the token. + /// + public IEnumerable? accessScopes { get; set; } + /// + ///The issued public access token. + /// + public string? accessToken { get; set; } + /// + ///The date and time when the public access token was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///An arbitrary title for each token determined by the developer, used for reference purposes. + /// + public string? title { get; set; } + /// + ///The date and time when the storefront access token was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple StorefrontAccessTokens. + /// + public class StorefrontAccessTokenConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in StorefrontAccessTokenEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `storefrontAccessTokenCreate` mutation. + /// + public class StorefrontAccessTokenCreatePayload : GraphQLObject + { + /// + ///The user's shop. + /// + public Shop? shop { get; set; } + /// + ///The storefront access token. + /// + public StorefrontAccessToken? storefrontAccessToken { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `storefrontAccessTokenDelete` mutation. + /// + public class StorefrontAccessTokenDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted storefront access token. + /// + public string? deletedStorefrontAccessTokenId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one StorefrontAccessToken and a cursor during pagination. + /// + public class StorefrontAccessTokenEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StorefrontAccessTokenEdge. + /// + public StorefrontAccessToken? node { get; set; } + } + + /// + ///An auto-generated type for paginating through a list of Strings. + /// + public class StringConnection : GraphQLObject, IConnectionWithEdges + { + /// + ///A list of edges. + /// + public IEnumerable? edges { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one String and a cursor during pagination. + /// + public class StringEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of StringEdge. + /// + public string? node { get; set; } + } + + /// + ///Represents an applied code discount. + /// + public class SubscriptionAppliedCodeDiscount : GraphQLObject, ISubscriptionDiscount + { + /// + ///The unique ID. + /// + public string? id { get; set; } + /// + ///The redeem code of the discount that applies on the subscription. + /// + public string? redeemCode { get; set; } + /// + ///The reason that the discount on the subscription draft is rejected. + /// + public string? rejectionReason { get; set; } + } + + /// + ///A record of an execution of the subscription billing process. Billing attempts use + ///idempotency keys to avoid duplicate order creation. A successful billing attempt + ///will create an order. + /// + public class SubscriptionBillingAttempt : GraphQLObject, INode + { + /// + ///The date and time when the billing attempt was completed. + /// + public DateTime? completedAt { get; set; } + /// + ///The date and time when the billing attempt was created. + /// + public DateTime? createdAt { get; set; } + /// + ///A code corresponding to a payment error during processing. + /// + public string? errorCode { get; set; } + /// + ///A message describing a payment error during processing. + /// + public string? errorMessage { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///A unique key generated by the client to avoid duplicate payments. + /// + public string? idempotencyKey { get; set; } + /// + ///The URL where the customer needs to be redirected so they can complete the 3D Secure payment flow. + /// + public string? nextActionUrl { get; set; } + /// + ///The result of this billing attempt if completed successfully. + /// + public Order? order { get; set; } + /// + ///The date and time used to calculate fulfillment intervals for a billing attempt that + ///successfully completed after the current anchor date. To prevent fulfillment from being + ///pushed to the next anchor date, this field can override the billing attempt date. + /// + public DateTime? originTime { get; set; } + /// + ///The reference shared between retried payment attempts. + /// + public string? paymentGroupId { get; set; } + /// + ///The reference shared between payment attempts with similar payment details. + /// + public string? paymentSessionId { get; set; } + /// + ///Whether the billing attempt is still processing. + /// + public bool? ready { get; set; } + /// + ///The subscription contract. + /// + public SubscriptionContract? subscriptionContract { get; set; } + /// + ///The transactions created by the billing attempt. + /// + public OrderTransactionConnection? transactions { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionBillingAttempts. + /// + public class SubscriptionBillingAttemptConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionBillingAttemptEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `subscriptionBillingAttemptCreate` mutation. + /// + public class SubscriptionBillingAttemptCreatePayload : GraphQLObject + { + /// + ///The subscription billing attempt. + /// + public SubscriptionBillingAttempt? subscriptionBillingAttempt { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionBillingAttempt and a cursor during pagination. + /// + public class SubscriptionBillingAttemptEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionBillingAttemptEdge. + /// + public SubscriptionBillingAttempt? node { get; set; } + } + + /// + ///The possible error codes associated with making billing attempts. The error codes supplement the + ///`error_message` to provide consistent results and help with dunning management. + /// + public enum SubscriptionBillingAttemptErrorCode + { + /// + ///Payment method was not found. + /// + PAYMENT_METHOD_NOT_FOUND, + /// + ///Payment provider is not enabled. + /// + PAYMENT_PROVIDER_IS_NOT_ENABLED, + /// + ///Payment method is invalid. Please update or create a new payment method. + /// + INVALID_PAYMENT_METHOD, + /// + ///There was an unexpected error during the billing attempt. + /// + UNEXPECTED_ERROR, + /// + ///Payment method is expired. + /// + EXPIRED_PAYMENT_METHOD, + /// + ///Payment method was declined by processor. + /// + PAYMENT_METHOD_DECLINED, + /// + ///There was an error during the authentication. + /// + AUTHENTICATION_ERROR, + /// + ///Gateway is in test mode and attempted to bill a live payment method. + /// + TEST_MODE, + /// + ///Payment method was canceled by buyer. + /// + BUYER_CANCELED_PAYMENT_METHOD, + /// + ///Customer was not found. + /// + CUSTOMER_NOT_FOUND, + /// + ///Customer is invalid. + /// + CUSTOMER_INVALID, + /// + ///The shipping address is either missing or invalid. + /// + INVALID_SHIPPING_ADDRESS, + /// + ///The billing agreement ID or the transaction ID for the customer's payment method is invalid. + /// + INVALID_CUSTOMER_BILLING_AGREEMENT, + /// + ///A payment has already been made for this invoice. + /// + INVOICE_ALREADY_PAID, + /// + ///Payment method cannot be used with the current payment gateway test mode configuration. + /// + PAYMENT_METHOD_INCOMPATIBLE_WITH_GATEWAY_CONFIG, + /// + ///The amount is too small. + /// + AMOUNT_TOO_SMALL, + /// + ///No inventory location found or enabled. + /// + INVENTORY_ALLOCATIONS_NOT_FOUND, + /// + ///Not enough inventory found. + /// + INSUFFICIENT_INVENTORY, + /// + ///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, + } + + /// + ///The set of valid sort keys for the SubscriptionBillingAttempts query. + /// + public enum SubscriptionBillingAttemptsSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///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 subscription billing cycle. + /// + public class SubscriptionBillingCycle : GraphQLObject + { + /// + ///The date on which the billing attempt is expected to be made. + /// + public DateTime? billingAttemptExpectedDate { get; set; } + /// + ///The list of billing attempts associated with the billing cycle. + /// + public SubscriptionBillingAttemptConnection? billingAttempts { get; set; } + /// + ///The end date of the billing cycle. + /// + public DateTime? cycleEndAt { get; set; } + /// + ///The index of the billing cycle. + /// + public int? cycleIndex { get; set; } + /// + ///The start date of the billing cycle. + /// + public DateTime? cycleStartAt { get; set; } + /// + ///Whether this billing cycle was edited. + /// + public bool? edited { get; set; } + /// + ///The active edited contract for the billing cycle. + /// + public SubscriptionBillingCycleEditedContract? editedContract { get; set; } + /// + ///Whether this billing cycle was skipped. + /// + public bool? skipped { get; set; } + /// + ///The subscription contract that the billing cycle belongs to. + /// + public SubscriptionContract? sourceContract { get; set; } + /// + ///The status of the billing cycle. + /// + public string? status { get; set; } + } + + /// + ///The presence of billing attempts on Billing Cycles. + /// + public enum SubscriptionBillingCycleBillingAttemptStatus + { + /// + ///Billing cycle has at least one billing attempt. + /// + HAS_ATTEMPT, + /// + ///Billing cycle has no billing attempts. + /// + NO_ATTEMPT, + /// + ///Billing cycle has any number of billing attempts. + /// + ANY, + } + + /// + ///The possible status values of a subscription billing cycle. + /// + public enum SubscriptionBillingCycleBillingCycleStatus + { + /// + ///The billing cycle is billed. + /// + BILLED, + /// + ///The billing cycle hasn't been billed. + /// + UNBILLED, + } + + /// + ///Return type for `subscriptionBillingCycleBulkCharge` mutation. + /// + public class SubscriptionBillingCycleBulkChargePayload : GraphQLObject + { + /// + ///The asynchronous job that performs the action on the targeted billing cycles. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleBulkSearch` mutation. + /// + public class SubscriptionBillingCycleBulkSearchPayload : GraphQLObject + { + /// + ///The asynchronous job that performs the action on the targeted billing cycles. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error that happens during the execution of subscriptionBillingCycles mutations. + /// + public class SubscriptionBillingCycleBulkUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `SubscriptionBillingCycleBulkUserError`. + /// + public enum SubscriptionBillingCycleBulkUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///End date can't be more than 24 hours in the future. + /// + END_DATE_IN_THE_FUTURE, + /// + ///The range between start date and end date shouldn't be more than 1 week. + /// + INVALID_DATE_RANGE, + /// + ///Start date should be before end date. + /// + START_DATE_BEFORE_END_DATE, + } + + /// + ///Return type for `subscriptionBillingCycleCharge` mutation. + /// + public class SubscriptionBillingCycleChargePayload : GraphQLObject + { + /// + ///The subscription billing attempt. + /// + public SubscriptionBillingAttempt? subscriptionBillingAttempt { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionBillingCycles. + /// + public class SubscriptionBillingCycleConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionBillingCycleEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleContractDraftCommit` mutation. + /// + public class SubscriptionBillingCycleContractDraftCommitPayload : GraphQLObject + { + /// + ///The committed Subscription Billing Cycle Edited Contract object. + /// + public SubscriptionBillingCycleEditedContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleContractDraftConcatenate` mutation. + /// + public class SubscriptionBillingCycleContractDraftConcatenatePayload : GraphQLObject + { + /// + ///The Subscription Draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleContractEdit` mutation. + /// + public class SubscriptionBillingCycleContractEditPayload : GraphQLObject + { + /// + ///The draft subscription contract object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionBillingCycle and a cursor during pagination. + /// + public class SubscriptionBillingCycleEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionBillingCycleEdge. + /// + public SubscriptionBillingCycle? node { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleEditDelete` mutation. + /// + public class SubscriptionBillingCycleEditDeletePayload : GraphQLObject + { + /// + ///The list of updated billing cycles. + /// + public IEnumerable? billingCycles { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a subscription contract with billing cycles. + /// + public class SubscriptionBillingCycleEditedContract : GraphQLObject, ISubscriptionContractBase + { + /// + ///The subscription app that the subscription contract is registered to. + /// + public App? app { get; set; } + /// + ///The URL of the subscription contract page on the subscription app. + /// + public string? appAdminUrl { get; set; } + /// + ///The billing cycles that the edited contract belongs to. + /// + public SubscriptionBillingCycleConnection? billingCycles { get; set; } + /// + ///The date and time when the subscription contract was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The currency that's used for the subscription contract. + /// + public string? currencyCode { get; set; } + /// + ///A list of the custom attributes to be added to the generated orders. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer to whom the subscription contract belongs. + /// + public Customer? customer { get; set; } + /// + ///The customer payment method that's used for the subscription contract. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The delivery method for each billing of the subscription contract. + /// + public ISubscriptionDeliveryMethod? deliveryMethod { get; set; } + /// + ///The delivery price for each billing of the subscription contract. + /// + public MoneyV2? deliveryPrice { get; set; } + /// + ///The list of subscription discounts associated with the subscription contract. + /// + 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; } + /// + ///A list of the subscription contract's orders. + /// + public OrderConnection? orders { get; set; } + /// + ///The date and time when the subscription contract was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleEditsDelete` mutation. + /// + public class SubscriptionBillingCycleEditsDeletePayload : GraphQLObject + { + /// + ///The list of updated billing cycles. + /// + public IEnumerable? billingCycles { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `SubscriptionBillingCycleUserError`. + /// + public enum SubscriptionBillingCycleErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Can't find the billing cycle. + /// + CYCLE_NOT_FOUND, + /// + ///There's no contract or schedule edit associated with the targeted billing cycle(s). + /// + NO_CYCLE_EDITS, + /// + ///The index selector is invalid. + /// + INVALID_CYCLE_INDEX, + /// + ///The date selector is invalid. + /// + INVALID_DATE, + /// + ///Billing cycle schedule edit input provided is empty. Must take in parameters to modify schedule. + /// + EMPTY_BILLING_CYCLE_EDIT_SCHEDULE_INPUT, + /// + ///Billing date cannot be set on skipped billing cycle. + /// + BILLING_DATE_SET_ON_SKIPPED, + /// + ///Billing date of a cycle cannot be set to a value outside of its billing date range. + /// + OUT_OF_BOUNDS, + /// + ///Billing cycle selector cannot select upcoming billing cycle past limit. + /// + UPCOMING_CYCLE_LIMIT_EXCEEDED, + /// + ///Billing cycle selector cannot select billing cycle outside of index range. + /// + CYCLE_INDEX_OUT_OF_RANGE, + /// + ///Billing cycle selector cannot select billing cycle outside of start date range. + /// + CYCLE_START_DATE_OUT_OF_RANGE, + /// + ///Billing cycle has incomplete billing attempts in progress. + /// + INCOMPLETE_BILLING_ATTEMPTS, + } + + /// + ///The input fields for possible reasons for editing the billing cycle's schedule. + /// + public enum SubscriptionBillingCycleScheduleEditInputScheduleEditReason + { + /// + ///Buyer initiated the schedule edit. + /// + BUYER_INITIATED, + /// + ///Merchant initiated the schedule edit. + /// + MERCHANT_INITIATED, + /// + ///Developer initiated the schedule edit. + /// + DEV_INITIATED, + } + + /// + ///Return type for `subscriptionBillingCycleScheduleEdit` mutation. + /// + public class SubscriptionBillingCycleScheduleEditPayload : GraphQLObject + { + /// + ///The updated billing cycle. + /// + public SubscriptionBillingCycle? billingCycle { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionBillingCycleSkip` mutation. + /// + public class SubscriptionBillingCycleSkipPayload : GraphQLObject + { + /// + ///The updated billing cycle. + /// + public SubscriptionBillingCycle? billingCycle { 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 `SubscriptionBillingCycleSkip`. + /// + public class SubscriptionBillingCycleSkipUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `SubscriptionBillingCycleSkipUserError`. + /// + public enum SubscriptionBillingCycleSkipUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Return type for `subscriptionBillingCycleUnskip` mutation. + /// + public class SubscriptionBillingCycleUnskipPayload : GraphQLObject + { + /// + ///The updated billing cycle. + /// + public SubscriptionBillingCycle? billingCycle { 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 `SubscriptionBillingCycleUnskip`. + /// + public class SubscriptionBillingCycleUnskipUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `SubscriptionBillingCycleUnskipUserError`. + /// + public enum SubscriptionBillingCycleUnskipUserErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///The possible errors for a subscription billing cycle. + /// + public class SubscriptionBillingCycleUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///The set of valid sort keys for the SubscriptionBillingCycles query. + /// + public enum SubscriptionBillingCyclesSortKeys + { + /// + ///Sort by the `cycle_index` value. + /// + CYCLE_INDEX, + /// + ///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, + } + + /// + ///Select subscription billing cycles to be targeted. + /// + public enum SubscriptionBillingCyclesTargetSelection + { + /// + ///Target all current and upcoming subscription billing cycles. + /// + ALL, + } + + /// + ///Represents a Subscription Billing Policy. + /// + public class SubscriptionBillingPolicy : GraphQLObject + { + /// + ///Specific anchor dates upon which the billing interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). + /// + public string? interval { get; set; } + /// + ///The number of billing intervals between invoices. + /// + public int? intervalCount { get; set; } + /// + ///Maximum amount of cycles after which the subscription ends. + /// + public int? maxCycles { get; set; } + /// + ///Minimum amount of cycles required in the subscription. + /// + public int? minCycles { get; set; } + } + + /// + ///Represents a Subscription Contract. + /// + public class SubscriptionContract : GraphQLObject, INode, ISubscriptionContractBase + { + /// + ///The subscription app that the subscription contract is registered to. + /// + public App? app { get; set; } + /// + ///The URL of the subscription contract page on the subscription app. + /// + public string? appAdminUrl { get; set; } + /// + ///The list of billing attempts associated with the subscription contract. + /// + public SubscriptionBillingAttemptConnection? billingAttempts { get; set; } + /// + ///The billing policy associated with the subscription contract. + /// + public SubscriptionBillingPolicy? billingPolicy { get; set; } + /// + ///The date and time when the subscription contract was created. + /// + public DateTime? createdAt { get; set; } + /// + ///The currency that's used for the subscription contract. + /// + public string? currencyCode { get; set; } + /// + ///A list of the custom attributes to be added to the generated orders. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer to whom the subscription contract belongs. + /// + public Customer? customer { get; set; } + /// + ///The customer payment method that's used for the subscription contract. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The delivery method for each billing of the subscription contract. + /// + public ISubscriptionDeliveryMethod? deliveryMethod { get; set; } + /// + ///The delivery policy associated with the subscription contract. + /// + public SubscriptionDeliveryPolicy? deliveryPolicy { get; set; } + /// + ///The delivery price for each billing of the subscription contract. + /// + public MoneyV2? deliveryPrice { get; set; } + /// + ///The list of subscription discounts associated with the subscription contract. + /// + public SubscriptionManualDiscountConnection? discounts { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The last billing error type of the contract. + /// + public string? lastBillingAttemptErrorType { get; set; } + /// + ///The current status of the last payment. + /// + public string? 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), + /// which provide auto-computed billing dates and additional functionalities. + /// + public DateTime? nextBillingDate { get; set; } + /// + ///The note field that will be applied to the generated orders. + /// + public string? note { get; set; } + /// + ///A list of the subscription contract's orders. + /// + public OrderConnection? orders { get; set; } + /// + ///The order from which this contract originated. + /// + public Order? originOrder { get; set; } + /// + ///The revision id of the contract. + /// + public ulong? revisionId { get; set; } + /// + ///The current status of the subscription contract. + /// + public string? status { get; set; } + /// + ///The date and time when the subscription contract was updated. + /// + public DateTime? updatedAt { get; set; } + } + + /// + ///Return type for `subscriptionContractActivate` mutation. + /// + public class SubscriptionContractActivatePayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionContractAtomicCreate` mutation. + /// + public class SubscriptionContractAtomicCreatePayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents subscription contract common fields. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionBillingCycleEditedContract), typeDiscriminator: "SubscriptionBillingCycleEditedContract")] + [JsonDerivedType(typeof(SubscriptionContract), typeDiscriminator: "SubscriptionContract")] + public interface ISubscriptionContractBase : IGraphQLObject + { + public SubscriptionBillingCycleEditedContract? AsSubscriptionBillingCycleEditedContract() => this as SubscriptionBillingCycleEditedContract; + public SubscriptionContract? AsSubscriptionContract() => this as SubscriptionContract; + /// + ///The subscription app that the subscription contract is registered to. + /// + public App? app { get; } + /// + ///The URL of the subscription contract page on the subscription app. + /// + public string? appAdminUrl { get; } + /// + ///The currency that's used for the subscription contract. + /// + public string? currencyCode { get; } + /// + ///A list of the custom attributes to be added to the generated orders. + /// + public IEnumerable? customAttributes { get; } + /// + ///The customer to whom the subscription contract belongs. + /// + public Customer? customer { get; } + /// + ///The customer payment method that's used for the subscription contract. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; } + /// + ///The delivery method for each billing of the subscription contract. + /// + public ISubscriptionDeliveryMethod? deliveryMethod { get; } + /// + ///The delivery price for each billing of the subscription contract. + /// + public MoneyV2? deliveryPrice { get; } + /// + ///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; } + /// + ///A list of the subscription contract's orders. + /// + public OrderConnection? orders { get; } + /// + ///The date and time when the subscription contract was updated. + /// + public DateTime? updatedAt { get; } + } + + /// + ///Return type for `subscriptionContractCancel` mutation. + /// + public class SubscriptionContractCancelPayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionContracts. + /// + public class SubscriptionContractConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionContractEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `subscriptionContractCreate` mutation. + /// + public class SubscriptionContractCreatePayload : GraphQLObject + { + /// + ///The Subscription Contract object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionContract and a cursor during pagination. + /// + public class SubscriptionContractEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionContractEdge. + /// + public SubscriptionContract? node { get; set; } + } + + /// + ///Possible error codes that can be returned by `SubscriptionContractUserError`. + /// + public enum SubscriptionContractErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///Return type for `subscriptionContractExpire` mutation. + /// + public class SubscriptionContractExpirePayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionContractFail` mutation. + /// + public class SubscriptionContractFailPayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///The possible values of the last billing error on a subscription contract. + /// + public enum SubscriptionContractLastBillingErrorType + { + /// + ///Subscription billing attempt error due to payment error. + /// + PAYMENT_ERROR, + /// + ///Subscription billing attempt error due to customer error. + /// + CUSTOMER_ERROR, + /// + ///Subscription billing attempt error due to inventory error. + /// + INVENTORY_ERROR, + /// + ///All other billing attempt errors. + /// + OTHER, + } + + /// + ///The possible status values of the last payment on a subscription contract. + /// + public enum SubscriptionContractLastPaymentStatus + { + /// + ///Successful subscription billing attempt. + /// + SUCCEEDED, + /// + ///Failed subscription billing attempt. + /// + FAILED, + } + + /// + ///Return type for `subscriptionContractPause` mutation. + /// + public class SubscriptionContractPausePayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionContractProductChange` mutation. + /// + public class SubscriptionContractProductChangePayload : GraphQLObject + { + /// + ///The new Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The updated Subscription Line. + /// + public SubscriptionLine? lineUpdated { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionContractSetNextBillingDate` mutation. + /// + public class SubscriptionContractSetNextBillingDatePayload : GraphQLObject + { + /// + ///The updated Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `SubscriptionContractStatusUpdateUserError`. + /// + public enum SubscriptionContractStatusUpdateErrorCode + { + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Subscription contract status cannot be changed once terminated. + /// + CONTRACT_TERMINATED, + } + + /// + ///Represents a subscription contract status update error. + /// + public class SubscriptionContractStatusUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///The possible status values of a subscription. + /// + public enum SubscriptionContractSubscriptionStatus + { + /// + ///The contract is active and continuing per its policies. + /// + ACTIVE, + /// + ///The contract is temporarily paused and is expected to resume in the future. + /// + PAUSED, + /// + ///The contract was ended by an unplanned customer action. + /// + CANCELLED, + /// + ///The contract has ended per the expected circumstances. All billing and deliverycycles of the subscriptions were executed. + /// + EXPIRED, + /// + ///The contract ended because billing failed and no further billing attempts are expected. + /// + FAILED, + } + + /// + ///Return type for `subscriptionContractUpdate` mutation. + /// + public class SubscriptionContractUpdatePayload : GraphQLObject + { + /// + ///The Subscription Contract object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a Subscription Contract error. + /// + public class SubscriptionContractUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Represents a Subscription Line Pricing Cycle Adjustment. + /// + public class SubscriptionCyclePriceAdjustment : GraphQLObject + { + /// + ///Price adjustment type. + /// + public string? adjustmentType { get; set; } + /// + ///Price adjustment value. + /// + public ISellingPlanPricingPolicyAdjustmentValue? adjustmentValue { get; set; } + /// + ///The number of cycles required before this pricing policy applies. + /// + public int? afterCycle { get; set; } + /// + ///The computed price after the adjustments applied. + /// + public MoneyV2? computedPrice { get; set; } + } + + /// + ///Describes the delivery method to use to get the physical goods to the customer. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionDeliveryMethodLocalDelivery), typeDiscriminator: "SubscriptionDeliveryMethodLocalDelivery")] + [JsonDerivedType(typeof(SubscriptionDeliveryMethodPickup), typeDiscriminator: "SubscriptionDeliveryMethodPickup")] + [JsonDerivedType(typeof(SubscriptionDeliveryMethodShipping), typeDiscriminator: "SubscriptionDeliveryMethodShipping")] + public interface ISubscriptionDeliveryMethod : IGraphQLObject + { + public SubscriptionDeliveryMethodLocalDelivery? AsSubscriptionDeliveryMethodLocalDelivery() => this as SubscriptionDeliveryMethodLocalDelivery; + public SubscriptionDeliveryMethodPickup? AsSubscriptionDeliveryMethodPickup() => this as SubscriptionDeliveryMethodPickup; + public SubscriptionDeliveryMethodShipping? AsSubscriptionDeliveryMethodShipping() => this as SubscriptionDeliveryMethodShipping; + } + + /// + ///A subscription delivery method for local delivery. + ///The other subscription delivery methods can be found in the `SubscriptionDeliveryMethod` union type. + /// + public class SubscriptionDeliveryMethodLocalDelivery : GraphQLObject, ISubscriptionDeliveryMethod + { + /// + ///The address to deliver to. + /// + public SubscriptionMailingAddress? address { get; set; } + /// + ///The details of the local delivery method to use. + /// + public SubscriptionDeliveryMethodLocalDeliveryOption? localDeliveryOption { get; set; } + } + + /// + ///The selected delivery option on a subscription contract. + /// + public class SubscriptionDeliveryMethodLocalDeliveryOption : GraphQLObject + { + /// + ///A custom reference to the delivery method for use with automations. + /// + public string? code { get; set; } + /// + ///The details displayed to the customer to describe the local delivery option. + /// + public string? description { get; set; } + /// + ///The delivery instructions that the customer can provide to the merchant. + /// + public string? instructions { get; set; } + /// + ///The phone number that the customer provided to the merchant. + ///Formatted using E.164 standard. For example, `+16135551111`. + /// + public string? phone { get; set; } + /// + ///The presentment title of the local delivery option. + /// + public string? presentmentTitle { get; set; } + /// + ///The title of the local delivery option. + /// + public string? title { get; set; } + } + + /// + ///A delivery method with a pickup option. + /// + public class SubscriptionDeliveryMethodPickup : GraphQLObject, ISubscriptionDeliveryMethod + { + /// + ///The details of the pickup delivery method to use. + /// + public SubscriptionDeliveryMethodPickupOption? pickupOption { get; set; } + } + + /// + ///Represents the selected pickup option on a subscription contract. + /// + public class SubscriptionDeliveryMethodPickupOption : GraphQLObject + { + /// + ///A custom reference to the delivery method for use with automations. + /// + public string? code { get; set; } + /// + ///The details displayed to the customer to describe the pickup option. + /// + public string? description { get; set; } + /// + ///The location where the customer will pickup the merchandise. + /// + public Location? location { get; set; } + /// + ///The presentment title of the pickup option. + /// + public string? presentmentTitle { get; set; } + /// + ///The title of the pickup option. + /// + public string? title { get; set; } + } + + /// + ///Represents a shipping delivery method: a mailing address and a shipping option. + /// + public class SubscriptionDeliveryMethodShipping : GraphQLObject, ISubscriptionDeliveryMethod + { + /// + ///The address to ship to. + /// + public SubscriptionMailingAddress? address { get; set; } + /// + ///The details of the shipping method to use. + /// + public SubscriptionDeliveryMethodShippingOption? shippingOption { get; set; } + } + + /// + ///Represents the selected shipping option on a subscription contract. + /// + public class SubscriptionDeliveryMethodShippingOption : GraphQLObject + { + /// + ///The carrier service that's providing this shipping option. + ///This field isn't currently supported and returns null. + /// + [Obsolete("This field has never been implemented.")] + public DeliveryCarrierService? carrierService { get; set; } + /// + ///The code of the shipping option. + /// + public string? code { get; set; } + /// + ///The description of the shipping option. + /// + public string? description { get; set; } + /// + ///The presentment title of the shipping option. + /// + public string? presentmentTitle { get; set; } + /// + ///The title of the shipping option. + /// + public string? title { get; set; } + } + + /// + ///The delivery option for a subscription contract. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionLocalDeliveryOption), typeDiscriminator: "SubscriptionLocalDeliveryOption")] + [JsonDerivedType(typeof(SubscriptionPickupOption), typeDiscriminator: "SubscriptionPickupOption")] + [JsonDerivedType(typeof(SubscriptionShippingOption), typeDiscriminator: "SubscriptionShippingOption")] + public interface ISubscriptionDeliveryOption : IGraphQLObject + { + public SubscriptionLocalDeliveryOption? AsSubscriptionLocalDeliveryOption() => this as SubscriptionLocalDeliveryOption; + public SubscriptionPickupOption? AsSubscriptionPickupOption() => this as SubscriptionPickupOption; + public SubscriptionShippingOption? AsSubscriptionShippingOption() => this as SubscriptionShippingOption; + /// + ///The code of the local delivery option. + /// + public string? code { get; set; } + /// + ///The description of the local delivery option. + /// + public string? description { get; set; } + /// + ///Whether a phone number is required for the local delivery option. + /// + public bool? phoneRequired { get; set; } + /// + ///The presentment title of the local delivery option. + /// + public string? presentmentTitle { get; set; } + /// + ///The price of the local delivery option. + /// + public MoneyV2? price { get; set; } + /// + ///The title of the local delivery option. + /// + public string? title { get; set; } + } + + /// + ///The result of the query to fetch delivery options for the subscription contract. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionDeliveryOptionResultFailure), typeDiscriminator: "SubscriptionDeliveryOptionResultFailure")] + [JsonDerivedType(typeof(SubscriptionDeliveryOptionResultSuccess), typeDiscriminator: "SubscriptionDeliveryOptionResultSuccess")] + public interface ISubscriptionDeliveryOptionResult : IGraphQLObject + { + public SubscriptionDeliveryOptionResultFailure? AsSubscriptionDeliveryOptionResultFailure() => this as SubscriptionDeliveryOptionResultFailure; + public SubscriptionDeliveryOptionResultSuccess? AsSubscriptionDeliveryOptionResultSuccess() => this as SubscriptionDeliveryOptionResultSuccess; + } + + /// + ///A failure to find the available delivery options for a subscription contract. + /// + public class SubscriptionDeliveryOptionResultFailure : GraphQLObject, ISubscriptionDeliveryOptionResult + { + /// + ///The reason for the failure. + /// + public string? message { get; set; } + } + + /// + ///The delivery option for a subscription contract. + /// + public class SubscriptionDeliveryOptionResultSuccess : GraphQLObject, ISubscriptionDeliveryOptionResult + { + /// + ///The available delivery options. + /// + public IEnumerable? deliveryOptions { get; set; } + } + + /// + ///Represents a Subscription Delivery Policy. + /// + public class SubscriptionDeliveryPolicy : GraphQLObject + { + /// + ///The specific anchor dates upon which the delivery interval calculations should be made. + /// + public IEnumerable? anchors { get; set; } + /// + ///The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). + /// + public string? interval { get; set; } + /// + ///The number of delivery intervals between deliveries. + /// + public int? intervalCount { get; set; } + } + + /// + ///Subscription draft discount types. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionAppliedCodeDiscount), typeDiscriminator: "SubscriptionAppliedCodeDiscount")] + [JsonDerivedType(typeof(SubscriptionManualDiscount), typeDiscriminator: "SubscriptionManualDiscount")] + public interface ISubscriptionDiscount : IGraphQLObject + { + public SubscriptionAppliedCodeDiscount? AsSubscriptionAppliedCodeDiscount() => this as SubscriptionAppliedCodeDiscount; + public SubscriptionManualDiscount? AsSubscriptionManualDiscount() => this as SubscriptionManualDiscount; + /// + ///The unique ID. + /// + public string? id { get; set; } + /// + ///The reason that the discount on the subscription draft is rejected. + /// + public string? rejectionReason { get; set; } + } + + /// + ///Represents what a particular discount reduces from a line price. + /// + public class SubscriptionDiscountAllocation : GraphQLObject + { + /// + ///Allocation amount. + /// + public MoneyV2? amount { get; set; } + /// + ///Discount that created the allocation. + /// + public ISubscriptionDiscount? discount { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionDiscounts. + /// + public class SubscriptionDiscountConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionDiscountEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionDiscount and a cursor during pagination. + /// + public class SubscriptionDiscountEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionDiscountEdge. + /// + public ISubscriptionDiscount? node { get; set; } + } + + /// + ///Represents the subscription lines the discount applies on. + /// + public class SubscriptionDiscountEntitledLines : GraphQLObject + { + /// + ///Specify whether the subscription discount will apply on all subscription lines. + /// + public bool? all { get; set; } + /// + ///The list of subscription lines associated with the subscription discount. + /// + public SubscriptionLineConnection? lines { get; set; } + } + + /// + ///The value of the discount and how it will be applied. + /// + public class SubscriptionDiscountFixedAmountValue : GraphQLObject, ISubscriptionDiscountValue + { + /// + ///The fixed amount value of the discount. + /// + public MoneyV2? amount { get; set; } + /// + ///Whether the amount is applied per item. + /// + public bool? appliesOnEachItem { get; set; } + } + + /// + ///The percentage value of the discount. + /// + public class SubscriptionDiscountPercentageValue : GraphQLObject, ISubscriptionDiscountValue + { + /// + ///The percentage value of the discount. + /// + public int? percentage { get; set; } + } + + /// + ///The reason a discount on a subscription draft was rejected. + /// + public enum SubscriptionDiscountRejectionReason + { + /// + ///Discount code is not found. + /// + NOT_FOUND, + /// + ///Discount does not apply to any of the given line items. + /// + NO_ENTITLED_LINE_ITEMS, + /// + ///Quantity of items does not qualify for the discount. + /// + QUANTITY_NOT_IN_RANGE, + /// + ///Purchase amount of items does not qualify for the discount. + /// + PURCHASE_NOT_IN_RANGE, + /// + ///Given customer does not qualify for the discount. + /// + CUSTOMER_NOT_ELIGIBLE, + /// + ///Discount usage limit has been reached. + /// + USAGE_LIMIT_REACHED, + /// + ///Customer usage limit has been reached. + /// + CUSTOMER_USAGE_LIMIT_REACHED, + /// + ///Discount is inactive. + /// + CURRENTLY_INACTIVE, + /// + ///No applicable shipping lines. + /// + NO_ENTITLED_SHIPPING_LINES, + /// + ///Purchase type does not qualify for the discount. + /// + INCOMPATIBLE_PURCHASE_TYPE, + /// + ///Internal error during discount code validation. + /// + INTERNAL_ERROR, + } + + /// + ///The value of the discount and how it will be applied. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionDiscountFixedAmountValue), typeDiscriminator: "SubscriptionDiscountFixedAmountValue")] + [JsonDerivedType(typeof(SubscriptionDiscountPercentageValue), typeDiscriminator: "SubscriptionDiscountPercentageValue")] + public interface ISubscriptionDiscountValue : IGraphQLObject + { + public SubscriptionDiscountFixedAmountValue? AsSubscriptionDiscountFixedAmountValue() => this as SubscriptionDiscountFixedAmountValue; + public SubscriptionDiscountPercentageValue? AsSubscriptionDiscountPercentageValue() => this as SubscriptionDiscountPercentageValue; + } + + /// + ///Represents a Subscription Draft. + /// + public class SubscriptionDraft : GraphQLObject, INode + { + /// + ///The billing cycle that the subscription contract will be associated with. + /// + public SubscriptionBillingCycle? billingCycle { get; set; } + /// + ///The billing policy for the subscription contract. + /// + public SubscriptionBillingPolicy? billingPolicy { get; set; } + /// + ///The billing cycles of the contracts that will be concatenated to the subscription contract. + /// + public SubscriptionBillingCycleConnection? concatenatedBillingCycles { get; set; } + /// + ///The currency used for the subscription contract. + /// + public string? currencyCode { get; set; } + /// + ///A list of the custom attributes to be added to the generated orders. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///The customer to whom the subscription contract belongs. + /// + public Customer? customer { get; set; } + /// + ///The customer payment method used for the subscription contract. + /// + public CustomerPaymentMethod? customerPaymentMethod { get; set; } + /// + ///The delivery method for each billing of the subscription contract. + /// + public ISubscriptionDeliveryMethod? deliveryMethod { get; set; } + /// + ///The available delivery options for a given delivery address. Returns `null` for pending requests. + /// + public ISubscriptionDeliveryOptionResult? deliveryOptions { get; set; } + /// + ///The delivery policy for the subscription contract. + /// + public SubscriptionDeliveryPolicy? deliveryPolicy { get; set; } + /// + ///The delivery price for each billing the subscription contract. + /// + public MoneyV2? deliveryPrice { get; set; } + /// + ///The list of subscription discounts which will be associated with the subscription contract. + /// + public SubscriptionDiscountConnection? discounts { get; set; } + /// + ///The list of subscription discounts to be added to the subscription contract. + /// + public SubscriptionDiscountConnection? discountsAdded { get; set; } + /// + ///The list of subscription discounts to be removed from the subscription contract. + /// + public SubscriptionDiscountConnection? discountsRemoved { get; set; } + /// + ///The list of subscription discounts to be updated on the subscription contract. + /// + public SubscriptionDiscountConnection? discountsUpdated { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The list of subscription lines which will be associated with the subscription contract. + /// + public SubscriptionLineConnection? lines { get; set; } + /// + ///The list of subscription lines to be added to the subscription contract. + /// + public SubscriptionLineConnection? linesAdded { get; set; } + /// + ///The list of subscription lines to be removed from the subscription contract. + /// + public SubscriptionLineConnection? linesRemoved { get; set; } + /// + ///The next billing date for the subscription contract. + /// + public DateTime? nextBillingDate { get; set; } + /// + ///The note field that will be applied to the generated orders. + /// + public string? note { get; set; } + /// + ///The original subscription contract. + /// + public SubscriptionContract? originalContract { get; set; } + + /// + ///Available Shipping Options for a given delivery address. Returns NULL for pending requests. + /// + [Obsolete("Use `deliveryOptions` instead.")] + public ISubscriptionShippingOptionResult? shippingOptions { get; set; } + /// + ///The current status of the subscription contract. + /// + public string? status { get; set; } + } + + /// + ///Return type for `subscriptionDraftCommit` mutation. + /// + public class SubscriptionDraftCommitPayload : GraphQLObject + { + /// + ///The updated Subscription Contract object. + /// + public SubscriptionContract? contract { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftDiscountAdd` mutation. + /// + public class SubscriptionDraftDiscountAddPayload : GraphQLObject + { + /// + ///The added Subscription Discount. + /// + public SubscriptionManualDiscount? discountAdded { get; set; } + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftDiscountCodeApply` mutation. + /// + public class SubscriptionDraftDiscountCodeApplyPayload : GraphQLObject + { + /// + ///The added subscription discount. + /// + public SubscriptionAppliedCodeDiscount? appliedDiscount { get; set; } + /// + ///The subscription contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftDiscountRemove` mutation. + /// + public class SubscriptionDraftDiscountRemovePayload : GraphQLObject + { + /// + ///The removed subscription draft discount. + /// + public ISubscriptionDiscount? discountRemoved { get; set; } + /// + ///The subscription contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftDiscountUpdate` mutation. + /// + public class SubscriptionDraftDiscountUpdatePayload : GraphQLObject + { + /// + ///The updated Subscription Discount. + /// + public SubscriptionManualDiscount? discountUpdated { get; set; } + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `SubscriptionDraftUserError`. + /// + public enum SubscriptionDraftErrorCode + { + /// + ///This line has already been removed. + /// + ALREADY_REMOVED, + /// + ///Input value is not present. + /// + PRESENCE, + /// + ///Subscription draft has been already committed. + /// + COMMITTED, + /// + ///Value is not in range. + /// + NOT_IN_RANGE, + /// + ///The value is not an integer. + /// + NOT_AN_INTEGER, + /// + ///The maximum number of cycles must be greater than the minimum. + /// + SELLING_PLAN_MAX_CYCLES_MUST_BE_GREATER_THAN_MIN_CYCLES, + /// + ///The delivery policy interval must be a multiple of the billing policy interval. + /// + DELIVERY_MUST_BE_MULTIPLE_OF_BILLING, + /// + ///Next billing date is invalid. + /// + INVALID_BILLING_DATE, + /// + ///Note length is too long. + /// + INVALID_NOTE_LENGTH, + /// + ///Must have at least one line. + /// + INVALID_LINES, + /// + ///Discount must have at least one entitled line. + /// + NO_ENTITLED_LINES, + /// + ///The customer doesn't exist. + /// + CUSTOMER_DOES_NOT_EXIST, + /// + ///The payment method customer must be the same as the contract customer. + /// + CUSTOMER_MISMATCH, + /// + ///The delivery method can't be blank if any lines require shipping. + /// + DELIVERY_METHOD_REQUIRED, + /// + ///The local delivery options must be set for local delivery. + /// + MISSING_LOCAL_DELIVERY_OPTIONS, + /// + ///The after cycle attribute must be unique between cycle discounts. + /// + CYCLE_DISCOUNTS_UNIQUE_AFTER_CYCLE, + /// + ///The adjustment value must the same type as the adjustment type. + /// + INVALID_ADJUSTMENT_TYPE, + /// + ///The adjustment value must be either fixed_value or percentage. + /// + INVALID_ADJUSTMENT_VALUE, + /// + ///Another operation updated the contract concurrently as the commit was in progress. + /// + STALE_CONTRACT, + /// + ///Currency is not enabled. + /// + CURRENCY_NOT_ENABLED, + /// + ///Cannot update a subscription contract with a current or upcoming billing cycle contract edit. + /// + HAS_FUTURE_EDITS, + /// + ///Cannot commit a billing cycle contract draft with this mutation. Please use SubscriptionBillingCycleContractDraftCommit. + /// + BILLING_CYCLE_PRESENT, + /// + ///Cannot commit a contract draft with this mutation. Please use SubscriptionDraftCommit. + /// + BILLING_CYCLE_ABSENT, + /// + ///Delivery policy cannot be updated for billing cycle contract drafts. + /// + BILLING_CYCLE_CONTRACT_DRAFT_DELIVERY_POLICY_INVALID, + /// + ///Billing policy cannot be updated for billing cycle contract drafts. + /// + BILLING_CYCLE_CONTRACT_DRAFT_BILLING_POLICY_INVALID, + /// + ///Contract draft must be a billing cycle contract draft for contract concatenation. + /// + CONCATENATION_BILLING_CYCLE_CONTRACT_DRAFT_REQUIRED, + /// + ///Concatenated contracts cannot contain duplicate subscription contracts. + /// + DUPLICATE_CONCATENATED_CONTRACTS, + /// + ///Billing cycle selector cannot select upcoming billing cycle past limit. + /// + UPCOMING_CYCLE_LIMIT_EXCEEDED, + /// + ///Billing cycle selector cannot select billing cycle outside of index range. + /// + CYCLE_INDEX_OUT_OF_RANGE, + /// + ///Billing cycle selector cannot select billing cycle outside of start date range. + /// + CYCLE_START_DATE_OUT_OF_RANGE, + /// + ///Billing cycle selector requires exactly one of index or date to be provided. + /// + CYCLE_SELECTOR_VALIDATE_ONE_OF, + /// + ///Maximum number of concatenated contracts on a billing cycle contract draft exceeded. + /// + EXCEEDED_MAX_CONCATENATED_CONTRACTS, + /// + ///Customer is scheduled for redaction or has been redacted. + /// + CUSTOMER_REDACTED, + /// + ///Customer payment method is required. + /// + MISSING_CUSTOMER_PAYMENT_METHOD, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value should be greater than the minimum allowed value. + /// + GREATER_THAN, + /// + ///The input value should be greater than or equal to the minimum value allowed. + /// + GREATER_THAN_OR_EQUAL_TO, + /// + ///The input value should be less than the maximum value allowed. + /// + LESS_THAN, + /// + ///The input value should be less than or equal to the maximum value allowed. + /// + LESS_THAN_OR_EQUAL_TO, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + } + + /// + ///Return type for `subscriptionDraftFreeShippingDiscountAdd` mutation. + /// + public class SubscriptionDraftFreeShippingDiscountAddPayload : GraphQLObject + { + /// + ///The added subscription free shipping discount. + /// + public SubscriptionManualDiscount? discountAdded { get; set; } + /// + ///The subscription contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftFreeShippingDiscountUpdate` mutation. + /// + public class SubscriptionDraftFreeShippingDiscountUpdatePayload : GraphQLObject + { + /// + ///The updated Subscription Discount. + /// + public SubscriptionManualDiscount? discountUpdated { get; set; } + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftLineAdd` mutation. + /// + public class SubscriptionDraftLineAddPayload : GraphQLObject + { + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The added Subscription Line. + /// + public SubscriptionLine? lineAdded { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftLineRemove` mutation. + /// + public class SubscriptionDraftLineRemovePayload : GraphQLObject + { + /// + ///The list of updated subscription discounts impacted by the removed line. + /// + public IEnumerable? discountsUpdated { get; set; } + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The removed Subscription Line. + /// + public SubscriptionLine? lineRemoved { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftLineUpdate` mutation. + /// + public class SubscriptionDraftLineUpdatePayload : GraphQLObject + { + /// + ///The Subscription Contract draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The updated Subscription Line. + /// + public SubscriptionLine? lineUpdated { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `subscriptionDraftUpdate` mutation. + /// + public class SubscriptionDraftUpdatePayload : GraphQLObject + { + /// + ///The Subscription Draft object. + /// + public SubscriptionDraft? draft { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a Subscription Draft error. + /// + public class SubscriptionDraftUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Represents a Subscription Line. + /// + public class SubscriptionLine : GraphQLObject + { + /// + ///The price per unit for the subscription line in the contract's currency. + /// + public MoneyV2? currentPrice { get; set; } + /// + ///List of custom attributes associated to the line item. + /// + public IEnumerable? customAttributes { get; set; } + /// + ///Discount allocations. + /// + public IEnumerable? discountAllocations { get; set; } + /// + ///The unique ID. + /// + public string? id { get; set; } + /// + ///Total line price including all discounts. + /// + public MoneyV2? lineDiscountedPrice { get; set; } + /// + ///Describe the price changes of the line over time. + /// + public SubscriptionPricingPolicy? pricingPolicy { get; set; } + /// + ///The product ID associated with the subscription line. + /// + public string? productId { get; set; } + /// + ///The quantity of the unit selected for the subscription line. + /// + public int? quantity { get; set; } + /// + ///Whether physical shipping is required for the variant. + /// + public bool? requiresShipping { get; set; } + /// + ///The selling plan ID associated to the line. + /// + ///Indicates which selling plan was used to create this + ///contract line initially. The selling plan ID is also used to + ///find the associated delivery profile. + /// + ///The subscription contract, subscription line, or selling plan might have + ///changed. As a result, the selling plan's attributes might not + ///match the information on the contract. + /// + public string? sellingPlanId { get; set; } + /// + ///The selling plan name associated to the line. This name describes + ///the order line items created from this subscription line + ///for both merchants and customers. + /// + ///The value can be different from the selling plan's name, because both + ///the selling plan's name and the subscription line's selling_plan_name + ///attribute can be updated independently. + /// + public string? sellingPlanName { get; set; } + /// + ///Variant SKU number of the item associated with the subscription line. + /// + public string? sku { get; set; } + /// + ///Whether the variant is taxable. + /// + public bool? taxable { get; set; } + /// + ///Product title of the item associated with the subscription line. + /// + public string? title { get; set; } + /// + ///The product variant ID associated with the subscription line. + /// + public string? variantId { get; set; } + /// + ///The image associated with the line item's variant or product. + /// + public Image? variantImage { get; set; } + /// + ///Product variant title of the item associated with the subscription line. + /// + public string? variantTitle { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionLines. + /// + public class SubscriptionLineConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionLineEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionLine and a cursor during pagination. + /// + public class SubscriptionLineEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionLineEdge. + /// + public SubscriptionLine? node { get; set; } + } + + /// + ///A local delivery option for a subscription contract. + /// + public class SubscriptionLocalDeliveryOption : GraphQLObject, ISubscriptionDeliveryOption + { + /// + ///The code of the local delivery option. + /// + public string? code { get; set; } + /// + ///The description of the local delivery option. + /// + public string? description { get; set; } + /// + ///Whether a phone number is required for the local delivery option. + /// + public bool? phoneRequired { get; set; } + /// + ///The presentment title of the local delivery option. + /// + public string? presentmentTitle { get; set; } + /// + ///The price of the local delivery option. + /// + public MoneyV2? price { get; set; } + /// + ///The title of the local delivery option. + /// + public string? title { get; set; } + } + + /// + ///Represents a Mailing Address on a Subscription. + /// + public class SubscriptionMailingAddress : GraphQLObject + { + /// + ///The first line of the address. Typically the street address or PO Box number. + /// + public string? address1 { get; set; } + /// + ///The second line of the address. Typically the number of the apartment, suite, or unit. + /// + public string? address2 { get; set; } + /// + ///The name of the city, district, village, or town. + /// + public string? city { get; set; } + /// + ///The name of the customer's company or organization. + /// + public string? company { get; set; } + /// + ///The name of the country. + /// + public string? country { get; set; } + /// + ///The two-letter code for the country of the address. + /// + ///For example, US. + /// + public string? countryCode { get; set; } + /// + ///The first name of the customer. + /// + public string? firstName { get; set; } + /// + ///The last name of the customer. + /// + public string? lastName { get; set; } + /// + ///The full name of the customer, based on firstName and lastName. + /// + public string? name { get; set; } + /// + ///A unique phone number for the customer. Formatted using E.164 standard. For example, _+16135551111_. + /// + public string? phone { get; set; } + /// + ///The region of the address, such as the province, state, or district. + /// + public string? province { get; set; } + /// + ///The alphanumeric code for the region. + /// + ///For example, ON. + /// + public string? provinceCode { get; set; } + /// + ///The zip or postal code of the address. + /// + public string? zip { get; set; } + } + + /// + ///Custom subscription discount. + /// + public class SubscriptionManualDiscount : GraphQLObject, ISubscriptionDiscount + { + /// + ///Entitled line items used to apply the subscription discount on. + /// + public SubscriptionDiscountEntitledLines? entitledLines { get; set; } + /// + ///The unique ID. + /// + public string? id { get; set; } + /// + ///The maximum number of times the subscription discount will be applied on orders. + /// + public int? recurringCycleLimit { get; set; } + /// + ///The reason that the discount on the subscription draft is rejected. + /// + public string? rejectionReason { get; set; } + /// + ///Type of line the discount applies on. + /// + public string? targetType { get; set; } + /// + ///The title associated with the subscription discount. + /// + public string? title { get; set; } + /// + ///The type of the subscription discount. + /// + public string? type { get; set; } + /// + ///The number of times the discount was applied. + /// + public int? usageCount { get; set; } + /// + ///The value of the subscription discount. + /// + public ISubscriptionDiscountValue? value { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple SubscriptionManualDiscounts. + /// + public class SubscriptionManualDiscountConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in SubscriptionManualDiscountEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one SubscriptionManualDiscount and a cursor during pagination. + /// + public class SubscriptionManualDiscountEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of SubscriptionManualDiscountEdge. + /// + public SubscriptionManualDiscount? node { get; set; } + } + + /// + ///A pickup option to deliver a subscription contract. + /// + public class SubscriptionPickupOption : GraphQLObject, ISubscriptionDeliveryOption + { + /// + ///The code of the pickup option. + /// + public string? code { get; set; } + /// + ///The description of the pickup option. + /// + public string? description { get; set; } + /// + ///The pickup location. + /// + public Location? location { get; set; } + /// + ///Whether a phone number is required for the pickup option. + /// + public bool? phoneRequired { get; set; } + /// + ///The estimated amount of time it takes for the pickup to be ready. For example, "Usually ready in 24 hours".). + /// + public string? pickupTime { get; set; } + /// + ///The presentment title of the pickup option. + /// + public string? presentmentTitle { get; set; } + /// + ///The price of the pickup option. + /// + public MoneyV2? price { get; set; } + /// + ///The title of the pickup option. + /// + public string? title { get; set; } + } + + /// + ///Represents a Subscription Line Pricing Policy. + /// + public class SubscriptionPricingPolicy : GraphQLObject + { + /// + ///The base price per unit for the subscription line in the contract's currency. + /// + public MoneyV2? basePrice { get; set; } + /// + ///The adjustments per cycle for the subscription line. + /// + public IEnumerable? cycleDiscounts { get; set; } + } + + /// + ///A shipping option to deliver a subscription contract. + /// + public class SubscriptionShippingOption : GraphQLObject, ISubscriptionDeliveryOption + { + /// + ///The carrier service that's providing this shipping option. + ///This field isn't currently supported and returns null. + /// + [Obsolete("This field has never been implemented.")] + public DeliveryCarrierService? carrierService { get; set; } + /// + ///The code of the shipping option. + /// + public string? code { get; set; } + /// + ///The description of the shipping option. + /// + public string? description { get; set; } + /// + ///If a phone number is required for the shipping option. + /// + public bool? phoneRequired { get; set; } + /// + ///The presentment title of the shipping option. + /// + public string? presentmentTitle { get; set; } + /// + ///The price of the shipping option. + /// + public MoneyV2? price { get; set; } + /// + ///The title of the shipping option. + /// + public string? title { get; set; } + } + + /// + ///The result of the query to fetch shipping options for the subscription contract. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(SubscriptionShippingOptionResultFailure), typeDiscriminator: "SubscriptionShippingOptionResultFailure")] + [JsonDerivedType(typeof(SubscriptionShippingOptionResultSuccess), typeDiscriminator: "SubscriptionShippingOptionResultSuccess")] + public interface ISubscriptionShippingOptionResult : IGraphQLObject + { + public SubscriptionShippingOptionResultFailure? AsSubscriptionShippingOptionResultFailure() => this as SubscriptionShippingOptionResultFailure; + public SubscriptionShippingOptionResultSuccess? AsSubscriptionShippingOptionResultSuccess() => this as SubscriptionShippingOptionResultSuccess; + } + + /// + ///Failure determining available shipping options for delivery of a subscription contract. + /// + public class SubscriptionShippingOptionResultFailure : GraphQLObject, ISubscriptionShippingOptionResult + { + /// + ///Failure reason. + /// + public string? message { get; set; } + } + + /// + ///A shipping option for delivery of a subscription contract. + /// + public class SubscriptionShippingOptionResultSuccess : GraphQLObject, ISubscriptionShippingOptionResult + { + /// + ///Available shipping options. + /// + public IEnumerable? shippingOptions { get; set; } + } + + /// + ///A suggested transaction. Suggested transaction are usually used in the context of refunds + ///and exchanges. + /// + public class SuggestedOrderTransaction : GraphQLObject + { + /// + ///The masked account number associated with the payment method. + /// + public string? accountNumber { get; set; } + + /// + ///The amount of the transaction. + /// + [Obsolete("Use `amountSet` instead.")] + public decimal? amount { get; set; } + /// + ///The amount and currency of the suggested order transaction in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///The human-readable payment gateway name suggested to process the transaction. + /// + public string? formattedGateway { get; set; } + /// + ///The suggested payment gateway used to process the transaction. + /// + public string? gateway { get; set; } + /// + ///Specifies the kind of the suggested order transaction. + /// + public string? kind { get; set; } + + /// + ///Specifies the available amount to refund on the gateway. Only available within SuggestedRefund. + /// + [Obsolete("Use `maximumRefundableSet` instead.")] + public decimal? maximumRefundable { get; set; } + /// + ///Specifies the available amount to refund on the gateway in shop and presentment currencies. Only available within SuggestedRefund. + /// + public MoneyBag? maximumRefundableSet { get; set; } + /// + ///The associated parent transaction, for example the authorization of a capture. + /// + public OrderTransaction? parentTransaction { get; set; } + /// + ///The associated payment details related to the transaction. + /// + public IPaymentDetails? paymentDetails { get; set; } + } + + /// + ///Specifies the kind of the suggested order transaction. + /// + public enum SuggestedOrderTransactionKind + { + /// + ///A suggested refund transaction for an order. + /// + SUGGESTED_REFUND, + } + + /// + ///Represents a refund suggested by Shopify based on the items being reimbursed. You can then use the suggested refund object to generate an actual refund. + /// + public class SuggestedRefund : GraphQLObject + { + /// + ///The total monetary value to be refunded. + /// + [Obsolete("Use `amountSet` instead.")] + public decimal? amount { get; set; } + /// + ///The total monetary value to be refunded in shop and presentment currencies. + /// + public MoneyBag? amountSet { get; set; } + /// + ///The sum of all the discounted prices of the line items being refunded. + /// + public MoneyBag? discountedSubtotalSet { get; set; } + + /// + ///The total monetary value available to refund. + /// + [Obsolete("Use `maximumRefundableSet` instead.")] + public decimal? maximumRefundable { get; set; } + /// + ///The total monetary value available to refund in shop and presentment currencies. + /// + public MoneyBag? maximumRefundableSet { get; set; } + /// + ///A list of duties to be refunded from the order. + /// + public IEnumerable? refundDuties { get; set; } + /// + ///A list of line items to be refunded, along with restock instructions. + /// + public IEnumerable? refundLineItems { get; set; } + /// + ///The shipping costs to be refunded from the order. + /// + public ShippingRefund? shipping { get; set; } + + /// + ///The sum of all the prices of the line items being refunded. + /// + [Obsolete("Use `subtotalSet` instead.")] + public decimal? subtotal { get; set; } + /// + ///The sum of all the prices of the line items being refunded in shop and presentment currencies. + /// + public MoneyBag? subtotalSet { get; set; } + /// + ///A list of suggested order transactions. + /// + public IEnumerable? suggestedTransactions { get; set; } + /// + ///The total cart discount amount that was applied to all line items in this refund. + /// + public MoneyBag? totalCartDiscountAmountSet { get; set; } + /// + ///The sum of all the duties being refunded from the order in shop and presentment currencies. The value must be positive. + /// + public MoneyBag? totalDutiesSet { get; set; } + /// + ///The sum of the taxes being refunded from the order in shop and presentment currencies. The value must be positive. + /// + public MoneyBag? totalTaxSet { get; set; } + + /// + ///The sum of the taxes being refunded from the order. The value must be positive. + /// + [Obsolete("Use `totalTaxSet` instead.")] + public decimal? totalTaxes { get; set; } + } + + /// + ///Represents a return refund suggested by Shopify based on the items being reimbursed. You can then use the suggested refund object to generate an actual refund for the return. + /// + public class SuggestedReturnRefund : GraphQLObject + { + /// + ///The total monetary value to be refunded in shop and presentment currencies. + /// + public MoneyBag? amount { get; set; } + /// + ///The sum of all the discounted prices of the line items being refunded. + /// + public MoneyBag? discountedSubtotal { get; set; } + /// + ///The total monetary value available to refund in shop and presentment currencies. + /// + public MoneyBag? maximumRefundable { get; set; } + /// + ///A list of duties to be refunded from the order. + /// + public IEnumerable? refundDuties { get; set; } + /// + ///The shipping costs to be refunded from the order. + /// + public ShippingRefund? shipping { get; set; } + /// + ///The sum of all the prices of the line items being refunded in shop and presentment currencies. + /// + public MoneyBag? subtotal { get; set; } + /// + ///A list of suggested order transactions. + /// + public IEnumerable? suggestedTransactions { get; set; } + /// + ///The total cart discount amount that was applied to all line items in this refund. + /// + public MoneyBag? totalCartDiscountAmount { get; set; } + /// + ///The sum of all the duties being refunded from the order in shop and presentment currencies. The value must be positive. + /// + public MoneyBag? totalDuties { get; set; } + /// + ///The sum of the taxes being refunded in shop and presentment currencies. The value must be positive. + /// + public MoneyBag? totalTax { get; set; } + } + + /// + ///Return type for `tagsAdd` mutation. + /// + public class TagsAddPayload : GraphQLObject + { + /// + ///The object that was updated. + /// + public INode? node { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `tagsRemove` mutation. + /// + public class TagsRemovePayload : GraphQLObject + { + /// + ///The object that was updated. + /// + public INode? node { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Tax app configuration of a merchant. + /// + public class TaxAppConfiguration : GraphQLObject + { + /// + ///State of the tax app configuration. + /// + public string? state { get; set; } + } + + /// + ///Return type for `taxAppConfigure` mutation. + /// + public class TaxAppConfigurePayload : GraphQLObject + { + /// + ///The updated tax app configuration. + /// + public TaxAppConfiguration? taxAppConfiguration { 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 `TaxAppConfigure`. + /// + public class TaxAppConfigureUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `TaxAppConfigureUserError`. + /// + public enum TaxAppConfigureUserErrorCode + { + /// + ///Unable to find the tax partner record. + /// + TAX_PARTNER_NOT_FOUND, + /// + ///Unable to update tax partner state. + /// + TAX_PARTNER_STATE_UPDATE_FAILED, + /// + ///Unable to update already active tax partner. + /// + TAX_PARTNER_ALREADY_ACTIVE, + } + + /// + ///Available customer tax exemptions. + /// + public enum TaxExemption + { + /// + ///This customer is exempt from specific taxes for holding a valid STATUS_CARD_EXEMPTION in Canada. + /// + CA_STATUS_CARD_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in British Columbia. + /// + CA_BC_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Manitoba. + /// + CA_MB_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Saskatchewan. + /// + CA_SK_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid DIPLOMAT_EXEMPTION in Canada. + /// + CA_DIPLOMAT_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in British Columbia. + /// + CA_BC_COMMERCIAL_FISHERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Manitoba. + /// + CA_MB_COMMERCIAL_FISHERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Nova Scotia. + /// + CA_NS_COMMERCIAL_FISHERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Prince Edward Island. + /// + CA_PE_COMMERCIAL_FISHERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Saskatchewan. + /// + CA_SK_COMMERCIAL_FISHERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in British Columbia. + /// + CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in Saskatchewan. + /// + CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in British Columbia. + /// + CA_BC_SUB_CONTRACTOR_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in Saskatchewan. + /// + CA_SK_SUB_CONTRACTOR_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in British Columbia. + /// + CA_BC_CONTRACTOR_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in Saskatchewan. + /// + CA_SK_CONTRACTOR_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid PURCHASE_EXEMPTION in Ontario. + /// + CA_ON_PURCHASE_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Manitoba. + /// + CA_MB_FARMER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Nova Scotia. + /// + CA_NS_FARMER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Saskatchewan. + /// + CA_SK_FARMER_EXEMPTION, + /// + ///This customer is exempt from VAT for purchases within the EU that is shipping from outside of customer's country. + /// + EU_REVERSE_CHARGE_EXEMPTION_RULE, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Alabama. + /// + US_AL_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Alaska. + /// + US_AK_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Arizona. + /// + US_AZ_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Arkansas. + /// + US_AR_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in California. + /// + US_CA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Colorado. + /// + US_CO_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Connecticut. + /// + US_CT_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Delaware. + /// + US_DE_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Florida. + /// + US_FL_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Georgia. + /// + US_GA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Hawaii. + /// + US_HI_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Idaho. + /// + US_ID_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Illinois. + /// + US_IL_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Indiana. + /// + US_IN_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Iowa. + /// + US_IA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Kansas. + /// + US_KS_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Kentucky. + /// + US_KY_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Louisiana. + /// + US_LA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Maine. + /// + US_ME_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Maryland. + /// + US_MD_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Massachusetts. + /// + US_MA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Michigan. + /// + US_MI_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Minnesota. + /// + US_MN_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Mississippi. + /// + US_MS_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Missouri. + /// + US_MO_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Montana. + /// + US_MT_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Nebraska. + /// + US_NE_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Nevada. + /// + US_NV_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Hampshire. + /// + US_NH_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Jersey. + /// + US_NJ_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Mexico. + /// + US_NM_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New York. + /// + US_NY_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in North Carolina. + /// + US_NC_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in North Dakota. + /// + US_ND_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Ohio. + /// + US_OH_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Oklahoma. + /// + US_OK_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Oregon. + /// + US_OR_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Pennsylvania. + /// + US_PA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Rhode Island. + /// + US_RI_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in South Carolina. + /// + US_SC_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in South Dakota. + /// + US_SD_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Tennessee. + /// + US_TN_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Texas. + /// + US_TX_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Utah. + /// + US_UT_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Vermont. + /// + US_VT_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Virginia. + /// + US_VA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Washington. + /// + US_WA_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in West Virginia. + /// + US_WV_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Wisconsin. + /// + US_WI_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Wyoming. + /// + US_WY_RESELLER_EXEMPTION, + /// + ///This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Washington DC. + /// + US_DC_RESELLER_EXEMPTION, + } + + /// + ///Represents a single tax applied to the associated line item. + /// + public class TaxLine : GraphQLObject + { + /// + ///Whether the channel that submitted the tax line is liable for remitting. A value of null indicates unknown liability for this tax line. + /// + public bool? channelLiable { get; set; } + + /// + ///The amount of tax, in shop currency, after discounts and before returns. + /// + [Obsolete("Use `priceSet` instead.")] + public decimal? price { get; set; } + /// + ///The amount of tax, in shop and presentment currencies, after discounts and before returns. + /// + public MoneyBag? priceSet { get; set; } + /// + ///The proportion of the line item price that the tax represents as a decimal. + /// + public decimal? rate { get; set; } + /// + ///The proportion of the line item price that the tax represents as a percentage. + /// + public decimal? ratePercentage { get; set; } + /// + ///The source of the tax. + /// + public string? source { get; set; } + /// + ///The name of the tax. + /// + public string? title { get; set; } + } + + /// + ///State of the tax app configuration. + /// + public enum TaxPartnerState + { + /// + ///App is not configured. + /// + PENDING, + /// + ///App is configured, but not used for tax calculations. + /// + READY, + /// + ///App is configured and to be used for tax calculations. + /// + 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://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17). + /// + 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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in TaxonomyCategoryAttributeEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyCategoryAttribute and a cursor during pagination. + /// + public class TaxonomyCategoryAttributeEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in TaxonomyCategoryEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyCategory and a cursor during pagination. + /// + public class TaxonomyCategoryEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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, IMetafieldReference + { + /// + ///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 + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in TaxonomyValueEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TaxonomyValue and a cursor during pagination. + /// + public class TaxonomyValueEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + 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 + ///for reconciling a shop's cash flow. A TenderTransaction is immutable once created. + /// + public class TenderTransaction : GraphQLObject, INode + { + /// + ///The amount and currency of the tender transaction. + /// + public MoneyV2? amount { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The order that's related to the tender transaction. This value is null if the order has been deleted. + /// + public Order? order { get; set; } + /// + ///Information about the payment method used for the transaction. + /// + public string? paymentMethod { get; set; } + /// + ///Date and time when the transaction was processed. + /// + public DateTime? processedAt { get; set; } + /// + ///The remote gateway reference associated with the tender transaction. + /// + public string? remoteReference { get; set; } + /// + ///Whether the transaction is a test transaction. + /// + public bool? test { get; set; } + /// + ///Information about the payment instrument used for the transaction. + /// + public ITenderTransactionDetails? transactionDetails { get; set; } + /// + ///The staff member who performed the transaction. + /// + public StaffMember? user { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple TenderTransactions. + /// + public class TenderTransactionConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in TenderTransactionEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Information about the credit card used for this transaction. + /// + public class TenderTransactionCreditCardDetails : GraphQLObject, ITenderTransactionDetails + { + /// + ///The name of the company that issued the customer's credit card. Example: `Visa`. + /// + public string? creditCardCompany { get; set; } + /// + ///The customer's credit card number, with all digits except the last 4 redacted. Example: `•••• •••• •••• 1234` + /// + public string? creditCardNumber { get; set; } + } + + /// + ///Information about the payment instrument used for this transaction. + /// + [JsonPolymorphic(TypeDiscriminatorPropertyName = "__typename")] + [JsonDerivedType(typeof(TenderTransactionCreditCardDetails), typeDiscriminator: "TenderTransactionCreditCardDetails")] + public interface ITenderTransactionDetails : IGraphQLObject + { + public TenderTransactionCreditCardDetails? AsTenderTransactionCreditCardDetails() => this as TenderTransactionCreditCardDetails; + /// + ///The name of the company that issued the customer's credit card. Example: `Visa`. + /// + public string? creditCardCompany { get; set; } + /// + ///The customer's credit card number, with all digits except the last 4 redacted. Example: `•••• •••• •••• 1234` + /// + public string? creditCardNumber { get; set; } + } + + /// + ///An auto-generated type which holds one TenderTransaction and a cursor during pagination. + /// + public class TenderTransactionEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of TenderTransactionEdge. + /// + public TenderTransaction? node { get; set; } + } + + /// + ///Return type for `themeCreate` mutation. + /// + public class ThemeCreatePayload : GraphQLObject + { + /// + ///The theme that was created. + /// + public OnlineStoreTheme? theme { 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 `ThemeCreate`. + /// + public class ThemeCreateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ThemeCreateUserError`. + /// + public enum ThemeCreateUserErrorCode + { + /// + ///Must be a zip file. + /// + INVALID_ZIP, + /// + ///Zip is empty. + /// + ZIP_IS_EMPTY, + /// + ///May not be used to fetch a file bigger + /// than 50MB. + /// + ZIP_TOO_LARGE, + } + + /// + ///Return type for `themeDelete` mutation. + /// + public class ThemeDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted theme. + /// + public string? deletedThemeId { 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 `ThemeDelete`. + /// + public class ThemeDeleteUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ThemeDeleteUserError`. + /// + public enum ThemeDeleteUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + } + + /// + ///Return type for `themeFilesCopy` mutation. + /// + public class ThemeFilesCopyPayload : GraphQLObject + { + /// + ///The resulting theme files. + /// + public IEnumerable? copiedThemeFiles { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `themeFilesDelete` mutation. + /// + public class ThemeFilesDeletePayload : GraphQLObject + { + /// + ///The resulting theme files. + /// + public IEnumerable? deletedThemeFiles { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `themeFilesUpsert` mutation. + /// + public class ThemeFilesUpsertPayload : GraphQLObject + { + /// + ///The theme files write job triggered by the mutation. + /// + public Job? job { get; set; } + /// + ///The resulting theme files. + /// + public IEnumerable? upsertedThemeFiles { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `themePublish` mutation. + /// + public class ThemePublishPayload : GraphQLObject + { + /// + ///The theme that was published. + /// + public OnlineStoreTheme? theme { 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 `ThemePublish`. + /// + public class ThemePublishUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ThemePublishUserError`. + /// + public enum ThemePublishUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///Theme publishing is not available during install. + /// + CANNOT_PUBLISH_THEME_DURING_INSTALL, + /// + ///Theme publishing is not allowed on this plan. + /// + THEME_PUBLISH_NOT_AVAILABLE_FOR_THEME_LIMITED_PLAN, + } + + /// + ///The role of the theme. + /// + public enum ThemeRole + { + /// + ///The main theme role. + /// + MAIN, + /// + ///The mobile theme role. + /// + MOBILE, + /// + ///The unpublished theme role. + /// + UNPUBLISHED, + /// + ///The demo theme role. + /// + DEMO, + /// + ///The development theme role. + /// + DEVELOPMENT, + /// + ///The archived theme role. + /// + ARCHIVED, + /// + ///The locked theme role. + /// + LOCKED, + } + + /// + ///Return type for `themeUpdate` mutation. + /// + public class ThemeUpdatePayload : GraphQLObject + { + /// + ///The theme that was updated. + /// + public OnlineStoreTheme? theme { 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 `ThemeUpdate`. + /// + public class ThemeUpdateUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ThemeUpdateUserError`. + /// + public enum ThemeUpdateUserErrorCode + { + /// + ///The record with the ID used as the input value couldn't be found. + /// + NOT_FOUND, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is invalid. + /// + INVALID, + } + + /// + ///A sale associated with a tip. + /// + public class TipSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line item for the associated sale. + /// + public LineItem? lineItem { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///Transaction fee related to an order transaction. + /// + public class TransactionFee : GraphQLObject, INode + { + /// + ///Amount of the fee. + /// + public MoneyV2? amount { get; set; } + /// + ///Flat rate charge for a transaction. + /// + public MoneyV2? flatFee { get; set; } + /// + ///Name of the credit card flat fee. + /// + public string? flatFeeName { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///Percentage charge. + /// + public decimal? rate { get; set; } + /// + ///Name of the credit card rate. + /// + public string? rateName { get; set; } + /// + ///Tax amount charged on the fee. + /// + public MoneyV2? taxAmount { get; set; } + /// + ///Name of the type of fee. + /// + public string? type { get; set; } + } + + /// + ///The set of valid sort keys for the Transaction query. + /// + public enum TransactionSortKeys + { + /// + ///Sort by the `created_at` value. + /// + CREATED_AT, + /// + ///Sort by the `expires_at` value. + /// + EXPIRES_AT, + } + + /// + ///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 string? 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. + /// + public class TranslatableContent : GraphQLObject + { + /// + ///Hash digest representation of the content value. + /// + public string? digest { get; set; } + /// + ///The resource field that's being translated. + /// + public string? key { get; set; } + /// + ///Locale of the content. + /// + public string? locale { get; set; } + /// + ///Type of the translatable content. + /// + public string? type { get; set; } + /// + ///Content value. + /// + public string? value { get; set; } + } + + /// + ///A resource that has translatable fields. + /// + public class TranslatableResource : GraphQLObject + { + /// + ///Nested translatable resources under the current resource. + /// + public TranslatableResourceConnection? nestedTranslatableResources { get; set; } + /// + ///GID of the resource. + /// + public string? resourceId { get; set; } + /// + ///Translatable content. + /// + public IEnumerable? translatableContent { get; set; } + /// + ///Translatable content translations (includes unpublished locales). + /// + public IEnumerable? translations { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple TranslatableResources. + /// + public class TranslatableResourceConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in TranslatableResourceEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///An auto-generated type which holds one TranslatableResource and a cursor during pagination. + /// + public class TranslatableResourceEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of TranslatableResourceEdge. + /// + public TranslatableResource? node { get; set; } + } + + /// + ///Specifies the type of resources that are translatable. + /// + public enum TranslatableResourceType + { + /// + ///A blog post. Translatable fields: `title`, `body_html`, `summary_html`, `handle`, `meta_title`, `meta_description`. + /// + ARTICLE, + /// + ///A blog. Translatable fields: `title`, `handle`, `meta_title`, `meta_description`. + /// + BLOG, + /// + ///A product collection. Translatable fields: `title`, `body_html`, `handle`, `meta_title`, `meta_description`. + /// + COLLECTION, + /// + ///The delivery method definition. For example, "Standard", or "Expedited". Translatable fields: `name`. + /// + DELIVERY_METHOD_DEFINITION, + /// + ///An email template. Translatable fields: `title`, `body_html`. + /// + EMAIL_TEMPLATE, + /// + ///A filter. Translatable fields: `label`. + /// + FILTER, + /// + ///A link to direct users. Translatable fields: `title`. + /// + LINK, + /// + ///A category of links. Translatable fields: `title`. + /// + MENU, + /// + ///A Metafield. Translatable fields: `value`. + /// + METAFIELD, + /// + ///A Metaobject. Translatable fields are determined by the Metaobject type. + /// + METAOBJECT, + /// + ///An online store theme. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME, + /// + ///A theme app embed. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_APP_EMBED, + /// + ///A theme json template. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_JSON_TEMPLATE, + /// + ///Locale file content of an online store theme. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_LOCALE_CONTENT, + /// + ///A theme json section group. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_SECTION_GROUP, + /// + ///A theme setting category. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_SETTINGS_CATEGORY, + /// + ///Shared static sections of an online store theme. Translatable fields: `dynamic keys based on theme data`. + /// + ONLINE_STORE_THEME_SETTINGS_DATA_SECTIONS, + /// + ///A packing slip template. Translatable fields: `body`. + /// + PACKING_SLIP_TEMPLATE, + /// + ///A page. Translatable fields: `title`, `body_html`, `handle`, `meta_title`, `meta_description`. + /// + PAGE, + /// + ///A payment gateway. Translatable fields: `name`, `message`, `before_payment_instructions`. + /// + PAYMENT_GATEWAY, + /// + ///An online store product. Translatable fields: `title`, `body_html`, `handle`, `product_type`, `meta_title`, `meta_description`. + /// + PRODUCT, + /// + ///An online store custom product property name. For example, "Size", "Color", or "Material". + /// Translatable fields: `name`. + /// + PRODUCT_OPTION, + /// + ///The product option value names. For example, "Red", "Blue", and "Green" for a "Color" option. Translatable fields: `name`. + /// + PRODUCT_OPTION_VALUE, + /// + ///A selling plan. Translatable fields:`name`, `option1`, `option2`, `option3`, `description`. + /// + SELLING_PLAN, + /// + ///A selling plan group. Translatable fields: `name`, `option1`, `option2`, `option3`. + /// + SELLING_PLAN_GROUP, + /// + ///A shop. Translatable fields: `meta_title`, `meta_description`. + /// + SHOP, + /// + ///A shop policy. Translatable fields: `body`. + /// + SHOP_POLICY, + } + + /// + ///Translation of a field of a resource. + /// + public class Translation : GraphQLObject + { + /// + ///On the resource that this translation belongs to, the reference to the value being translated. + /// + public string? key { get; set; } + /// + ///ISO code of the translation locale. + /// + public string? locale { get; set; } + /// + ///The market that the translation is specific to. Null value means the translation is available in all markets. + /// + public Market? market { get; set; } + /// + ///Whether the original content has changed since this translation was updated. + /// + public bool? outdated { get; set; } + /// + ///The date and time when the translation was updated. + /// + public DateTime? updatedAt { get; set; } + /// + ///Translation value. + /// + public string? value { get; set; } + } + + /// + ///Possible error codes that can be returned by `TranslationUserError`. + /// + public enum TranslationErrorCode + { + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is invalid. + /// + INVALID, + /// + ///Resource does not exist. + /// + RESOURCE_NOT_FOUND, + /// + ///Resource is not translatable. + /// + RESOURCE_NOT_TRANSLATABLE, + /// + ///Too many translation keys for the resource. + /// + TOO_MANY_KEYS_FOR_RESOURCE, + /// + ///Translation key is invalid. + /// + INVALID_KEY_FOR_MODEL, + /// + ///Translation value is invalid. + /// + FAILS_RESOURCE_VALIDATION, + /// + ///Translatable content is invalid. + /// + INVALID_TRANSLATABLE_CONTENT, + /// + ///Market localizable content is invalid. + /// + INVALID_MARKET_LOCALIZABLE_CONTENT, + /// + ///Locale is invalid for the shop. + /// + INVALID_LOCALE_FOR_SHOP, + /// + ///Locale language code is invalid. + /// + INVALID_CODE, + /// + ///Locale code format is invalid. + /// + INVALID_FORMAT, + /// + ///The shop isn't allowed to operate on market custom content. + /// + MARKET_CUSTOM_CONTENT_NOT_ALLOWED, + /// + ///The market corresponding to the `marketId` argument doesn't exist. + /// + MARKET_DOES_NOT_EXIST, + /// + ///The market override locale creation failed. + /// + MARKET_LOCALE_CREATION_FAILED, + /// + ///The specified resource can't be customized for a market. + /// + RESOURCE_NOT_MARKET_CUSTOMIZABLE, + /// + ///The locale is missing on the market corresponding to the `marketId` argument. + /// + [Obsolete("`invalid_locale_for_market` is deprecated because the creation of a locale that's specific to a market no longer needs to be tied to that market's URL.")] + INVALID_LOCALE_FOR_MARKET, + /// + ///The handle is already taken for this resource. + /// + INVALID_VALUE_FOR_HANDLE_TRANSLATION, + } + + /// + ///Represents an error that happens during the execution of a translation mutation. + /// + public class TranslationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Return type for `translationsRegister` mutation. + /// + public class TranslationsRegisterPayload : GraphQLObject + { + /// + ///The translations that were created or updated. + /// + public IEnumerable? translations { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `translationsRemove` mutation. + /// + public class TranslationsRemovePayload : GraphQLObject + { + /// + ///The translations that were deleted. + /// + public IEnumerable? translations { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents a typed custom attribute. + /// + public class TypedAttribute : GraphQLObject + { + /// + ///Key or name of the attribute. + /// + public string? key { get; set; } + /// + ///Value of the attribute. + /// + public string? value { get; set; } + } + + /// + ///Represents a set of UTM parameters. + /// + public class UTMParameters : GraphQLObject + { + /// + ///The name of a marketing campaign. + /// + public string? campaign { get; set; } + /// + ///Identifies specific content in a marketing campaign. Used to differentiate between similar content or links in a marketing campaign to determine which is the most effective. + /// + public string? content { get; set; } + /// + ///The medium of a marketing campaign, such as a banner or email newsletter. + /// + public string? medium { get; set; } + /// + ///The source of traffic to the merchant's store, such as Google or an email newsletter. + /// + public string? source { get; set; } + /// + ///Paid search terms used by a marketing campaign. + /// + public string? term { get; set; } + } + + /// + ///The measurement used to calculate a unit price for a product variant (e.g. $9.99 / 100ml). + /// + public class UnitPriceMeasurement : GraphQLObject + { + /// + ///The type of unit of measurement for the unit price measurement. + /// + public string? measuredType { get; set; } + /// + ///The quantity unit for the unit price measurement. + /// + public string? quantityUnit { get; set; } + /// + ///The quantity value for the unit price measurement. + /// + public decimal? quantityValue { get; set; } + /// + ///The reference unit for the unit price measurement. + /// + public string? referenceUnit { get; set; } + /// + ///The reference value for the unit price measurement. + /// + public int? referenceValue { get; set; } + } + + /// + ///The accepted types of unit of measurement. + /// + public enum UnitPriceMeasurementMeasuredType + { + /// + ///Unit of measurements representing volumes. + /// + VOLUME, + /// + ///Unit of measurements representing weights. + /// + WEIGHT, + /// + ///Unit of measurements representing lengths. + /// + LENGTH, + /// + ///Unit of measurements representing areas. + /// + AREA, + } + + /// + ///The valid units of measurement for a unit price measurement. + /// + public enum UnitPriceMeasurementMeasuredUnit + { + /// + ///1000 milliliters equals 1 liter. + /// + ML, + /// + ///100 centiliters equals 1 liter. + /// + CL, + /// + ///Metric system unit of volume. + /// + L, + /// + ///1 cubic meter equals 1000 liters. + /// + M3, + /// + ///1000 milligrams equals 1 gram. + /// + MG, + /// + ///Metric system unit of weight. + /// + G, + /// + ///1 kilogram equals 1000 grams. + /// + KG, + /// + ///1000 millimeters equals 1 meter. + /// + MM, + /// + ///100 centimeters equals 1 meter. + /// + CM, + /// + ///Metric system unit of length. + /// + M, + /// + ///Metric system unit of area. + /// + M2, + } + + /// + ///Systems of weights and measures. + /// + public enum UnitSystem + { + /// + ///Imperial system of weights and measures. + /// + IMPERIAL_SYSTEM, + /// + ///Metric system of weights and measures. + /// + METRIC_SYSTEM, + } + + /// + ///This is represents new sale types that have been added in future API versions. You may update to a more recent API version to receive additional details about this sale. + /// + public class UnknownSale : GraphQLObject, ISale + { + /// + ///The type of order action that the sale represents. + /// + public string? actionType { get; set; } + /// + ///The unique ID for the sale. + /// + public string? id { get; set; } + /// + ///The line type assocated with the sale. + /// + public string? 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; } + } + + /// + ///An unverified return line item. + /// + public class UnverifiedReturnLineItem : GraphQLObject, INode, IReturnLineItemType + { + /// + ///A note from the customer that describes the item to be returned. Maximum length: 300 characters. + /// + public string? customerNote { get; set; } + /// + ///A globally-unique ID. + /// + public string? id { get; set; } + /// + ///The quantity being returned. + /// + public int? quantity { get; set; } + /// + ///The quantity that can be refunded. + /// + public int? refundableQuantity { get; set; } + /// + ///The quantity that was refunded. + /// + public int? refundedQuantity { get; set; } + /// + ///The reason for returning the item. + /// + public string? returnReason { get; set; } + /// + ///Additional information about the reason for the return. Maximum length: 255 characters. + /// + public string? returnReasonNote { get; set; } + /// + ///The unit price of the unverified return line item. + /// + public MoneyV2? unitPrice { get; set; } + } + + /// + ///The URL redirect for the online store. + /// + public class UrlRedirect : GraphQLObject, INode + { + /// + ///The ID of the URL redirect. + /// + public string? id { get; set; } + /// + ///The old path to be redirected from. When the user visits this path, they will be redirected to the target location. + /// + public string? path { get; set; } + /// + ///The target location where the user will be redirected to. + /// + public string? target { get; set; } + } + + /// + ///Return type for `urlRedirectBulkDeleteAll` mutation. + /// + public class UrlRedirectBulkDeleteAllPayload : GraphQLObject + { + /// + ///The asynchronous job removing the redirects. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `urlRedirectBulkDeleteByIds` mutation. + /// + public class UrlRedirectBulkDeleteByIdsPayload : GraphQLObject + { + /// + ///The asynchronous job removing the redirects. + /// + public Job? job { 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 `UrlRedirectBulkDeleteByIds`. + /// + public class UrlRedirectBulkDeleteByIdsUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `UrlRedirectBulkDeleteByIdsUserError`. + /// + public enum UrlRedirectBulkDeleteByIdsUserErrorCode + { + /// + ///You must pass one or more [`URLRedirect`]( + /// https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect + /// ) object IDs. + /// + IDS_EMPTY, + } + + /// + ///Return type for `urlRedirectBulkDeleteBySavedSearch` mutation. + /// + public class UrlRedirectBulkDeleteBySavedSearchPayload : GraphQLObject + { + /// + ///The asynchronous job removing the redirects. + /// + public Job? job { 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 `UrlRedirectBulkDeleteBySavedSearch`. + /// + public class UrlRedirectBulkDeleteBySavedSearchUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `UrlRedirectBulkDeleteBySavedSearchUserError`. + /// + public enum UrlRedirectBulkDeleteBySavedSearchUserErrorCode + { + /// + ///Saved search not found. + /// + SAVED_SEARCH_NOT_FOUND, + /// + ///The saved search's query cannot match all entries or be empty. + /// + INVALID_SAVED_SEARCH_QUERY, + } + + /// + ///Return type for `urlRedirectBulkDeleteBySearch` mutation. + /// + public class UrlRedirectBulkDeleteBySearchPayload : GraphQLObject + { + /// + ///The asynchronous job removing the redirects. + /// + public Job? job { 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 `UrlRedirectBulkDeleteBySearch`. + /// + public class UrlRedirectBulkDeleteBySearchUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `UrlRedirectBulkDeleteBySearchUserError`. + /// + public enum UrlRedirectBulkDeleteBySearchUserErrorCode + { + /// + ///Invalid search string. + /// + INVALID_SEARCH_ARGUMENT, + } + + /// + ///An auto-generated type for paginating through multiple UrlRedirects. + /// + public class UrlRedirectConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in UrlRedirectEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `urlRedirectCreate` mutation. + /// + public class UrlRedirectCreatePayload : GraphQLObject + { + /// + ///The created redirect. + /// + public UrlRedirect? urlRedirect { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Return type for `urlRedirectDelete` mutation. + /// + public class UrlRedirectDeletePayload : GraphQLObject + { + /// + ///The ID of the deleted redirect. + /// + public string? deletedUrlRedirectId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one UrlRedirect and a cursor during pagination. + /// + public class UrlRedirectEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of UrlRedirectEdge. + /// + public UrlRedirect? node { get; set; } + } + + /// + ///Possible error codes that can be returned by `UrlRedirectUserError`. + /// + public enum UrlRedirectErrorCode + { + /// + ///Redirect does not exist. + /// + DOES_NOT_EXIST, + /// + ///Redirect could not be created. + /// + CREATE_FAILED, + /// + ///Redirect could not be updated. + /// + UPDATE_FAILED, + /// + ///Redirect could not be deleted. + /// + DELETE_FAILED, + } + + /// + ///A request to import a [`URLRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object + ///into the Online Store channel. Apps can use this to query the state of an `UrlRedirectImport` request. + /// + ///For more information, see [`url-redirect`](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect)s. + /// + public class UrlRedirectImport : GraphQLObject, INode + { + /// + ///The number of rows in the file. + /// + public int? count { get; set; } + /// + ///The number of redirects created from the import. + /// + public int? createdCount { get; set; } + /// + ///The number of redirects that failed to be imported. + /// + public int? failedCount { get; set; } + /// + ///Whether the import is finished. + /// + public bool? finished { get; set; } + /// + ///The date and time when the import finished. + /// + public DateTime? finishedAt { get; set; } + /// + ///The ID of the `UrlRedirectImport` object. + /// + public string? id { get; set; } + /// + ///A list of up to three previews of the URL redirects to be imported. + /// + public IEnumerable? previewRedirects { get; set; } + /// + ///The number of redirects updated during the import. + /// + public int? updatedCount { get; set; } + } + + /// + ///Return type for `urlRedirectImportCreate` mutation. + /// + public class UrlRedirectImportCreatePayload : GraphQLObject + { + /// + ///The created `URLRedirectImport` object. + /// + public UrlRedirectImport? urlRedirectImport { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Possible error codes that can be returned by `UrlRedirectImportUserError`. + /// + public enum UrlRedirectImportErrorCode + { + /// + ///CSV file does not exist at given URL. + /// + [Obsolete("This error code is never returned")] + FILE_DOES_NOT_EXIST, + /// + ///URL redirect import not found. + /// + NOT_FOUND, + /// + ///The import has already completed. + /// + ALREADY_IMPORTED, + /// + ///The import is already in progress. + /// + IN_PROGRESS, + } + + /// + ///A preview of a URL redirect import row. + /// + public class UrlRedirectImportPreview : GraphQLObject + { + /// + ///The old path to be redirected from. When the user visits this path, they will be redirected to the target location. + /// + public string? path { get; set; } + /// + ///The target location where the user will be redirected to. + /// + public string? target { get; set; } + } + + /// + ///Return type for `urlRedirectImportSubmit` mutation. + /// + public class UrlRedirectImportSubmitPayload : GraphQLObject + { + /// + ///The asynchronous job importing the redirects. + /// + public Job? job { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error that happens during execution of a redirect import mutation. + /// + public class UrlRedirectImportUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///The set of valid sort keys for the UrlRedirect query. + /// + public enum UrlRedirectSortKeys + { + /// + ///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, + /// + ///Sort by the `path` value. + /// + PATH, + /// + ///Sort by the `id` value. + /// + ID, + } + + /// + ///Return type for `urlRedirectUpdate` mutation. + /// + public class UrlRedirectUpdatePayload : GraphQLObject + { + /// + ///Returns the updated URL redirect. + /// + public UrlRedirect? urlRedirect { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///Represents an error that happens during execution of a redirect mutation. + /// + public class UrlRedirectUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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; } + } + + /// + ///Represents an error in the input of a mutation. + /// + public class UserError : GraphQLObject, IDisplayableError + { + /// + ///The path to the input field that caused the error. + /// + public IEnumerable? field { get; set; } + /// + ///The error message. + /// + public string? message { get; set; } + } + + /// + ///A checkout server side validation installed on the shop. + /// + public class Validation : GraphQLObject, IHasMetafieldDefinitions, IHasMetafields, INode + { + /// + ///Whether the validation should block on failures other than expected violations. + /// + public bool? blockOnFailure { get; set; } + /// + ///Whether the validation is enabled on the merchant checkout. + /// + public bool? enabled { get; set; } + /// + ///The error history on the most recent version of the validation function. + /// + public FunctionsErrorHistory? errorHistory { get; set; } + /// + ///Global ID for the validation. + /// + public string? id { get; set; } + /// + ///A [custom field](https://shopify.dev/docs/apps/build/custom-data), + ///including its `namespace` and `key`, that's associated with a Shopify resource + ///for the purposes of adding and storing additional information. + /// + public Metafield? metafield { get; set; } + + /// + ///List of metafield definitions. + /// + [Obsolete("This field will be removed in a future version. Use the root `metafieldDefinitions` field instead.")] + public MetafieldDefinitionConnection? metafieldDefinitions { get; set; } + /// + ///A list of [custom fields](https://shopify.dev/docs/apps/build/custom-data) + ///that a merchant associates with a Shopify resource. + /// + public MetafieldConnection? metafields { get; set; } + + /// + ///Returns a private metafield by namespace and key that belongs to the resource. + /// + [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 PrivateMetafield? privateMetafield { get; set; } + + /// + ///List of private metafields that belong to the resource. + /// + [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 Shopify Function implementing the validation. + /// + public ShopifyFunction? shopifyFunction { get; set; } + /// + ///The merchant-facing validation name. + /// + public string? title { get; set; } + } + + /// + ///An auto-generated type for paginating through multiple Validations. + /// + public class ValidationConnection : GraphQLObject, IConnectionWithNodesAndEdges + { + /// + ///The connection between the node and its parent. Each edge contains a minimum of the edge's cursor and the node. + /// + public IEnumerable? edges { get; set; } + /// + ///A list of nodes that are contained in ValidationEdge. You can fetch data about an individual node, or you can follow the edges to fetch data about a collection of related nodes. At each node, you specify the fields that you want to retrieve. + /// + public IEnumerable? nodes { get; set; } + /// + ///An object that’s used to retrieve [cursor information](https://shopify.dev/api/usage/pagination-graphql) about the current page. + /// + public PageInfo? pageInfo { get; set; } + } + + /// + ///Return type for `validationCreate` mutation. + /// + public class ValidationCreatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The created validation. + /// + public Validation? validation { get; set; } + } + + /// + ///Return type for `validationDelete` mutation. + /// + public class ValidationDeletePayload : GraphQLObject + { + /// + ///Returns the deleted validation ID. + /// + public string? deletedId { get; set; } + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + } + + /// + ///An auto-generated type which holds one Validation and a cursor during pagination. + /// + public class ValidationEdge : GraphQLObject, IEdge + { + /// + ///The position of each node in an array, used in [pagination](https://shopify.dev/api/usage/pagination-graphql). + /// + public string? cursor { get; set; } + /// + ///The item at the end of ValidationEdge. + /// + public Validation? node { get; set; } + } + + /// + ///The set of valid sort keys for the Validation query. + /// + public enum ValidationSortKeys + { + /// + ///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, + } + + /// + ///Return type for `validationUpdate` mutation. + /// + public class ValidationUpdatePayload : GraphQLObject + { + /// + ///The list of errors that occurred from executing the mutation. + /// + public IEnumerable? userErrors { get; set; } + /// + ///The updated validation. + /// + public Validation? validation { get; set; } + } + + /// + ///An error that occurs during the execution of a validation mutation. + /// + public class ValidationUserError : GraphQLObject, IDisplayableError + { + /// + ///The error code. + /// + public string? 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 `ValidationUserError`. + /// + public enum ValidationUserErrorCode + { + /// + ///Validation not found. + /// + NOT_FOUND, + /// + ///Function not found. + /// + FUNCTION_NOT_FOUND, + /// + ///Shop must be on a Shopify Plus plan to activate functions from a custom app. + /// + CUSTOM_APP_FUNCTION_NOT_ELIGIBLE, + /// + ///Function does not implement the required interface for this cart & checkout validation. + /// + FUNCTION_DOES_NOT_IMPLEMENT, + /// + ///Only unlisted apps can be used for this cart & checkout validation. + /// + PUBLIC_APP_NOT_ALLOWED, + /// + ///Function is pending deletion. + /// + FUNCTION_PENDING_DELETION, + /// + ///Cannot have more than 5 active validation functions. + /// + MAX_VALIDATIONS_ACTIVATED, + /// + ///The type is invalid. + /// + INVALID_TYPE, + /// + ///The value is invalid for the metafield type or for the definition options. + /// + INVALID_VALUE, + /// + ///ApiPermission metafields can only be created or updated by the app owner. + /// + APP_NOT_AUTHORIZED, + /// + ///Unstructured reserved namespace. + /// + UNSTRUCTURED_RESERVED_NAMESPACE, + /// + ///Owner type can't be used in this mutation. + /// + DISALLOWED_OWNER_TYPE, + /// + ///The input value isn't included in the list. + /// + INCLUSION, + /// + ///The input value is already taken. + /// + TAKEN, + /// + ///The input value needs to be blank. + /// + PRESENT, + /// + ///The input value is blank. + /// + BLANK, + /// + ///The input value is too long. + /// + TOO_LONG, + /// + ///The input value is too short. + /// + TOO_SHORT, + /// + ///The metafield violates a capability restriction. + /// + CAPABILITY_VIOLATION, + /// + ///An internal error occurred. + /// + INTERNAL_ERROR, + } + + /// + ///Represents a credit card payment instrument. + /// + public class VaultCreditCard : GraphQLObject, IPaymentInstrument + { + /// + ///The billing address of the card. + /// + public CustomerCreditCardBillingAddress? billingAddress { get; set; } + /// + ///The brand for the card. + /// + public string? brand { get; set; } + /// + ///Whether the card has been expired. + /// + public bool? expired { get; set; } + /// + ///The expiry month of the card. + /// + public int? expiryMonth { get; set; } + /// + ///The expiry year of the card. + /// + public int? expiryYear { get; set; } + /// + ///The last four digits for the card. + /// + public string? lastDigits { get; set; } + /// + ///The name of the card holder. + /// + public string? name { get; set; } + } + + /// + ///Represents a paypal billing agreement payment instrument. + /// + public class VaultPaypalBillingAgreement : GraphQLObject, IPaymentInstrument + { + /// + ///Whether the paypal billing agreement is inactive. + /// + public bool? inactive { get; set; } + /// + ///The paypal account name. + /// + public string? name { get; set; } + /// + ///The paypal account email address. + /// + public string? paypalAccountEmail { get; set; } + } + + /// + ///Representation of 3d vectors and points. It can represent + ///either the coordinates of a point in space, a direction, or + ///size. Presented as an object with three floating-point values. + /// + public class Vector3 : GraphQLObject + { + /// + ///The x coordinate of Vector3. + /// + public decimal? x { get; set; } + /// + ///The y coordinate of Vector3. + /// + public decimal? y { get; set; } + /// + ///The z coordinate of Vector3. + /// + public decimal? z { get; set; } + } + + /// + ///Represents a Shopify hosted video. + /// + public class Video : GraphQLObject